【问题标题】:Script to edit Google Doc then Convert to PDF编辑 Google Doc 然后转换为 PDF 的脚本
【发布时间】:2020-05-08 05:49:38
【问题描述】:

我一直在尝试制作一个系统,我可以在其中更改谷歌文档的内容,然后将其保存为 pdf。该脚本在 Google 表格中运行,所以我不确定这是否是我的问题。我可以使用正确的信息对其进行编辑,但它仍然是文档,而不是 PDF。我也不编码,所以这是我根据其他人的工作得到的。任何帮助都会很棒,谢谢!

function autoFillGoogleDocFromForm(e) {
  //e.values is an array of form values
  var timestamp = e.values[0];
  var InvenName = e.values[1];
  var Case = e.values[2];
  var AppNumber = e.values[3];
  var Firm = e.values[4];
  var InvenTitle = e.values[5];
  var Date = e.values[6];
  var AppType = e.values[7];

  //file is the template file, and you get it by ID
  var file = DriveApp.getFileById('FILE_ID_HERE'); 

  //We can make a copy of the template, name it, and optionally tell it what folder to live in
  //file.makeCopy will return a Google Drive file object
  var folder = DriveApp.getFolderById('FOLDER_ID_HERE')
  var copy = file.makeCopy(Case + ' ' + 'E Assigmnt' + ' ' + AppType + ' ' + AppNumber + ' ' + InvenName ,folder);

  //Once we've got the new file created, we need to open it as a document by using its ID
  var doc = DocumentApp.openById(copy.getId()); 

  //Since everything we need to change is in the body, we need to get that
  var body = doc.getBody(); 
  var footer = doc.getFooter();

  //Then we call all of our replaceText methods
  body.replaceText('{{Name}}', InvenName);
  body.replaceText('{{Title}}' ,InvenTitle);
  body.replaceText('{{AppNumber}}', AppNumber);
  body.replaceText('{{Date}}' , Date);
  footer.replaceText('{{FirmNumber}}', Firm);
  footer.replaceText('{{Case}}', Case);

  //Lastly we save and close the document to persist our changes
  DocumentApp.getActiveDocument().saveAndClose();

  var doc = DocumentApp.getActiveDocument();
  var docblob = DocumentApp.getActiveDocument().getAs('application/pdf');
  docblob.setName(doc.getName() + ".pdf");

}

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    我相信你的目标如下。

    • 您想通过使用 Google Apps 脚本修改复制的 Google 文档来创建 PDF 文件。

    对于这个,这个答案怎么样?

    修改点:

    • 在您的脚本中,复制的 Google 文档通过替换文本进行了修改。但修改后的 Document 不会导出为 PDF 文件。活动文档被转换为 PDF 格式。但是,该 blob 不会导出为文件。

    修改后的脚本:

    当你的脚本被修改时,请进行如下修改。

    从:
    DocumentApp.getActiveDocument().saveAndClose();
    
    var doc = DocumentApp.getActiveDocument();
    var docblob = DocumentApp.getActiveDocument().getAs('application/pdf');
    docblob.setName(doc.getName() + ".pdf");
    
    至:
    doc.saveAndClose();
    var docblob = doc.getBlob();
    docblob.setName(doc.getName() + ".pdf");
    DriveApp.createFile(docblob);
    
    • 通过上述修改,复制的谷歌文档通过替换文本进行修改,修改后的文档导出为PDF文件。在这种情况下,创建的 PDF 文件将放在根文件夹中。

    参考:

    【讨论】:

    • 该文件仍保存为谷歌文档。我按照建议替换了代码,是否需要在括号中添加其他内容?
    • @Logan Rachac 感谢您的回复。我带来的不便表示歉意。不幸的是,我无法复制您的问题。这是因为我的技术不好。对于 Google Docs,当像 doc.getBlob() 这样检索 blob 时,它会自动转换为 PDF 格式。所以getAs('application/pdf') 不需要使用。所以为了正确地复制你的问题,你能提供你当前的脚本来复制你的问题吗?借此,我想确认您的情况。如果可以,请将其添加到您的问题中。如果您能合作解决您的问题,我很高兴。
    • 似乎代码已经工作了很长时间,我对这一切太陌生了,以至于我在错误的地方寻找文件。非常感谢您的帮助
    • @Logan Rachac 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多