下面的脚本在多种情况下运行良好,但该信件以 PDF 形式返回,名为“Site Utilities”,这是整个电子表格名称。
我希望它返回选项卡/工作表名称“Park Letter”。更好的是选择一个名称或工作表中的一个单元格。
function Email3() {
var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();
var sheetName = SpreadsheetApp.getActiveSpreadsheet().getName();
//var email = Session.getUser().getEmail();
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Park Letter").getRange("F20");
var emailAddress = emailRange.getValue();
var subject = "Coffee Morning";
var body = ("Attached is a letter about the up coming Coffee Morning. \n \nMany thanks, \n \nCoast and Country Parks");
var requestData = {"method": "GET", "headers":{"Authorization":"Bearer "+ScriptApp.getOAuthToken()}};
var shID = getSheetID("Park Letter") //Get Sheet ID of sheet name "Master"
var url = "https://docs.google.com/spreadsheets/d/"+ ssID + "/export?format=pdf&id="+ssID+"&gid="+shID;
var result = UrlFetchApp.fetch(url , requestData);
var contents = result.getContent();
MailApp.sendEmail (emailAddress, subject ,body, {attachments:[{fileName:sheetName+".pdf", content:contents, mimeType:"application//pdf"}]});
};
function getSheetID(name){
var ss = SpreadsheetApp.getActive().getSheetByName(name)
var sheetID = ss.getSheetId().toString()
return sheetID
}
我看过其他示例,其中指出获取工作表名称而不是电子表格,但这似乎不起作用。
我还看到了一个仅更改名称的选项“获取新名称”。这是有道理的,但我认为我没有将代码放在正确的部分中。
I would like it to return tab/sheet name "Park Letter" instead.
当我看到您的显示脚本时,
var sheetName = SpreadsheetApp.getActiveSpreadsheet().getName();
用作MailApp.sendEmail (emailAddress, subject ,body, {attachments:[{fileName:sheetName+".pdf", content:contents, mimeType:"application//pdf"}]});
处的PDF文件的文件名。如果你想使用Park Letter
的值作为PDF文件的文件名,下面的修改如何?
顺便说一句,我认为
application//pdf
应该是application/pdf
。
MailApp.sendEmail (emailAddress, subject ,body, {attachments:[{fileName:sheetName+".pdf", content:contents, mimeType:"application//pdf"}]});
MailApp.sendEmail(emailAddress, subject, body, { attachments: [{ fileName: "Park Letter" + ".pdf", content: contents, mimeType: "application/pdf" }] });
或
MailApp.sendEmail(emailAddress, subject, body, { attachments: [result.getBlob().setName("Park Letter.pdf")] });
通过此修改,PDF 文件的文件名为
Park Letter.pdf
。
Even better would be a chosen name or a cell within the sheet.
如果你想使用单元格值中的文件名,下面的修改怎么样?在这种情况下,请将
###
替换为您的工作表名称。并且,单元格“A1”的值用作文件名。请根据您的实际情况进行修改。
MailApp.sendEmail (emailAddress, subject ,body, {attachments:[{fileName:sheetName+".pdf", content:contents, mimeType:"application//pdf"}]});
var filename = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("###").getRange("A1").getDisplayValue();
MailApp.sendEmail(emailAddress, subject, body, { attachments: [result.getBlob().setName(`${filename}.pdf`)] });
或
var filename = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("###").getRange("A1").getDisplayValue();
MailApp.sendEmail(emailAddress, subject, body, { attachments: [result.getBlob().setName(`${filename}.pdf`)] });
通过此修改,工作表“###”的“A1”单元格值将用作 PDF 文件的文件名。