通过电子邮件将Google文档作为PDF附件发送

Onerockscott

经过一段时间的努力后,我呼吁人群中的帮助。

我正在尝试将2个Google文档以PDF格式附加到电子邮件中。我看到了许多有关Google表格的示例,并且已经能够通过电子邮件成功地将表格副本以PDF格式发送,但是我无法将其移植到文档中。

在多种情况下,PDF附件要么是我原始模板Doc的副本,要么是“ One Account。All of Google”登录页面的图像捕获当我查看生成的链接(Logger.log)并使用它们时,将下载正确的文档的副本

以下是我尝试创建电子邮件附件的情况的示例。参见底部的函数emailDocAsPDF()

在此先感谢您提供有关此问题的任何指导。

function myFunctionUpdated() {

  var testTemplateId = searchDriveFile('Test Template');
  Logger.log('test template id = ' + testTemplateId);

  var fileName = 'Copy of Test Template'
  Logger.log(fileName);

  DriveApp.getFileById(testTemplateId).makeCopy(fileName);

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = ss.getRange(1, 1, 3, 2).getValues();

  var copyNewTemplateId = searchDriveFile(fileName);

  var copyTemplate = DocumentApp.openById(copyNewTemplateId);
  var copyTemplateBody = copyTemplate.getBody().editAsText();

  for (i=0; i<range.length; i++) {
      copyTemplateBody.replaceText(range[i][0], range[i][1]);
  }

  copyTemplate.saveAndClose();

  emailDocAsPDF(fileName)
}


// Searched Google Drive for a file name and returns the file ID.
function searchDriveFile(fileName) {
  var files = DriveApp.searchFiles(
     'title = "'+ fileName +'"');
  while (files.hasNext()) {
    var file = files.next();
    var id = file.getId();
    return id;
  } 
}


// Send document in an email as PDF
function emailDocAsPDF(fileName) {

  var staticDoc = 'FILE-ID';

  var attachmentDoc = UrlFetchApp.fetch("https://docs.google.com/document/d/" + copyTemplateId + "/export?format=pdf");
  Logger.log("https://docs.google.com/document/d/" + copyTemplateId + "/export?format=pdf");

  var attachmentStaticDoc = UrlFetchApp.fetch("https://docs.google.com/document/d/" + staticDoc + "/export?format=pdf");
  Logger.log("https://docs.google.com/document/d/" + staticDoc + "/export?format=pdf");

  var fileBlob = [];

  fileBlob[0] = attachmentDoc.getBlob().getAs('application/pdf');
  fileBlob[1] = attachmentStaticDoc.getBlob().getAs('application/pdf');

  var body = "Bird is the WORD!! <br>" +
    "<a href='http://www.example.com'>Visit Example</a>";

   if (MailApp.getRemainingDailyQuota() > 0) 
    GmailApp.sendEmail("[email protected]", "Test Documents Email", body, {
      htmlBody: body,
      attachments:[fileBlob[0],fileBlob[1]]     
    });

}

编辑-使用Sandwich提供的代码成功更新。

// Send document in an email as PDF
function emailDocAsPDF(fileName) {

  var staticDoc = 'FILE-ID';

  var copyTemplateId = searchDriveFile(fileName);

  var blobs = [];

  var doc = DriveApp.getFileById(copyTemplateId);
  blobs[0] = doc.getBlob().getAs('application/pdf').setName('MyAttachment1.pdf');

  var doc = DriveApp.getFileById(staticDoc);
  blobs[1] = doc.getBlob().getAs('application/pdf').setName('MyAttachment2.pdf');

  var zipBlob = Utilities.zip(blobs).setName('Documents.zip');

  var recipient = '[email protected]';
  var subject = 'Test Email';
  var body = 'Bird is the WORD';
  MailApp.sendEmail(recipient, subject, body, {attachments: [zipBlob]});
}
用户名

要将任何类型的文档附加为PDF,请调用getBlob该文件,将内容类型指定为,.getAs('application/pdf')并可以选择设置一个名称setName就这样:

var doc = DriveApp.getFileById('ID_HERE');
var blob = doc.getBlob().getAs('application/pdf').setName('MyAttachment.pdf');
var recipient = '[email protected]';
var subject = 'Email subject';
var body = 'Text here';
MailApp.sendEmail(recipient, subject, body, {attachments: [blob]});

您试图使用“通过URL查询导出为PDF”,这是一个文档记录不完善的功能,有时对“工作表”(设置导出区域的边界)很有用,但对文档来说是不必要的(即使它们存在于文档中)。上述方法适用于存储在Google云端硬盘中的任何内容。

顺便说一句,最好是使用MailApp,而不是GmailApp发送电子邮件时,因为它使授权给你所需要的水平:发送电子邮件。使用GmailApp,还授予脚本访问和删除所有现有电子邮件的权限,这对于由试用,错误和从Internet复制代码组成的脚本不建议使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过电子邮件将Google文档作为PDF附件发送

