2016-12-02 150 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}); 
}