2016-08-20 115 views
0

我有这个脚本我用来制作一张表的副本,然后通过电子邮件将该副本作为xslx文件发送给我,如果我将表单设置为共享给任何具有链接的任何人很好,但如果我将它设置为运行特定的人员,但会给出Value#而不是页面上的数据。我试图发送的页面是一个查询导入范围公式,将数据拖到表单上。任何帮助将不胜感激。与脚本共享问题

enter code herefunction emailExcel() { 

    var mailTo, subject, body, id, sheetNum, sh, sourceSS, copySS, file, url,token, response; 


    mailTo = '[email protected]'; 
    subject = 'subject'; 
    body = 'text_in_body'; 
    id = '1eI-p0nodA4zqP3fsxP5P6iR6gyvSIGRZDMaQSGkb2ds'; 
    sheetNum = 2; 

    sourceSS = SpreadsheetApp.openById(id); 
    copySS = sourceSS.copy('copy of ' + sourceSS.getName()); 
    sh = copySS.getSheets()[sheetNum]; 
    sh.getDataRange().setValues(sh.getDataRange().getDisplayValues()) 
    copySS.getSheets() 
    .forEach(function (sh, i) { 
     if(i != sheetNum) copySS.deleteSheet(sh); 
    }) 

    file = Drive.Files.get(copySS.getId()); 
    url = file.exportLinks[MimeType.MICROSOFT_EXCEL]; 
    token = ScriptApp.getOAuthToken(); 
    response = UrlFetchApp.fetch(url, { 
    headers: { 
     'Authorization': 'Bearer ' + token 
    } 
    }); 

    MailApp.sendEmail(mailTo, subject, body, { 
    attachments: [response.getBlob() 
     .setName('TESTING.xlsx')] 
    }); 

    DriveApp.getFileById(copySS.getId()).setTrashed(true); 
    } 

回答

0

要共享驱动器文件具体的人,尝试添加在Class File给出setSharing(accessType, permissionType)方法。

正如Working with enums提到,

驱动器服务使用枚举访问权限,以确定哪些用户可以访问文件或文件夹。

所以访问文件或文件夹在DriveApp,你应该添加下列枚举类型,以确定谁可以访问文件或文件夹的用户,除了谁已经明确给出访问

这将真正有助于试图通过给定的单证去。

0

我采取了简单的方法,制作了一个新的电子表格,然后使用脚本导入到该电子表格中,所以现在新文档只包含数据并且现在正在完美工作。