与脚本共享问题

时间:2016-08-20 12:28:45

标签: google-apps-script

我使用这个脚本制作一张工作表的副本,然后通过电子邮件将该副本作为xslx文件发送给我,如果我将工作表设置为分享给任何有链接的人,那么脚本效果很好,但是如果我将它设置为运行的特定人员但是提供值#而不是页面上的数据。我要发送的页面是一个查询importrange公式,将数据拉到工作表上。任何帮助将不胜感激。

enter code herefunction emailExcel() {

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


    mailTo = 'elder1104@gmail.com';
    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);
   }

2 个答案:

答案 0 :(得分:0)

要将云端硬盘分享给特定用户,请尝试添加Class File中提供的setSharing(accessType, permissionType)方法。

Working with enums中所述,

  

云端硬盘服务使用枚举访问权限来确定哪些用户有权访问文件或文件夹。

因此,要访问DriveApp中的文件或文件夹,您应添加以下枚举类型,以确定可以访问文件或文件夹的用户,以及明确授予访问权限的任何个人用户

尝试浏览给定的文档会非常有帮助。

答案 1 :(得分:0)

我采用了简单的方法制作了一个新的电子表格,我正在使用脚本导入该电子表格,所以现在新文档上只有数据并且现在工作正常。