Google apps script 有没有办法在谷歌表单上获取项目响应的数量和名称

Google apps script 有没有办法在谷歌表单上获取项目响应的数量和名称,google-apps-script,google-forms,Google Apps Script,Google Forms,我有一个谷歌表单,我使用getItemResponses并使用itemResponses[0].getResponse()检查每个响应。当所有的谷歌表单问题都是必需的时,这非常有效,我可以预测每个问题都与什么有关。现在我希望一些问题是可选的,所以当我使用脚本读取回复时,它会崩溃,因为我引用了一些超出数组范围的内容 问题。我是否可以循环查看所有的回答,并判断回答是针对哪个问题的?另一种方法是检查项目/问题的标题,并将其答案分配给要保留其值的变量 样本表格: 代码: 函数myFunction(e)

我有一个谷歌表单,我使用
getItemResponses
并使用
itemResponses[0].getResponse()检查每个响应。当所有的谷歌表单问题都是必需的时,这非常有效,我可以预测每个问题都与什么有关。现在我希望一些问题是可选的,所以当我使用脚本读取回复时,它会崩溃,因为我引用了一些超出数组范围的内容


问题。我是否可以循环查看所有的回答,并判断回答是针对哪个问题的?

另一种方法是检查项目/问题的标题,并将其答案分配给要保留其值的变量

样本表格:

代码:
函数myFunction(e){
var form=FormApp.getActiveForm();
var formResponse=e.response;
var itemResponses=formResponse.getItemResponses();
var全名、favoriteFood、问题、答案、项目响应;
对于(var j=0;j
注:
  • 确保在表单提交中添加
    myFunction
    作为触发器
  • 如果您有很多问题,请使用
    切换case
    而不是多个If语句

输出:
  • 当您提交答复时,上面的代码将检查问题标题。如果匹配,则将
    answer
    值赋给要保存该值的变量。这样,您就不用担心数组
    越界的问题了

您可以在尝试访问它们之前检查它们的真实性。所有问题在链接的电子表格中都有列。有两个onFormSubmit触发器,一个用于表单,另一个用于电子表格。做一些研究。itemResponses是一个数组对象,所以只需在数组上循环即可。如果你不知道怎么做,只需在Mozilla Developer Network(MDN)的Javascript.Thks文档下搜索
数组
对象就可以了,非常简单。。。我想我应该参加一些培训课程,有什么建议吗?嗨@PeterMacDonaldSykes,很高兴你能接受这个答案。如果我们回答了您的问题,请单击“接受”按钮。通过这样做,社区中其他可能与您有相同关注的人将知道他们的问题可以得到解决。如果“接受”按钮不可用,请随时告诉我。stackoverflow.com/help/accepted-answer。至于培训课程,我没有以任何方式推广这一点,但我找到了这一个,并注册了它,因为它是免费的。你可以试试这个。
function myFunction(e) {
  var form = FormApp.getActiveForm();
  var formResponse = e.response;
  var itemResponses = formResponse.getItemResponses();
  var fullName, favoriteFood, question, answer, itemResponse;
  for (var j = 0; j < itemResponses.length; j++) {
    itemResponse = itemResponses[j];
    question = itemResponse.getItem().getTitle();
    answer = itemResponse.getResponse();
    if(question == "full name") { // required
      fullName = answer;
    }
    else if(question == "favorite food") { // optional
      favoriteFood = answer;
    }
  }
  Logger.log("your full name is: " + fullName);
  
  if (favoriteFood) // optional, print if answered
    Logger.log("your favorite food is: " + favoriteFood);
}