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

Abh*_*bhi 3 google-apps-script google-forms

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

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

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

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

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

Google表示,无论何种方式,手动编辑表格也可以通过App脚本完成

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

任何人都知道谷歌应用程序脚本的这种能力.. ??

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

提前致谢!:)

Ala*_*lls 7

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

form.addListItem()
Run Code Online (Sandbox Code Playgroud)

要么

form.addCheckboxItem()
Run Code Online (Sandbox Code Playgroud)

等等

  • 复选框
  • 日期
  • 约会时间
  • 期限
  • GRID
  • LIST
  • 多项选择
  • PARAGRAPH_TEXT
  • 规模
  • 文本
  • 时间

每个项目都是特定类型.要更新项目,您需要使用以下方法之一:

as_ItemNameHere_Item()
Run Code Online (Sandbox Code Playgroud)

例如:

var myCheckBoxItem = FormApp.openById(id).getItemById(id).asCheckboxItem();
Run Code Online (Sandbox Code Playgroud)

一旦您将项目作为正确的项目,您可以改变它与创建它的方式相同.

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)
    };
  };
};
Run Code Online (Sandbox Code Playgroud)

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

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

  • 图片
  • 分页符
  • SECTION_HEADER

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