Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 栏「;X";有“邮件”一栏;“是”;有要发送的PDF文件的名称(存储在驱动器的文件夹“Z”中),如何发送带有PDF的每封电子邮件?_Google Apps Script - Fatal编程技术网

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
}