【问题标题】:Google Apps Script_populate multiple templates depending on google form data and then email pdf copiesGoogle Apps Script_根据 google 表单数据填充多个模板,然后通过电子邮件发送 pdf 副本
【发布时间】:2020-07-28 17:03:36
【问题描述】:

非常需要帮助。

使用 Google 表单收集数据,以填充 2 个 Google 文档模板之一,具体取决于在 Google 表单中选择了选项 1 还是 2。填充的模板以 PDF 格式保存在“最终”文件夹中,然后通过电子邮件发送到在 Google 表单中提交的电子邮件地址。

目前,我能够在正确的文件夹中生成正确的 PDF 文件并将电子邮件发送到正确的地址,但没有附件,只有 [Object object] 字样。

在我包含 if/else 函数之前,我能够正确发送带有附件的电子邮件,这意味着我对生成的 pdf 的 if/else 和命名造成了问题。我就是想不通。

function autoFillGoogleDocFromForm(e) {
  //form values
  var timestamp = e.values[0];
  var firstName = e.values[1];
  var lastName = e.values[2];
  var email = e.values[3];
  var multiplechoice = e.values[4];

  if (multiplechoice == "Template 1") {
    //This section will complete template 1
    var file = DriveApp.getFileById("Template 1 ID");

    //Create copy of Template 1
    var folder = DriveApp.getFolderById("Templates folder ID")
    var copy = file.makeCopy(lastName + ',' + firstName, folder);

    //Open copy of Template 1 and replace key fields per form data
    var doc = DocumentApp.openById(copy.getId());
    var body = doc.getBody();
    body.replaceText('{{First Name}}', firstName);
    body.replaceText('{{Last Name}}', lastName);
    doc.saveAndClose();
    Utilities.sleep(1500);
  } else {
    //This section will complete Template 2 by default
    var file = DriveApp.getFileById("Template 2 ID");

    //Create copy of Template 2
    var folder = DriveApp.getFolderById("Templates folder ID")
    var copy = file.makeCopy(lastName + ',' + firstName, folder);

    //Open copy of Template 2 and replace key fields per form data
    var doc = DocumentApp.openById(copy.getId());
    var body = doc.getBody();
    body.replaceText('{{First Name}}', firstName);
    body.replaceText('{{Last Name}}', lastName);
    doc.saveAndClose();
    Utilities.sleep(1500);
  }

  //create pdf copy of completed template either 1 or 2 depending on IF
  var pdffolder = DriveApp.getFolderById("Templates folder ID");
  var pdfFILE = DriveApp.getFileById(copy.getId()).getAs('application/pdf');
  pdfFILE.setName(copy.getName() + ".pdf");
  var theFolder = pdffolder;
  var theFile = DriveApp.createFile(pdfFILE);
  theFolder.addFile(theFile);
  Utilities.sleep(1500);

  var subject = "File attached";
  var attach = theFile;
  var pdfattach = attach.getAs(MimeType.PDF);

  MailApp.sendEmail(email, subject, {attachments: [pdfattach]});
  
  }

【问题讨论】:

标签: email if-statement pdf google-apps-script google-sheets


【解决方案1】:

MailApp有两个签名支持附件:

发送电子邮件(消息)

sendEmail(收件人、主题、正文、选项)

没有sendEmail(recipient, subject, options) 方法签名。

包含body 参数:

MailApp.sendEmail(email, subject, "☢☣☢",{attachments: [pdfattach]});

【讨论】:

    猜你喜欢
    • 2013-08-15
    • 2019-06-12
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多