Google表单提交

use*_*403 11 google-apps-script google-forms

如何引用默认的"提交"表单按钮以将"onsubmit"触发器与另一个操作相关联?谢谢.

例如,使用onsubmit,

Logger.log('do something');
Run Code Online (Sandbox Code Playgroud)

Mog*_*dad 10

一个没有.表格服务不允许对产品进行任何程序控制.有关此一般主题的问题跟踪器存在未解决的问题.将其标记为"投票",并接收更新.

但是,你不会迷路.在接收表单回复的电子表格中,您可以添加带有可安装触发器的脚本以触发"在表单提交".从那里,您可以对提交的数据执行许多操作,包括根据需要进行日志记录...但不对表单本身进行任何操作.

触发器

这些引用解释了触发器和事件.

  • 更新 - 现在有一个表单服务,可以对表单的许多元素进行编程控制。 (2认同)

Joh*_*hnB 9

我没有在接收来自表单的响应的电子表格中添加脚本(如在Mogsdad的答案中),而是添加了一个脚本,该脚本由表单的"提交"按钮触发.

第1步:首先创建一个Google表单

示例Google表单

步骤2:然后从菜单中单击工具 - >脚本编辑器

表单编辑器菜单栏

第3步:给你的函数命名onSubmit()

脚本编辑器

第4步:编写一些代码来发送这样的电子邮件,然后单击"运行"按钮进行测试

function onSubmit() {
  MailApp.sendEmail("fred@email.com,alice@email.com",
                    "Subject",
                    "A new application has been submitted.\n\n" +
                    "Here is the link to all Applications:\n" +
                    "https://docs.google.com/spreadsheets/x/1-fdasjhFAKEfdaahfkhsa/",
                    {name:"From Name"});
}
Run Code Online (Sandbox Code Playgroud)

步骤5:在脚本编辑器的菜单中,单击运行,或单击工具栏上的播放按钮以测试您的代码(例如,确保您收到电子邮件)

菜单栏运行命令

步骤6:在Script Editor的菜单中,单击Resources-> Current project的触发器

脚本编辑器菜单栏

第7步:选择设置事件 From form On form submit

Google App触发器

步骤8:然后从表单编辑器的菜单中,单击工具 - >脚本管理器,并确保选中您的脚本

脚本管理器

第9步:尝试表单.单击表单的提交按钮后,您应该收到一封电子邮件.

Google Apps现场表单


pas*_*ute 6

这是一个古老的答案.

目前(2014年1月)onSubmit有两种方式.一个是简单地在onSubmit()上创建一个函数,据说它(对我来说不起作用......)只允许在当前提交用户的许可下进行一组有限的操作.例如,您无法访问其提交的电子邮件,也无法修改下一个提交的基础表单.

然后是提交触发器,您可以添加并附加到任何功能,并根据您自己的权限执行任何操作.看起来与上面的答案中添加的触发器的屏幕截图相同,只是它的第一列显示了您在表单脚本中的方法,下一列显示:From-Form和您选择的第三列:On Submit.

通常,您的方法将接收事件e,其e.values与电子表格中保存的值相同.所以

function formSubmitted(e){...


ale*_*lex 6

似乎有两个应用程序触发代码:(1)表单和(2)链接到表单响应的电子表格。

(1) 正如上面的 Mogsdad 和 JohnB 所指出的那样,由于事件不会发送到函数,因此无法从表单中以编程方式执行太多操作。例如,您可以发送电子邮件“On form submit”或“On open”,但如果没有事件对象,您甚至无法记录数量或行数,也无法记录有关文档或提交的任何内容。

(2) 但是,如果电子表格链接到表单的响应,则可以在电子表格上设置触发器,在那里可以访问事件,从而访问行、列和其他数据。

来自链接的响应 Google 电子表格:

  • 步骤 1:工具 > 脚本编辑器
  • 第二步:写一些代码,例如:

代码.gs:

function onSpreadsheetSubmit(e) {
     var row = e.range.getRow();
     MailApp.sendEmail("me@example.com",
                "Your subject, rows: "+ row,
                "A new application has been submitted on row: "+
                row,
                {name:"From your friendly spreadsheet"});
}
Run Code Online (Sandbox Code Playgroud)
  • 第 3 步:运行 > 运行函数 > onSpreadsheetSubmit(或 |> 图标)
    • 该事件可能没有实际行,因为测试与真正的提交无关。
  • 第 4 步:系统会要求您选择一个用户并进行身份验证
  • 第 5 步:编辑 > 当前项目的触发器(或类似时钟的图标)
  • 第 6 步:添加新触发器
  • 第 7 步:onSpreadsheetSubmit | 从电子表格 | 在表单提交
  • 第 8 步:验证并保存(或反向)
  • 第 9 步:通过等待(或执行)真正的表单提交来进行测试
  • 第 10 步:检查您的电子邮件

更多信息:https : //developers.google.com/apps-script/guides/triggers/events#google_sheets_events