Google Apps脚本 - onFormSubmit()涉及触发器和自动化

时间:2018-04-06 11:58:27

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

背景:

我有一个谷歌应用程序脚本在谷歌表单响应上运行。 在每个新表单响应中,自动化执行以下操作: 文档模板中填充了值,转换为pdf,存储在google驱动器文件夹中。

问题:

问题是我目前的回复是1110+。自动化过程大约有1100多个。

每个新响应都会导致自动化过程触发3到4个响应。 例如,第1111次响应启动了1101和1102响应的过程。

基本上,onFormSubmit()函数和生成的文件代数存在滞后。

我能想到的是: - 我应该在我的剧本中的某个地方使用像flush()这样的东西。

或者我应该让这些东西自己运行,自动化有望赶上表单提交。

任何帮助都会受到高度赞赏,因为表格是实时的,而且回复也会继续。

编辑1:

var docTemplate = "SOME VALUE"; // DOC TEMPLATE FILE
var docName = "SOME VALUE";

// When Form Gets submitted
function onFormSubmit(e) {
  // Get information from form and set as variables
  var timestamp=e.values[0];
  var emailAddr=e.values[1];
  var firstName=e.values[2];
  Logger.log(e);
  // Get document template, copy it as a new temp doc, and save the Doc’s id
  var copyId = DriveApp.getFileById(docTemplate).makeCopy(docName).getId();
  // Open the temporary document
  var copyDoc = DocumentApp.openById(copyId);
  // Get the document’s body section
  var copyBody = copyDoc.getActiveSection();

  // Replace place holder keys,in our google doc template
  copyBody.replaceText('keyFirstName',firstName);

  // Save and close the temporary document
  copyDoc.saveAndClose();

  // Convert temporary document to PDF
  var pdf = DriveApp.getFileById(copyId).getAs('application/pdf');
  pdf.setName(copyDoc.getName() + ".pdf");
  var file = DriveApp.createFile(pdf);
  var fileId = file.getId();
  var pdfFolder = DriveApp.getFolderById("SOME VALUE");  //PDF FOLDER
  pdfFolder.addFile(file);
  DriveApp.getFileById(fileId).getParents().next().removeFile(file);

  // Move temp file
  var docFolder = DriveApp.getFolderById("SOME VALUE"); //DOC FOLDER
  var srcFolder = DriveApp.getFolderById("SOME VALUE"); //PROJECT FOLDER
  var docFile = DriveApp.getFileById(copyId);
  docFolder.addFile(docFile);
  srcFolder.removeFile(docFile);
}

0 个答案:

没有答案