为我使用脚本生成的多个Google表单嵌入onFormSubmit触发器

时间:2017-04-20 05:00:41

标签: javascript google-apps-script triggers google-apps google-form

我有一个用于创建多个Google表单的脚​​本。在每个Google表单中,我想创建一个onFormSubmit触发器,将响应发布到选定的电子表格中。

使用可安装的触发器,但触发器似乎没有嵌入到我创建的表单中。代码如下:

for(i = 0; i<arrayOfArrays.length; i++) {
    var form = FormApp.create("Name");
    form.setTitle('Blah blah');

    form.addTextItem();
    // my questions

   function writeToSpreadsheet() {
     var formResponses = form.getResponses();
     var ss = SpreadsheetApp.getSpreadsheetByName("1bFjwHt_8Ct_iJCDc5F3lFgrCqSTMjQVOHrL3DQEzLmM");
     var sheet = ss.getSheets()[0]; 
     var newRow = sheet.getLastRow() + 1;

     for (j=0; j<array.length; j++) {
       var questionResponse = formResponses[j];
       ss.getRange(newRow,j+1).setValue(questionResponse);
     }
   }// end writeToSpreadsheet

  function createFormSubmitTrigger() {
     ScriptApp.newTrigger(writeToSpreadsheet)
           .forForm(form)
           .onFormSubmit()
           .create();
  }

}// ends loop to create many forms

我做得对,还是这不可能?谢谢!

1 个答案:

答案 0 :(得分:0)

  • 需要注意的一点是,您无法在for循环中创建函数,但可以调用该函数。
  • 第二件事是触发器不会触发,除非您已经授权了为每个表单手动运行触发器功能以使其工作的脚本
  • 您需要手动将每个脚本安装到每个表单,或者您可以在一个表单中安装脚本并复制表单,脚本将以复制的形式安装,但您需要运行触发器一次以对其进行授权。

您的脚本容易出错,因为无法在另一个函数中定义函数,更不用说for循环了。