找不到具有给定ID的项目

时间:2015-12-28 20:22:28

标签: google-apps-script

我创建了一个脚本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但不在编辑触发器上。我使用错误的触发器还是应该有其他代码?

感谢您提供任何帮助!!

1 个答案:

答案 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();
};