背景:
我有一个谷歌应用程序脚本在谷歌表单响应上运行。 在每个新表单响应中,自动化执行以下操作: 文档模板中填充了值,转换为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);
}