[英]Is it possible to send multiple sheets from Google Sheets as an email attachment?
[英]Send the active sheet as an email attachment from google sheets
我有一個Google表單,可以捕獲電子表格中的回復。 當前,每次做出新響應時,它都會創建一個新工作表。
我現在正在嘗試向創建新工作表的現有腳本添加“通過郵件發送活動工作表腳本”。
但是我收到一條錯誤消息:“ https://docs.google.com/spreadsheets/d/SS_ID/export請求失敗?” 圍繞以下
var result = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
我已將本文用作發送電子郵件部分的指南 。
這是我正在使用的整個腳本。
function onSubmit(e){
Logger.log('submit ran');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
//Get last row of data
var lastRow = sheet.getLastRow();
var colB_Data = sheet.getRange(lastRow, 2).getValue();
//create sheet name with order no.
ss.insertSheet(colB_Data);
//order formula
var sheets = ss.getSheets()[1];
var cell = sheets.getRange("b2");
cell.setFormula("=TRANSPOSE('Form Responses 1'!B1:AR1)");
var cell = sheets.getRange("c2");
cell.setFormula("=sheetName()");
var cell = sheets.getRange("c3");
cell.setFormula("=transpose(FILTER('Form Responses 1'!C:AR,'Form Responses 1'!B:B=C2))");
var cell = sheets.getRange("d5:d44");
cell.setFormula("=C5*vlookup(B5,'RG Cost'!B:E,4,0)");
var cell = sheets.getRange("d5:d44");
cell.setNumberFormat("[$₹][>9999999]##\,##\,##\,##0;[$₹][>99999]##\,##\,##0;[$₹]##,##0")
var cell = sheets.getRange("c47");
cell.setFormula("=sum(C5:C44)");
var cell = sheets.getRange("d47");
cell.setFormula("=sum(D5:D44)");
var cell = sheets.getRange("b47");
cell.setValue('TOTAL');
//Send active sheet as email attachment
var ssID = SpreadsheetApp.getActiveSpreadsheet();
var email = Session.getUser().getEmail();
var subject = "Order no.";
var body = "Hello";
var token = ScriptApp.getOAuthToken();
var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?" + "format=xlsx" + "&gid=" + "&portrait=true" + "&exportFormat=xlsx";
var result = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var contents = result.getContent();
MailApp.sendEmail("xyz@xyz.com",subject ,body, {attachments:[{fileName:colB_Data+".pdf", content:contents, mimeType:"application//pdf"}]});
};
就像@cooper之前提到的那樣,ssID沒有正確添加到URL中,並且需要對URL和fetchapp進行一些更改
//Send active sheet as email attachment
var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();
var sheetgId = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetId();
var email = Session.getUser().getEmail();
var subject = "Order no.";
var body = "Hello";
var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" + "&gid="+sheetgId+ "&portrait=true" + "&exportFormat=pdf";
var result = UrlFetchApp.fetch(url)
var contents = result.getContent();
MailApp.sendEmail("abc@abc.abc",subject ,body, {attachments:[{fileName:colB_Data+".pdf", content:contents, mimeType:"application//pdf"}]});
您直接將HTTP GET發送到同一驅動器,因此,我認為該用戶已登錄到google帳戶並可以訪問電子表格,因此您實際上不需要再次使用令牌。 其次,您忘記將變量添加到導出模式URL中的參數中,而我將導出格式更改為pdf。
沒有令牌就無法正常工作,因此我使用了以下方法:
var ss = SpreadsheetApp.getActiveSpreadsheet()
var ssID = ss.getId();
var sheetgId = ss.getActiveSheet().getSheetId();
var sheetName = ss.getName();
var token = ScriptApp.getOAuthToken();
var email = "name@domain.com";
var subject = "Important Info!";
var body = "PFA the report \n\nCheers,\n Roportobot";
var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" + "&gid="+sheetgId+ "&portrait=true" + "&exportFormat=pdf";
var result = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var contents = result.getContent();
MailApp.sendEmail(email,subject ,body, {attachments:[{fileName:sheetName+".pdf", content:contents, mimeType:"application//pdf"}]});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.