Google apps script 我可以通过自动电子邮件从谷歌表单/谷歌工作表发送多个上传的附件吗?
我正在尝试创建一个链接到谷歌工作表的谷歌表单,使用一些谷歌应用程序脚本,从调查中获取一些答案,附加一个上传的文件,并向特定的人发送电子邮件。我已经能够找出我在谷歌工作表中收集数据并发送电子邮件的部分,但是我把上传的文件作为附件放在电子邮件中的部分让我感到困惑 目前,我发送电子邮件的代码如下所示:Google apps script 我可以通过自动电子邮件从谷歌表单/谷歌工作表发送多个上传的附件吗?,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,我正在尝试创建一个链接到谷歌工作表的谷歌表单,使用一些谷歌应用程序脚本,从调查中获取一些答案,附加一个上传的文件,并向特定的人发送电子邮件。我已经能够找出我在谷歌工作表中收集数据并发送电子邮件的部分,但是我把上传的文件作为附件放在电子邮件中的部分让我感到困惑 目前,我发送电子邮件的代码如下所示: GmailApp.sendEmail(Recipient,subject,'',{htmlBody: htmlText},); 但现在看来,我想在选项部分添加更多内容,对吗?因此,如果我要为此定义一个
GmailApp.sendEmail(Recipient,subject,'',{htmlBody: htmlText},);
但现在看来,我想在选项部分添加更多内容,对吗?因此,如果我要为此定义一个变量,我需要使用getFileById,但是每次上传时文件ID都会不同。此外,我可能需要附加多个文件
我已经创建了一个测试并将其附加到。你可以看到。您可以通过查看以下内容来检查正在发送/接收的电子邮件:formtesting4@mailinator.com如守则所指明
我正在尝试做的事情是否可能做到这一点?您可以参考以下示例脚本:
所做的更改:
- 使用获取所有上载附件的blob文件。您可以从附件的url链接获取文件id并使用
- 在
GmailApp.sendmail()中包含
,以解决电子邮件内容问题body
- 将
作为选项包含在附件
您好,我注意到您正在尝试创建一个html表。你打算做什么样的附件?是否在html正文的附件块下包含上载的文件链接?或者将文件附加到电子邮件本身而不是html正文中(使用附件选项)?html表格位于电子邮件正文中。我可以通过引用适当的单元格包含上传文件的链接,但我想将文件附加到电子邮件本身。我应该说得更清楚些,但我想构建一些功能,以便在必要时可以处理多个文件。因此,除非有人不上传附件,否则它看起来是可行的。我可能应该澄清一下,但并不总是要求将附件上传到谷歌表单。我假设将它封装在某种形式的IF语句中,作为附件变量就足够了?是的,只要一个IF条件就足够了。我更新了答案。请让我知道是否还有一些不完善的问题。这涵盖了一切。非常感谢你一直支持我。我将阅读一些关于这些类和方法的文档,以了解更多关于它们的信息。我唯一添加的是一个额外的
else{attachment=“No attachment submitted”}
来解释一个空提交。
function emailMe() {
const ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const info = ss.getDataRange().getValues();
info.forEach((entry,a) => {
// Identify whether notification has been sent
if (entry[4] === '') {
// Collect entries
var Recipient = "your@email.com"
var subject = 'Roster Scheduler Update';
Timestamp = entry[0];
Name = entry[1];
Roster = entry[2];
attachment = "TEST";
var attachmentBlobs = [];
//Get the blob of all attachments available
if(entry[3]){
var attachments = entry[3].split(', ');
attachments.forEach(url => {
var fileId = url.replace('https://drive.google.com/open?id=','');
Logger.log(fileId);
var file = DriveApp.getFileById(fileId);
attachmentBlobs.push(file.getBlob());
});
}
let body = '';
// Generate email
var html = HtmlService.createTemplateFromFile("email.html");
var htmlText = html.evaluate().getContent();
// Send email
GmailApp.sendEmail(Recipient, subject, body, {htmlBody: htmlText, attachments: attachmentBlobs});
// Email confidence
const check = 'Sent';
ss.getRange(a + 1,5).setValue(check);
}
});
}