Google apps script Google应用程序脚本:如何正确处理电子表格应用程序中的表单提交事件?

Google apps script Google应用程序脚本:如何正确处理电子表格应用程序中的表单提交事件?,google-apps-script,google-sheets,form-submit,google-forms,Google Apps Script,Google Sheets,Form Submit,Google Forms,我正在为来自谷歌表单的回复提交构建一个插件,因此该插件是电子表格上的一个脚本 插件仍然未发布,因为它正在开发中,为了进一步开发脚本,我想捕获onFormSubmit事件,并对用户提交的数据进行一些处理 我尝试以编程方式添加一个新触发器,但在这样做时,加载项只是退出,就像在中一样,加载项消失,并且根本不重新加载,并且没有通过电子邮件报告错误。有一次,在为onFormSubmit listener添加代码后,从脚本编辑器中,我尝试执行“发布>作为加载项测试…”,并选择电子表格再次进行测试,我被要求为

我正在为来自谷歌表单的回复提交构建一个插件,因此该插件是电子表格上的一个脚本

插件仍然未发布,因为它正在开发中,为了进一步开发脚本,我想捕获onFormSubmit事件,并对用户提交的数据进行一些处理

我尝试以编程方式添加一个新触发器,但在这样做时,加载项只是退出,就像在中一样,加载项消失,并且根本不重新加载,并且没有通过电子邮件报告错误。有一次,在为onFormSubmit listener添加代码后,从脚本编辑器中,我尝试执行“发布>作为加载项测试…”,并选择电子表格再次进行测试,我被要求为脚本提供另一个权限,即使这是必要的,因为脚本范围已更改,我仍然无法加载插件

哎呀,我试过了:

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());
}

像这样的东西能让你恢复健康吗

    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()应该表示触发器只安装一次,安装只运行一次。您可能还希望在将当前项目触发器作为触发器安装之前检查它,以防它已经存在


当我提交表格时。我正在logger中记录表单值。

加载项本身不会发送失败电子邮件。你必须处理这些错误。请参阅此文档以了解有关的更多信息。耶,谢谢,我已经阅读了所有文档,包括脚本安装后添加可安装触发器的简介。我在一个新的脚本(新的谷歌应用程序脚本项目)上测试了上述代码,它是有效的,所以在我以前的脚本中有一些步骤失败了。谷歌应用程序脚本平台是伟大的,因为它无处不在且免费,但调试起来却是一场噩梦。