Google apps script 谷歌表单提交

Google apps script 谷歌表单提交,google-apps-script,google-forms,Google Apps Script,Google Forms,如何引用默认的“提交”表单按钮将“onsubmit”触发器与另一个操作链接起来?多谢各位 例如,对于onsubmit Logger.log('do something'); 一个没有。表单服务不允许对产品进行任何编程控制。对于此一般主题,有一个问题跟踪程序。将其启动为“投票”,并接收更新 然而,你并没有迷失方向。在接收表单响应的电子表格中,可以添加带有可安装触发器的脚本,以触发“表单提交”。从那里,您可以对提交的数据执行许多操作,包括根据需要进行日志记录。。。但对形式本身没有任何影响 这些参

如何引用默认的“提交”表单按钮将“onsubmit”触发器与另一个操作链接起来?多谢各位

例如,对于onsubmit

Logger.log('do something');

一个没有。表单服务不允许对产品进行任何编程控制。对于此一般主题,有一个问题跟踪程序。将其启动为“投票”,并接收更新

然而,你并没有迷失方向。在接收表单响应的电子表格中,可以添加带有可安装触发器的脚本,以触发“表单提交”。从那里,您可以对提交的数据执行许多操作,包括根据需要进行日志记录。。。但对形式本身没有任何影响

这些参考文献解释了触发器和事件


  • 这是一个古老的答案

    目前(2014年1月),提交有两种方式。一种方法是简单地在submit()上创建一个函数,该函数假定(它不适用于我…)只允许在当前提交用户的权限下执行一组有限的操作。例如,您无法访问他提交的电子邮件,也无法为下次提交修改基础表单

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

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


    函数formSubmitted(e){…

    我没有向接收表单响应的电子表格中添加脚本(如Mogsdad的回答),而是添加了一个由表单的提交按钮触发的脚本。

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

    步骤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"});
    }
    
    步骤5:在脚本编辑器菜单中,单击运行,或单击工具栏上的播放按钮测试代码(例如,确保收到电子邮件)

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

    步骤7:从表单中选择设置事件
    表单提交

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

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


    JohnB的上述指南非常出色。更新(2017年11月):

    • 步骤2:“脚本编辑器…”位于表单右上角的垂直“…”汉堡菜单中
    • 步骤6:在(时钟状图标)(上面显示的第二个图标)中找到“项目触发器”
    • 步骤7:单击“添加新触发器”,忽略“无myFunctions”警告
    • 第八步:似乎不存在,可能没有必要,对我来说没有效果

    上面的许多步骤都需要表单所有者的验证/接受。

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

    (1) 正如上面Mogsdad和JohnB所指出的那样,由于事件没有发送到函数,人们无法通过表单进行编程。例如,人们可以“在表单提交时”或“在打开时”发送电子邮件,但如果没有事件对象,人们甚至无法记录数字或行,也无法记录有关文档或提交的任何信息

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

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

    • 步骤1:工具>脚本编辑器
    • 步骤2:编写一些代码,例如:
    代码G.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"});
    }
    
    • 步骤3:运行>运行函数>发布表提交(或|>图标)
      • 事件可能没有实际行,因为测试与实际提交没有关联
    • 步骤4:将要求您选择一个用户并进行身份验证
    • 步骤5:编辑>当前项目的触发器(或类似时钟的图标)
    • 步骤6:添加新触发器
    • 步骤7:在表格提交时,从电子表格提交
    • 步骤8:验证并保存(或反向)
    • 步骤9:通过等待(或执行)真正的表单提交进行测试
    • 第十步:检查你的电子邮件

    有关详细信息:

    我建议使用表单触发器。在表单中打开脚本编辑器并粘贴代码:

    function onFormSubmit(e) {  
      // for tests
      if (!e) { 
        // test object
        var form = FormApp.getActiveForm()
        var responses = form.getResponses();
        e = {"authMode":"FULL",
             "response": responses[responses.length - 1], // last response
             "source": form,
             "triggerUid":"5125265"};
      };
      // do your job here
      try {
        // paste useful code here...
        //
        //
      }
      catch (err) {
        MailApp.sendEmail("testemail@test.com",
                          "Error in the app",
                          "New error, please check.\n\n" +
                          "Here is the event object:\n" +
                          e + "\n" + 
                          JSON.stringify(e) + "\n\n" + 
                          "Here's an error:\n" + err,
                          {name:"From Name"});     
        throw err;  
      }
      return 0;   
    }
    
    将此函数设置为可安装触发器

    参考:


    你能详细说明你的问题吗?还不够清楚。你是否希望在有人提交表单时运行函数?如果是,那么你可以调用onSubmit()函数更新-现在有一个表单服务可以对表单的许多元素进行编程控制。所提到的问题已经解决。假设**我添加了一个由表单的提交按钮触发的脚本。**不是真的,你的答案使用了与Mogsdad的答案相同的可安装触发器…你只需将它嵌入表单容器中,但我t完全没有改变。发布第一个答案时,无法在表单中嵌入脚本。表单中的触发器onFormSubmit也有一个事件对象: