2016-12-02 2 views
-1

に送信するには、以下のスクリプトを使用してGoogleスプレッドシートをXLSXに変換して、このスクリプトは、私が使用するいくつかのスプレッドシートのために数週間前に働いていました。しかし、他のスプレッドシートからは、「壊れた」添付ファイルが添付されたメールが届きます。現在、私はそれを再び働かせることはできません、そして、私はコードとの互換性の問題を疑う。Google-Spreadsheet Script: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コードです。しかし、スクリプトによって生成されるリンクは正しいです。手動で(生成されたリンクをブラウザにコピー/ペーストする)、それはうまく動作します。

壊れた添付ファイル:

enter image description here

答えて

1

私の代わりに、以下のスクリプトを使用していました。 GoogleドライブAPI 2(Ressources \ Advanced Googleサービス)を有効にすることを忘れないでください。

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}); 
} 
関連する問題