Google App 脚本从文档模板库创建文件 PDF

Google App Script create a file PDF from document template base

关于我的post:

关于下面描述的功能:

function submitData(form) {
  var subject='New Feedback';
  var body=Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s', form.name,form.email,form.comment);

  var folderId = "my-folder-ID"; // Please set the folder ID.  // Added
  var blob = Utilities.newBlob(body, MimeType.HTML, form.name).getAs(MimeType.PDF);  // Added
  var file = DriveApp.getFolderById(folderId).createFile(blob);  // Added

  var aliases = GmailApp.getAliases()
   Logger.log(aliases); //returns the list of aliases you own
   Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array

  GmailApp.sendEmail('my-email@my-email.com','From an alias', 'A message from an alias!', {'from': aliases[0],subject: subject,htmlBody: body, attachments: [blob]});  // Modified

//  return file.getUrl();  // Modified
  return Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s<br />PDF: %s', form.name,form.email,form.comment,file.getUrl());
}

我想使用文档作为基本模板来创建与此类似的 PDF 文件: https://jeffreyeverhart.com/2018/09/17/auto-fill-google-doc-from-google-form-submission/ 我怎样才能用我的应用程序完成这个?这是一个自定义 html 表格,如您所见。

在此先感谢您的帮助!

  • 您想使用 Google 文档的模板创建 PDF 文件。
  • 您想要设置form.name,form.email,form.comment模板文档,然后,您想要将其导出为PDF文件。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

修改点:

  • 首先,请准备一个Google文档作为模板。
  • 有模板Document时,首先复制模板Document,将需要替换的值替换为form.name,form.email,form.comment。然后,文档被转换为 PDF 数据。

用法:

在你运行脚本之前,请准备一个Google文件作为模板。

在这种情况下,{{name}}{{email}}{{comment}} 分别替换为 form.nameform.emailform.comment。所以请在模板文档中包含 {{name}}{{email}}{{comment}}

修改后的脚本:

当你的脚本修改后,变成如下。并且请将模板Google文档的文件ID设置为templateDocumentId.

从:
var blob = Utilities.newBlob(body, MimeType.HTML, form.name).getAs(MimeType.PDF);
到:
var templateDocumentId = "###"; // Please set the file ID of the template Google Document

var docId = DriveApp.getFileById(templateDocumentId).makeCopy("temp").getId();
var doc = DocumentApp.openById(docId);

// Please modify as follows.
// var body = doc.getBody();
// body.replaceText("{{name}}", form.name).replaceText("{{email}}", form.email).replaceText("{{comment}}", form.comment);
doc.getBody().replaceText("{{name}}", form.name).replaceText("{{email}}", form.email).replaceText("{{comment}}", form.comment); // Modified

doc.saveAndClose();
var blob = doc.getBlob().setName(form.name);
DriveApp.getFileById(docId).setTrashed(true);
  • 在此修改后的脚本中,复制的文档在最后一行被移至垃圾箱。所以请注意这一点。

注:

  • 我不确定您要使用的模板文档。那么如果这个修改后的脚本不能用于你的模板Document,你能提供吗?

参考文献:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。