【问题标题】:How to import checked options on Google Forms checkbox with Apps Script?如何使用 Apps 脚本在 Google 表单复选框上导入选中的选项?
【发布时间】:2019-10-04 14:29:44
【问题描述】:

我有一个调查,其中有几个问题,每个问题都可以是不同的类型(段落、复选框、比例)。我知道如何导入所有问题的回答,除了复选框。

var form = FormApp.openById(idg);
var formResponses = form.getResponses();
var linhaform = formResponses[j];
var linharesponses = linhaform.getItemResponses();

之后我将响应提取为 linharesponses[i](for 循环)

问题是:如果问题是一个复选框,用户可以在其中选择多个选项,这个方法只导入第一个答案。

我尝试过的另一件事是

 var chkItem = linharesponses[i].getItem().asCheckboxItem();

//and then importing as

chkItem.getChoices()[j].getValue();

但这会导入所有选项,而不是选定的选项。

您能帮我找到导入所选选项的方法吗?

【问题讨论】:

    标签: google-apps-script google-forms google-apps-script-editor


    【解决方案1】:
    • 对于 Google 表单上的复选框,您希望检索从响应中选中的复选框的值。
      • 在您的问题中,我理解import selected options 因为您想要检索选中复选框的值。

    如果我的理解是正确的,那么这个答案呢?请认为这只是几个答案之一。

    示例脚本:

    function myFunction() {
      var idg = "###"; // Please set Form ID.
      var form = FormApp.openById(idg);
      var formResponses = form.getResponses();
      for (var j = 0; j < formResponses.length; j++) {
        var linhaform = formResponses[j];
        var linharesponses = linhaform.getItemResponses();
        for (var k = 0; k < linharesponses.length; k++) {
          var itemResponse = linharesponses[k];
          if (itemResponse.getItem().getType() == FormApp.ItemType.CHECKBOX) {
            var response = itemResponse.getResponse();
            Logger.log("%s, %s", itemResponse.getItem().getTitle(), response)
          }
        }
      }
    }
    

    注意:

    • 例如,如果checkbox的标题是“sample checkbox”,并且每个checkbox的名称是“foo”、“bar”和“baz”,那么当勾选“foo”和“baz”的复选框时,提交后,此脚本返回sample checkbox, [foo, baz]。
    • 在此示例脚本中,检索复选框的响应值。如果要检索所有项目的响应值,请删除if (itemResponse.getItem().getType() == FormApp.ItemType.CHECKBOX) {。

    参考资料:

    如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

    【讨论】:

    • 非常感谢。这个我试过了。我担心的是,在 Google Developers 站点中,它解释了 checkboxItem 的“getResponse()”返回一个字符串数组(检查每个选项),但实际上,结果为 var response = itemResponse.getResponse();不是数组,我不能遍历它或调用 response[i] 来获取值。你知道我做错了什么吗?
    • @Marcos Alejandro Pérez 感谢您的回复。关于but in practice, the result in var response = itemResponse.getResponse(); is not an array,我无法复制它。当从复选框中检索响应值时,即使选中的复选框只有一个,也会返回数组。那么您能否提供详细信息以复制您的情况?
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多