2016-08-20 133 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

我採取了簡單的方法,製作了一個新的電子表格,然後使用腳本導入到該電子表格中,所以現在新文檔只包含數據並且現在正在完美工作。