【问题标题】:Attach two different pdfs to email在电子邮件中附加两个不同的 pdf
【发布时间】:2021-03-11 17:21:19
【问题描述】:

我通过 Google 表单收到订单。我发送一封自动电子邮件,其中包含 (a) 个性化 pdf 的订单,但我还想将 (b) pdf 添加到来自 Google Drive 文件夹的电子邮件(条款和服务,所有订单都相同)。

(A) 工作正常,但我不知道如何添加 (B)。

这是个性化的pdf:

function afterFormSubmit(e) {
  const info = e.namedValues;
  const pdfFile = createPDF(info);
  sendEmail(e.namedValues['email'][0],pdfFile);
}
function sendEmail(email,pdfFile){
  GmailApp.sendEmail(email, "Order received","Please find attached your order and terms of services", {
    attachments: [pdfFile],
    name: 'MyCompany'
  });
}
function createPDF(info) {
const pdfFolder = DriveApp.getFolderById("XXXXXXXXX");  
const tempFolder = DriveApp.getFolderById("XXXXXXXXX");  
const templateDoc = DriveApp.getFileById("XXXXXXXXX");
const newTempFile = templateDoc.makeCopy(tempFolder);
const openDoc = DocumentApp.openById(newTempFile.getId());
const body = openDoc.getBody();
body.replaceText("{fn}", info['First name'][0]);
body.replaceText("{ln}", info['Last name'][0]);
openDoc.saveAndClose();
const blobPDF = newTempFile.getAs(MimeType.PDF);
const pdfFile = pdfFolder.createFile(blobPDF).setName(info['First name'][0] + " " + info['Last name'][0]);
tempFolder.removeFile(newTempFile);
return pdfFile;
}

所以我创建了const pdfTerms = DriveApp.getFileById("XXXXXXXXX"); ,并将其添加到sendEmailsattachments: [pdfFile,pdfTerms],但它不起作用。

【问题讨论】:

    标签: google-apps-script google-drive-api


    【解决方案1】:

    解释:

    问题是您方法中的pdfTerms 不是pdf,而是file 类型的对象。

    要将file 转换为pdf,您需要这样做:

    const pdfTerms_file = DriveApp.getFileById("XXXXXXXXX"); // type of file
    const pdfTerms = pdfTerms_file.next().getAs(MimeType.PDF); // pdf
    

    始终假设存在具有此特定 ID 的文件。

    解决办法:

    修改afterFormSubmitsendEmail如下:

    function afterFormSubmit(e) {
      const info = e.namedValues;
      const pdfFile = createPDF(info);
      const pdfTerms_file = DriveApp.getFileById("XXXXXXXXX"); // type of file
      const pdfTerms = pdfTerms_file.next().getAs(MimeType.PDF); // pdf
      sendEmail(e.namedValues['email'][0],pdfFile,pdfTerms);
    }
    function sendEmail(email,pdfFile,pdfTerms){
      GmailApp.sendEmail(email, "Order received","Please find attached your order and terms of services", {
        attachments: [pdfFile,pdfTerms],
        name: 'MyCompany'
      });
    }
    

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多