我想使用 Google 电子表格中的 Google App 脚本通过 Outlook 邮件仅发送特定工作表的一个标签。
我搜索并编写了脚本,但它太旧了无法工作或出现错误。
我想要什么 在电子表格List sheet的多个tab中,sheet 33到A1:M列的数据以.xls格式保存为“values”并附在Outlook邮件中发送
我如何在 new Date() 中为今天的日期添加一天?
如果有专家可以帮助我,那将是一个很大的帮助。
谢谢。
function sendEmail(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName("Sheet33");
var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + ss.getSheetName() + "&exportFormat=xlsx";
var d = Utilities.formatDate(new Date(), "GMT+9", "yyyyMMdd");
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
},
muteHttpExceptions: true
});
var blobs = [response.getBlob().setName(ss.getSheetName() + ".xlsx")];
var receipient = "khan@abc.com"
var subject = "Date_"+ d + ss.getSheetName() +" List share."
var emailbody = "Date_"+ d + ss.getSheetName() +" List share.\nThanks."
MailApp.sendEmail(receipient, subject, emailbody, {attachments: blobs});
Browser.msgBox("Date_"+ d + ss.getSheetName() + " Send Mail Complete.", Browser.Buttons.OK);
}```
答案 0 :(得分:0)
您使用的是旧的导出网址 (https://docs.google.com/feeds/...
),我认为这不能再使用了。此外,您提供的是电子表格名称而不是 id
。
导出 URL 应该是这样的:
<块引用>var url = "https://docs.google.com/spreadsheets/d/" + 电子表格 ID + "/export?format=xlsx&gid=" + sheetId;
function sendEmail(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetId = ss.getId();
var sheet = ss.getSheetByName("Sheet33");
var range = sheet.getRange("A1:M");
var tempSheet = ss.insertSheet("My temporary Sheet");
range.copyTo(tempSheet.getRange("A1:M"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
var tempSheetId = tempSheet.getSheetId();
var url = "https://docs.google.com/spreadsheets/d/" + spreadsheetId + "/export?format=xlsx&gid=" + tempSheetId;
var tomorrow = new Date();
tomorrow.setDate(new Date().getDate() + 1);
var d = Utilities.formatDate(tomorrow, "GMT+9", "yyyyMMdd");
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
},
muteHttpExceptions: true
});
var blobs = [response.getBlob()];
var receipient = "khan@abc.com";
var spreadsheetName = ss.getName();
var subject = "Date_"+ d + spreadsheetName +" List share."
var emailbody = "Date_"+ d + spreadsheetName +" List share.\nThanks."
MailApp.sendEmail(receipient, subject, emailbody, {attachments: blobs});
ss.deleteSheet(tempSheet);
Browser.msgBox("Date_"+ d + spreadsheetName + " Send Mail Complete.", Browser.Buttons.OK);
}
Sheet33
。如果要导出特定范围,则应 (1) 将所需范围复制到新的临时工作表,(2) 导出该工作表,(3) 删除该工作表。例如,参见this answer。