Google App脚本:如何在SpreadSheet应用中正确处理表单提交事件?

时间:2015-02-04 07:37:13

标签: google-apps-script google-sheets form-submit google-form

我正在为Google表单的回复提交构建插件,因此插件是SpreadSheet上的脚本。

插件尚未发布,因为它正在开发中,为了进一步开发脚本,我想捕获onFormSubmit事件,并使用用户提交的数据做一些事情。

我尝试以编程方式添加新的触发器,但是这样做,插件就会失败,因为插件会消失,并且根本不会重新加载,并且电子邮件没有错误报告。有一次,在为脚本编辑器添加onFormSubmit监听器的代码之后,我尝试了"发布>测试为插件...",并选择电子表格再次测试,我被要求提供另一个脚本权限 - 甚至这是必要的,因为脚本范围已经改变,我仍然无法做到这一点。 t加载插件。

Gahh,这是我的尝试:

function onOpen(e) {
  addFormSubmissionListener();
  // other init...
}

function addFormSubmissionListener() {
  var sheet = SpreadsheetApp.getActive();
  ScriptApp.newTrigger("onFormSubmit")
     .forSpreadsheet(sheet)
     .onFormSubmit()
     .create();
}

function onFormSubmit(e) {
  // do stuff with form submission //
  Logger.log(e.response.getId());
}

1 个答案:

答案 0 :(得分:0)

这样的事情会让你上路。

    function onInstall() {
  addFormSubmissionListener();
  // other init...
}

function addFormSubmissionListener() {
  var sheet = SpreadsheetApp.getActive();
  ScriptApp.newTrigger("onFormSubmit")
     .forSpreadsheet(sheet)
     .onFormSubmit()
     .create();
}

function onFormSubmit(e) {
  // do stuff with form submission //
  Logger.log(e.values);
}

onInstall()应该表示触发器只安装一次而安装只运行一次。您可能还希望在将其作为触发器安装之前检查当前项目触发器,因为它已经存在。

当我提交表格时。我在记录器中记录了表单值。