2015-10-23 78 views
2

我有一個谷歌腳本來構建谷歌表單。該腳本使用包含問題和相應選項的電子表格填寫表單。如何通過谷歌腳本編輯已存在的Google表單項

表單中顯示的問題需要定期更新。 我希望通過更改電子表格中的問題來更新表單中的問題,如下所示:

1)我使用OnOpen作爲腳本,以便每次訪問表單時都會重新構建最新的表單。

但是,目前每次運行腳本時都會在表單中添加一個新問題,並且之前的過期問題仍然保留在表格 因此,我希望通過腳本編輯已更新的from腳本以更新它顯示最新的問題。 我找不到在Google腳本中編輯現有表單問題的方法。 任何人都知道一條出路?

的問題和選項都在定期的電子表格更新,

谷歌稱,任何方式可以手動編輯的形式,也可以通過應用程序腳本來完成

我希望腳本能自動編輯問題。 但是,我所有試圖找到能夠編輯表單上已有問題的函數都是徒勞的! (PS:我發現的所有功能都能夠創建一個新的問題及其選項/無法編輯現有的表單問題/選項)

任何人都知道Google應用腳本的這種能力。

針對上述目的的任何解決方法?

在此先感謝! :)

回答

3

您正在使用代碼創建項目。所以,你正在使用:

form.addListItem() 

form.addCheckboxItem() 

  • 複選框
  • DATE
  • DATETIME
  • 期限
  • GRID
  • LIST
  • MULTIPLE_CHOICE
  • PARAGRAPH_TEXT
  • SCALE
  • TEXT
  • TIME

每個項目是一種特定類型的。爲了更新項目,你需要使用的命名方法之一:

as_ItemNameHere_Item() 

例如:

var myCheckBoxItem = FormApp.openById(id).getItemById(id).asCheckboxItem(); 

一旦你已經得到了項目正確的項目,你可以按照您創建它的相同方式進行更改。

function editFormItem() { 
    var form = FormApp.getActiveForm(); 
    var allItems = form.getItems(); 
    var i=0, 
     thisItem, 
     thisItemType, 
     myCheckBoxItem; 

    for (i=0;i<allItems.length;i+=1) { 
    thisItem = allItems[i]; 
    thisItemType = thisItem.getType(); 
    Logger.log('thisItemType: ' + thisItemType); 

    if (thisItemType===FormApp.ItemType.CHECKBOX) { 
     myCheckBoxItem = thisItem.asCheckboxItem(); 
     myCheckBoxItem.setChoiceValues(values) 
    }; 
    }; 
}; 

上述腳本不完整。你需要以某種方式匹配什麼項目與新的變化。如果你所有的表單問題都是相同的項目類型,那麼你將不需要測試項目類型是什麼。

有3個項目類型返回getItems()不是問題項目。它們是:

  • IMAGE
  • PAGE_BREAK
  • SECTION_HEADER

所以,如果您有任何表單中的那些3,你應該檢查的項目類型。

+0

完美!奇妙地工作!這正是我正在尋找的東西..您的回覆爲我節省了大量的時間和精力!我只希望我早些時候問過它。:) – Abhi

相關問題