forms - 在提交事件中使用 Google App 脚本获取 Google 表单中特定问题/项目的值

标签 forms google-apps-script google-forms

我已经弄清楚如何使用 https://developers.google.com/apps-script/guides/triggers/events#form-submit_4 中的信息在表单提交上运行 Google App Script 项目/函数。 .

一旦我有e我可以调用e.response获得 FormResponse 对象,然后调用 getItemResponses() 获取所有响应的数组。

在不遍历数组并检查每个数组的情况下,有没有办法找到特定问题的 ItemResponse?

我明白了getResponseForItem(item)但看起来我必须以某种方式创建一个 Item第一的?

我可以如何使用 e.source获取 Form对象,然后找到 Item通过问题,无需遍历所有这些,这样我就可以获得 Item我可以与 getResponseForItem(item) 一起使用的对象?

最佳答案

这是我用来将当前一组答案拉入对象的代码,因此“你的名字”问题的最新响应变为 form.yourName,我发现这是按问题查找响应的最简单方法:

function objectifyForm() {
  //Makes the form info into an object
  var myform = FormApp.getActiveForm();
  var formResponses = myform.getResponses()
  var currentResponse = formResponses[formResponses.length-1];
  var responseArray = currentResponse.getItemResponses()
  var form = {};
  form.user = currentResponse.getRespondentEmail(); //requires collect email addresses to be turned on or is undefined.
  form.timestamp = currentResponse.getTimestamp();
  form.formName = myform.getTitle();
  for (var i = 0; i < responseArray.length; i++){
    var response = responseArray[i].getResponse();
    var item = responseArray[i].getItem().getTitle();
    var item = camelize(item);
    form[item] = response;
  }
  return form;
}

function camelize(str) {
  str = str.replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()@\+\?><\[\]\+]/g, '')
  return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) {
    if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces
    return index == 0 ? match.toLowerCase() : match.toUpperCase();
  });
}


//Use with installable trigger
function onSubmittedForm() {
  var form = objectifyForm();
  Logger.log(form);
  //Put Code here

}

一些重要的事情。

  • 如果您更改表单上的问题,您将需要更新您的信息 代码
  • 非必填问题可能有答案,也可能没有答案,因此在使用之前请检查答案是否存在
  • 我只使用可安装的触发器,所以我知道它适用于这些触发器。不确定简单的触发器
  • 您可以通过打开日志看到表单对象,这对于查找对象名称很有用

关于forms - 在提交事件中使用 Google App 脚本获取 Google 表单中特定问题/项目的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56093910/

相关文章:

google-apps-script - 在Google Apps脚本中设置超时

sql - 如何在 Google Data Studio 中组合两个日期字段?

javascript - 如何让 Google Apps 脚本服务的剩余每日邮件配额持续工作?

Javascript 弹出表单

ruby-on-rails - Routes.rb 编辑表单重定向失败

javascript - 发送带有附件的Google表格电子邮件ERROR

javascript - 如何编写一个 Google Sheets 脚本函数,根据同一行中的单元格来识别值

javascript - 如何在谷歌表单中仅邮寄填充值而不邮寄空白值?

php - 带有 PHP post 方法的 HTML5 表单

ruby-on-rails - 如何将更改密码与设计表单分开