我创建了一个脚本pdf并通过电子邮件向我发送Google Form回复(基于TJHouston的脚本)。如果最终用户尝试编辑其原始响应,则它可以正常工作但错误。
原始触发器是onFormSubmit,From Spreadsheet,On Form Submit。这很有效。
我创建了第二个触发器,它是onFormSubmit,From Spreadsheet,On edit think是触发器,提示另一个创建PDF - 但是当我点击链接编辑我的google表单响应然后重新提交表单时,我得到了错误“找不到具有给定ID的项目,或者您无权访问它”。并且它引用了行
var copyId = DriveApp.getFileById(docTemplate)
我还尝试了onFormSubmit,From Spreadsheet,On change trigger并得到了相同的结果。
// Get template from Google Docs and name it
var docTemplate;
var docName;
if (NYcollection == "YES") {docTemplate = "1JRDVjOYxeyl1dXIC115u5W2SQTVgbBMPUERBQ9xfgjo";docName = "Form M";}
else if (NYcollection == "NO") {docTemplate = "1YGx8wGZyBvfmcfdkTWGQF8XUGlJF7zaYI9ZVO2lYnto";docName = "Form N";}
// Get document template, copy it as a new temp doc, and save the Doc’s id
var copyId = DriveApp.getFileById(docTemplate)
.makeCopy(NYfacility +' - '+docName+' '+NYdate +NQE4)
.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('keyNYname', NYname);
copyBody.replaceText('keyNYdate', NYdate);
代码继续替换我的所有密钥,然后通过电子邮件将pdf发送给我。我不明白为什么它可以在初始触发器上获取ID但不在编辑触发器上。我使用错误的触发器还是应该有其他代码?
感谢您提供任何帮助!!
答案 0 :(得分:0)
让代码检查是否缺少YES或NO,如果不存在您想要的值,请使用范围类的getValue()
方法获取值。
将此代码放在指定SS ID的行之前。
if (NYcollection !== "YES" && NYcollection !== "NO") {
//Get the value
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetWhereValueIs = ss.getSheetByName('YourSheetNameHere');
var rowOfMyValue = 3;
var columnOfMyValue = 4;
var NYcollection = sheetWhereValueIs.getRange(rowOfMyValue, columnOfMyValue).getValue();
};