如何通过谷歌脚本编辑现有的谷歌表单项目

时间:2015-10-23 18:22:41

标签: google-apps-script google-form

我有一个谷歌脚本来构建一个谷歌表格。该脚本使用包含问题和相应选项的电子表格填写表单。

表格中显示的问题需要定期更新。 我希望通过更改电子表格中的问题来更新表单中的问题,如下所示:

1)我使用OnOpen作为脚本,因此每次访问表单时脚本都会重新构建最新的表单。

但是,目前我每次运行脚本时都会在表单中添加一个新问题,之前过时的问题仍然留在表单上 因此,我的目的是编辑脚本上已有的问题来更新它以显示最新的问题。 我找不到在Google脚本中编辑现有表单问题的方法。 有人知道出路吗?

问题和选项会定期在电子表格中更新,

Google表示无论采用何种方式手动编辑表单,也可以通过App脚本

完成

我希望脚本能够自动编辑问题。 但是,我所有尝试找到能够编辑表单上已有问题的功能都是徒劳的! (PS:我找到的所有功能都能够创建一个新问题及其选项/无法编辑现有表单问题/选项)

任何人都知道Google app脚本的这种功能.. ??

针对上述目标的任何解决方法?

提前致谢! :)

1 个答案:

答案 0 :(得分:6)

您正在使用代码创建项目。所以,你正在使用:

form.addListItem()

form.addCheckboxItem()

  • CHECKBOX
  • DATE
  • DATETIME
  • DURATION
  • 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)
    };
  };
};

以上脚本不完整。您需要以某种方式匹配哪些项目与新的更改。如果您的所有表单问题都是相同的项目类型,那么您将不需要测试项目类型是什么。

getItems()返回的有3个项目类型不是问题项目。他们是:

  • IMAGE
  • PAGE_BREAK
  • SECTION_HEADER

因此,如果您的表单中有任何3个,则应检查项目类型。