来自分类Dev

使用按钮通过电子邮件将Excel表格的一部分作为PDF附件通过电子邮件发送

来自分类Dev

通过电子邮件发送pdf附件,但pdf损坏

来自分类Dev

如何将已保存的 blob 作为附件通过电子邮件发送?

来自分类Dev

python日志记录:当级别> =错误时,将整个日志文件作为附件通过电子邮件发送

来自分类Dev

如何使用PHP生成多个PDF并通过电子邮件附件发送?

来自分类Dev

如何通过电子邮件将 JSON 转换为 CSV 作为附件 Ionic 3

来自分类Dev

流星:通过电子邮件发送文档ID

来自分类Dev

通过Access通过电子邮件发送PDF

来自分类Dev

生成pdf并通过电子邮件发送

来自分类Dev

如何使用MFMailComposeViewContoller通过电子邮件发送pdf?

来自分类Dev

通过电子邮件将excel范围作为新工作表发送

来自分类Dev

在 IOS Swift 中将音频文件作为附件通过电子邮件发送不附加文件

来自分类Dev

Google Apps脚本:通过电子邮件发送PDF而不是.zip文件

来自分类Dev

将byte []转换为PDF Sharp文档和电子邮件作为附件

来自分类Dev

html2canvas和jsPDF:将生成的pdf作为电子邮件附件发送

来自分类Dev

Task Scheduler无法运行Excel VBA代码以将PDF作为电子邮件附件发送

来自分类Dev

通过电子邮件将XML文件作为附件时对Content-Transfer-Encoding感到困惑

来自分类Dev

通过电子邮件发送链接

来自分类Dev

通过电子邮件发送评级

来自分类Dev

使用Google Apps脚本将文件作为电子邮件附件发送

来自分类Dev

如何在 CodeIgniter 中使用自己的电子邮件库通过电子邮件库发送附件

来自分类Dev

创建CSV,压缩和通过电子邮件发送附件的最佳方法

来自分类Dev

如何从命令行通过电子邮件发送附件

来自分类Dev

使用SendMessage通过电子邮件发送文件附件而不保存文件

来自分类Dev

通过电子邮件发送文本文件附件

来自分类Dev

如何从命令行通过电子邮件发送附件

来自分类Dev

通过电子邮件Ruby on Rails发送“ carrierwave” gem附件

来自分类Dev

使用SendMessage通过电子邮件发送文件附件而不保存文件

Related 相关文章

  1. 1

    通过电子邮件将Google文档作为PDF附件发送

  2. 2

    使用按钮通过电子邮件将Excel表格的一部分作为PDF附件通过电子邮件发送

  3. 3

    通过电子邮件发送pdf附件,但pdf损坏

  4. 4

    如何将已保存的 blob 作为附件通过电子邮件发送?

  5. 5

    python日志记录:当级别> =错误时,将整个日志文件作为附件通过电子邮件发送

  6. 6

    如何使用PHP生成多个PDF并通过电子邮件附件发送?

  7. 7

    如何通过电子邮件将 JSON 转换为 CSV 作为附件 Ionic 3

  8. 8

    流星:通过电子邮件发送文档ID

  9. 9

    通过Access通过电子邮件发送PDF

  10. 10

    生成pdf并通过电子邮件发送

  11. 11

    如何使用MFMailComposeViewContoller通过电子邮件发送pdf?

  12. 12

    通过电子邮件将excel范围作为新工作表发送

  13. 13

    在 IOS Swift 中将音频文件作为附件通过电子邮件发送不附加文件

  14. 14

    Google Apps脚本:通过电子邮件发送PDF而不是.zip文件

  15. 15

    将byte []转换为PDF Sharp文档和电子邮件作为附件

  16. 16

    html2canvas和jsPDF:将生成的pdf作为电子邮件附件发送

  17. 17

    Task Scheduler无法运行Excel VBA代码以将PDF作为电子邮件附件发送

  18. 18

    通过电子邮件将XML文件作为附件时对Content-Transfer-Encoding感到困惑

  19. 19

    通过电子邮件发送链接

  20. 20

    通过电子邮件发送评级

  21. 21

    使用Google Apps脚本将文件作为电子邮件附件发送

  22. 22

    如何在 CodeIgniter 中使用自己的电子邮件库通过电子邮件库发送附件

  23. 23

    创建CSV,压缩和通过电子邮件发送附件的最佳方法

  24. 24

    如何从命令行通过电子邮件发送附件

  25. 25

    使用SendMessage通过电子邮件发送文件附件而不保存文件

  26. 26

    通过电子邮件发送文本文件附件

  27. 27

    如何从命令行通过电子邮件发送附件

  28. 28

    通过电子邮件Ruby on Rails发送“ carrierwave” gem附件

  29. 29

    使用SendMessage通过电子邮件发送文件附件而不保存文件

热门标签

归档