Google apps script Google应用程序脚本-onFormSubmit()触发器中的延迟和涉及的自动化
背景: 我有一个运行在谷歌表单响应上的谷歌应用程序脚本。 在每个新表单响应上,自动化执行以下操作: 文档模板由值填充,转换为pdf,存储在google drive文件夹中 问题: 问题是我目前有1110多个回复。自动化过程大约是1100多个 每一个新的响应都会导致自动化过程启动3到4个响应。 例如,第1111次响应启动了1101和1102响应的进程 基本上,Google apps script Google应用程序脚本-onFormSubmit()触发器中的延迟和涉及的自动化,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,背景: 我有一个运行在谷歌表单响应上的谷歌应用程序脚本。 在每个新表单响应上,自动化执行以下操作: 文档模板由值填充,转换为pdf,存储在google drive文件夹中 问题: 问题是我目前有1110多个回复。自动化过程大约是1100多个 每一个新的响应都会导致自动化过程启动3到4个响应。 例如,第1111次响应启动了1101和1102响应的进程 基本上,onFormSubmit()函数和生成的文件都存在延迟 我能想到的是: -我应该在脚本的某个地方使用类似于flush()的东西 或者我应该让
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);
}
您不能使用触发函数可用的事件对象-这将保证您只对自动化函数中的单个响应进行操作,而不是从工作表中读取。分离任务可能会使您受益。提交表单时,生成文档文件。然后,比如说每小时,将给定文件夹中的文档文件转换为PDF并将其移动。@urwaCFC“我们遇到了技术难题”,整理您的处理,然后重新打开表单。作为公开发布前压力测试的一部分,这种情况本应出现……好吧,仔细检查后,我意识到我假设的滞后根本不是滞后。相反,新的答复并没有添加在表格的末尾,而是添加了上面的10个条目。基本上,脚本运行得很好。底部的10个条目是旧的响应。帮助理解的屏幕截图:这通常发生在数据行被清除但未被删除时。如果您正在测试表单,并且希望删除测试提交,那么您应该删除行,而不仅仅是清除数据。