【问题标题】:How to Edit existing google form item (question) using google Apps Script如何使用 google Apps 脚本编辑现有的 google 表单项(问题)
【发布时间】:2016-01-23 09:15:42
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: google-apps-script google-forms


    【解决方案1】:

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

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

    • 复选框
    • 日期
    • 日期时间
    • 持续时间
    • 网格
    • 列表
    • 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 个中的任何一个,您应该检查项目类型。

    【讨论】:

    • 完美!效果很好!这正是我正在寻找的..您的回复为我节省了巨大的时间和精力!我只希望我早点问过.. :)
    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多