2016-12-02 262 views
-1

爲備份目的,我想使用下面的腳本將谷歌電子表格轉換爲XLSX並將其發送到選擇的電子郵件地址。這個腳本幾個星期前對我使用的一些電子表格起作用了。不過,從其他電子表格中,我收到的電子郵件中含有「破損」的附件。目前,我無法再次使用它,並且我懷疑代碼存在兼容性問題。谷歌電子表格腳本:發送電子郵件與附加的XLSX版本的電子表格

有人可以幫我嗎?

function getGoogleSpreadsheetAsExcel(){ 
     try { 
     var ss = SpreadsheetApp.getActive(); 
     var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + ss.getId() + "&exportFormat=xlsx"; 
     var params = { 
      method  : "get", 
      headers  : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()}, 
      muteHttpExceptions: true 
     }; 

     var blob = UrlFetchApp.fetch(url, params).getBlob(); 
     blob.setName(ss.getName() + ".xlsx"); 
     MailApp.sendEmail("[email protected]", "Google Sheet to Excel", "The XLSX file is attached", {attachments: [blob]}); 
     } catch (f) { 
     Logger.log(f.toString()); 
     } 
    } 

「斷開」附件的樣本作爲打印屏幕附加。它仍然以XLSX形式出現,但它是HTML代碼,表示文檔不存在。腳本生成的鏈接是正確的。當手動完成(將生成的鏈接複製/粘貼到瀏覽器中)時,它工作得很好。

破碎attachement:

enter image description here

回答

1

我用下面的腳本來代替。請記住啓用Google Drive API 2(Ressources \ Advanced Google Services)

function myFunction(config) { 

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

var fileName = (spreadsheet.getName()) + '.xlsx'; 
var blobs = [response.getBlob().setName(fileName)]; 

var receipient = "xxx" 
var subject = "xxx" 
var emailbody = "xxx" 

MailApp.sendEmail(receipient, subject, emailbody, {attachments: blobs}); 
} 
相關問題