希望脚本通过电子邮件返回 PDF 信件,其中包含工作表名称而不是电子表格名称

问题描述 投票:0回答:1

下面的脚本在多种情况下运行良好,但该信件以 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
}

我看过其他示例,其中指出获取工作表名称而不是电子表格,但这似乎不起作用。

我还看到了一个仅更改名称的选项“获取新名称”。这是有道理的,但我认为我没有将代码放在正确的部分中。

google-apps-script
1个回答
0
投票

关于
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 文件的文件名。

© www.soinside.com 2019 - 2024. All rights reserved.