Google apps script 栏「;X";有“邮件”一栏;“是”;有要发送的PDF文件的名称(存储在驱动器的文件夹“Z”中),如何发送带有PDF的每封电子邮件?
我有一个脚本,它执行以下操作: 提示输入包含电子邮件的列。Google apps script 栏「;X";有“邮件”一栏;“是”;有要发送的PDF文件的名称(存储在驱动器的文件夹“Z”中),如何发送带有PDF的每封电子邮件?,google-apps-script,Google Apps Script,我有一个脚本,它执行以下操作: 提示输入包含电子邮件的列。提示输入电子邮件主题。提示输入电子邮件正文。提示输入起始行。脚本为工作表上的每一行发送一封电子邮件 我想扩展脚本,以提示在每个电子邮件中添加带有附件的列(提示列不是问题)。这样的列将具有文件名 其想法是,给定文件名,它将在某个文件夹中搜索该文件,并将其添加为附件(这是我需要您帮助的部分) 函数emailsendersamemessagedifferentitpdf(){ var activeSs=SpreadsheetApp.getAct
提示输入电子邮件主题。
提示输入电子邮件正文。
提示输入起始行。
脚本为工作表上的每一行发送一封电子邮件 我想扩展脚本,以提示在每个电子邮件中添加带有附件的列(提示列不是问题)。这样的列将具有文件名 其想法是,给定文件名,它将在某个文件夹中搜索该文件,并将其添加为附件(这是我需要您帮助的部分)
函数emailsendersamemessagedifferentitpdf(){
var activeSs=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var activeSsLastRow=activeSs.getLastRow();
//提示输入包含电子邮件的专栏
var activeSsUi=SpreadsheetApp.getUi();
var activeSsUiEmailsColumn=activeSsUi.prompt(“电子邮件”,“输入包含电子邮件的列的编号”,activeSsUi.ButtonSet.OK\u取消);
var ActiveSSIEmailsColumnText=ActiveSSIEmailsColumn.getResponseText();
var ActiveSSIEmailsColumnButton=ActiveSSIEmailsColumn.getSelectedButton();
如果(activeSsUi.Button==activeSsUi.Button.CANCEL){
返回;
}
//提示输入电子邮件的主题
var activessuiemailssobject=activeSsUi.prompt(“电子邮件”,“输入电子邮件主题”,activeSsUi.ButtonSet.OK\u取消);
var activessuiemailssobjecttext=activessuiemailssobject.getResponseText();
var ActiveSSIEmailsObject Button=ActiveSSIEmailsObject.getSelectedButton();
如果(activeSsUi.Button==activeSsUi.Button.CANCEL){
返回;
}
//提示输入电子邮件正文
var activeSsUiEmailsBody=activeSsUi.prompt(“电子邮件”,“输入电子邮件正文”,activeSsUi.ButtonSet.OK\u取消);
var activeSSIEmailsbodyText=activeSSIEmailsbody.getResponseText();
var ActiveSSIEmailsbodyButton=ActiveSSIEmailsbody.getSelectedButton();
如果(activeSsUiEmailsBodyButton==activeSsUi.Button.CANCEL){
返回;
}
//提示输入起始行
var activeSsUiEmailsRow=activeSsUi.prompt(“电子邮件”,“输入起始行的编号”,activeSsUi.ButtonSet.OK\u取消);
var activeSSIEmailsrowtext=activeSSIEmailsrow.getResponseText();
var ActiveSSIEmailsRowButton=ActiveSSIEmailsRow.getSelectedButton();
如果(activeSsUi.Button==activeSsUi.Button.CANCEL){
返回;
}
//用电子邮件遍历所有行
对于(ActiveSSIEmailsrowtext=ActiveSSIEmailsrowtext;ActiveSSIEmailsrowtext,您可以通过使用创建邮件/草稿来完成此操作
您的代码看起来有点像这样:
var filename = "whatever you got from the column";
var file = DriveApp.getFilesByName(filename);
if (file.hasNext()) {
MailApp.sendEmail(emailAddress, subject, message, {
attachments: [file.next().getAs(MimeType.PDF)],
name: filename
}
但是,这将选择具有该名称的第一个文件。我建议您改用文件ID
希望这有帮助!似乎有很多提示。我想我会很快厌倦的。您可能想更改的一些事情是使用文件夹和文件id而不是名称,因为在Google Drive中,文件可以有相同的名称。包含服务器端可用的所有对话框。您还可以通过创建自己的对话框。您可以d带有MailApp或GmailApp查找文档的电子邮件。请检查带有附件选项的版本,如ZektorH的回答所示,如果我理解正确,这将搜索驱动器中的所有文件以查找匹配项,我如何告诉它仅搜索特定文件夹?Hello@user688003。要仅搜索驱动器上的特定文件夹,您必须然后在其中使用getFilesByName
。
var filename = "whatever you got from the column";
var file = DriveApp.getFilesByName(filename);
if (file.hasNext()) {
MailApp.sendEmail(emailAddress, subject, message, {
attachments: [file.next().getAs(MimeType.PDF)],
name: filename
}