如何使用 google Apps 脚本编辑现有的 google 表单项(问题)

How to Edit existing google form item (question) using google Apps Script

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

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

  1. 我对脚本使用 onOpen(),这样每次访问表单时,脚本都会重建最新的表单。

但是,目前我每次 运行 脚本都会在表单中添加一个新问题,而以前过时的问题仍然保留在表单中。 我需要使用脚本编辑表单上的现有问题以更新它以显示最新问题。 我找不到使用 google 脚本编辑现有表单问题的方法。 有人知道怎么做吗?

电子表格中的问题和选项会定期更新。

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

为了更新现有项目(问题),代码必须首先通过项目类型获取该项目,并且有许多不同的方法可以通过项目类型获取项目。

每种问题都有不同的方法。问题类型是:

  • 复选框
  • 日期
  • 日期时间
  • 持续时间
  • 网格
  • 列表
  • MULTIPLE_CHOICE
  • PARAGRAPH_TEXT
  • 规模
  • 文字
  • 时间

为了更新现有项目,代码必须首先根据项目类型获取该项目。以下是一些示例:

  • asCheckboxItem()
  • asDateItem()
  • asListItem()
  • 等等

例如:

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

一旦代码获得了一个项目 作为 正确的项目,您可以像在第一名.

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

  for (i=0;i<L;i++) {
    thisItem = allItems[i];
    thisItemType = thisItem.getType();
    //Logger.log('thisItemType: ' + thisItemType);
    
    if (thisItemType===FormApp.ItemType.CHECKBOX) {
      myCheckBoxItem = thisItem.asCheckboxItem();
      myCheckBoxItem.setChoiceValues(values)
    };
  };
};

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

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

  • 图像
  • PAGE_BREAK
  • SECTION_HEADER

所以,如果您的表单中有这 3 个中的任何一个,您应该检查项目类型。