2013-10-21 80 views
1

如何從Google電子表格中將信息重新導入Google表單以更新信息?將Google Spreadsheets信息轉換爲Google表單

我希望能夠將我已經通過Google表單提交的信息重新提交到表單中以更新信息。我知道我可以去編輯電子表格,但爲了我的目的,通過表單可以更容易地完成。我一直找不到能讓我做到這一點的腳本。有沒有人有什麼建議?

回答

3

您可以在Apps腳本中使用FormApp訪問表單對象進行更新。

下面是一個更新「從列表中選擇」對象的示例。如果您想在每次提交後更新表單,則可以使用基於容器的觸發器「On form submit」調用updateList函數。

function updateList(){ 
    var form = FormApp.openById(formId); 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); 
    // get the range of values to update in the form 
    var data = sheet.getRange(2,1,sheet.getLastRow(),sheet.getLastColumn()).getValues(); 

    var listItemsToAdd = []; 
    for(s in data){ 
    if(logic to define if to add to the form){ 
     listItemsToAdd.push(data[s][0]); 
    } 
    } 

    // get all the list items in the form 
    var list = form.getItems(FormApp.ItemType.LIST); 
    // grab the first list item in the array of the form's list items 
    var item = list[0].asListItem(); 
    // set the options to the array just created 
    item.setChoiceValues(listItemsToAdd); 
} 
+1

但請不要使用'for(s in data)'循環一個Array。 –

+1

@Cyrus Loree:好的,但我想問你一個關於這個問題的問題;如何使用導航類型在for循環中設置值? ([像這個例子](https://developers.google.com/apps-script/reference/forms/choice)) –

+0

我認爲這是一個不同的對話。如果您發佈了一個新問題,我會很樂意詳細介紹。簡短的答案是您傳遞分頁符項而不是PageNavigationType枚舉。例如。 var anotherPage = form.addPageBreakItem()。setTitle('Another page to go to'); ... item.createChoice('My New Page',anotherPage),item.createChoice('Dogs',FormApp.PageNavigationType.RESTART) ]); –

相關問題