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
    ,以解决电子邮件内容问题
  • 附件
    作为选项包含在
输出: 样本1:3个附件

样本2:1附件


您好,我注意到您正在尝试创建一个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);

    }
  });
}