2017-04-20 67 views
0

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

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

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 

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

+0

为什么你创建一个函数来触发表单提交?你可以在脚本编辑器中设置触发器 –

+0

使用简单触发器,我的印象是,我将不得不手动包含在我生成的每个表单中?我想自动执行该部分,而不必为每个表单执行此操作 – ycy

回答

0
  • 有一点需要注意的是,您不能在for循环中创建函数,但可以调用该函数。
  • 第二件事情是一个触发器不火,除非你已授权的脚本是你需要手动运行每一个表格,以获得触发功能它的工作
  • ,需要在每个脚本中手动安装到每个窗体或您可以将脚本安装在一个表单中并复制表单,脚本将以复制的形式安装,但您需要运行一次触发器才能对其进行授权。

你的脚本容易出错,因为函数不能在另一个函数内部定义,更不用说for循环了。

+0

感谢您的输入 - 根据当前的方法,这样做不起作用,因为没有办法通过循环安装触发器...... – ycy

相关问题