2013-03-28 129 views
8

如何引用默认的“提交”表单按钮以将'onsubmit'触发器与其他操作链接起来?谢谢。Google表单提交

例如,使用的onsubmit,

Logger.log('do something'); 
+0

你能否详细说明你的问题。这还不够清楚。当有人提交表单时你是否想要运行一个函数?如果是这样,那么你可以调用函数onSubmit() – Srik

回答

6

一个没有。表单服务不允许对产品进行任何编程控制。问题跟踪器上有一个open issue用于此一般主题。将它打到“投票”并接收更新。

但是,你并没有失去。在接收表单回复的电子表格中,您可以添加带有可安装触发器的脚本以激活“表单提交”。从那里,你可以对提交的数据做很多事情,包括记录,只要你愿意......但没有任何形式本身。

Triggers

这些引用解释的触发器和事件。

+0

更新 - 现在有一个Forms服务,它可以对许多表单的元素进行编程控制。 – Mogsdad

+0

引用的问题已修复。 –

3

这是一个古老的答案。

目前(2014年1月)onSubmit有两种方式。一种是简单地做一个函数onSubmit(),据推测(它不适用于我...)只允许在当前提交用户的许可下进行一组有限的操作。例如,您不能访问他提交的电子邮件,或者修改下一个提交的基础表单。

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

通常情况下,您的方法将收到一个事件e,谁的e.values与电子表格中保存的值相同。所以

功能formSubmitted(E){...

6

而不是添加脚本到电子表格从形式接收响应(如Mogsdad的答案),我添加了得到由触发脚本的表单提交按钮。

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

sample Google Form

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

Form editor menu bar

步骤3:给你之类的函数onSubmit()

Script editor

步骤4名:编写一些代码,通过点击运行按钮

function onSubmit() { 
    MailApp.sendEmail("[email protected],[email protected]", 
        "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"}); 
} 

第5步发送电子邮件这样的,然后进行测试:脚本编辑器的菜单上,单击运行,或单击播放按钮在工具栏上,以测试你的鳕鱼e(例如确保你的电子邮件)

Menu bar Run command

步骤6:脚本编辑器的菜单上,单击资源 - >当前项目的触发器

Script Editor menu bar

步骤7:选择设置活动From formOn form submit

Google App Triggers

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

Script manager

步骤9:尝试一下形式。点击表单的提交按钮后,您应该收到一封电子邮件。上述

Google Apps live Form

+1

假设**我添加了一个由Form的提交按钮触发的脚本**不正确,您的答案使用与Mogsdad答案中相同的可安装触发器......您只是将它嵌入到表单容器中,但它只是更改一点都没有。在发布第一个答案时,不能在脚本中嵌入脚本。 –

0

JohnB的HOWTO非常出色。更新(NOV 2017):

  • 第2步:“脚本编辑器...”是
  • 第6步形式的垂直“......”汉堡菜单右上角:‘项目触发器’中找到(时钟状图标)(上面显示的第二个图标)。
  • 第7步:单击“添加新触发器”,忽略了“不myFunctions”的警告。
  • 步骤8:似乎并不存在,可能没有必要,对我的作品没有。

上述许多步骤都要求表单所有者进行验证/接受。

1

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

(1)如上面的Mogsdad和JohnB所述,没有太多的人可以通过程序从表单中进行编程,因为事件没有发送到函数。例如,可以发送一封电子邮件“On form submit”或“On open”,但没有事件对象,甚至不能记录数字或行,也不能记录任何有关文档或提交的内容。 (2)然而,如果电子表格链接到表单的响应,则可以在电子表格上设置触发器,其中可以访问事件以及行,列和其他数据。

从链接响应谷歌电子表格:

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

Code.gs:

function onSpreadsheetSubmit(e) { 
    var row = e.range.getRow(); 
    MailApp.sendEmail("[email protected]", 
       "Your subject, rows: "+ row, 
       "A new application has been submitted on row: "+ 
       row, 
       {name:"From your friendly spreadsheet"}); 
} 
  • 第3步:运行>运行功能> onSpre adsheetSubmit(或|>图标)
    • 该事件可能没有实际行,因为该测试与实际提交没有关联。
  • 第4步:您会被要求选择一个用户,并验证自己
  • 第5步:编辑>当前项目的触发器(或类似时钟的图标)
  • 6步:添加新的触发
  • 第7步:onSpreadsheetSubmit |从电子表格|通过等待(或执行)一个真实的表单提交
  • 第10步测试:检查您的电子邮件

更多关于表单提交

  • 第8步:验证和保存(或反向)
  • 第9步info:https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events