2017-04-20 58 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

相關問題