gpt4 book ai didi

google-apps-script - 如果您有多个表单向单个电子表格发送响应,那么 google 如何知道在提交表单时执行哪个 onsubmit 触发器

转载 作者:行者123 更新时间:2023-12-04 21:16:11 25 4
gpt4 key购买 nike

我需要有人澄清。

我了解多个表单可以将其回复发送到新 Google 表格中的单个电子表格。

所以我创建了两个 Google 表单,并让它们都将他们的回复发送到一个新的 Google 电子表格。然后我在电子表格中(而不是在表单中)创建了两个脚本。每个脚本都设置为在提交表单时触发。这是两个简单的脚本。

function form2() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
sheet.getRange(sheet.getLastRow(),3).setValue("This is for test 2");
}

function form1() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 2");
sheet.getRange(sheet.getLastRow(),3).setValue("This is for test 1");
}

不知何故,谷歌正在为适当的表单运行正确的脚本!怎么可能?即有人提交form1时自动触发form1(),有人提交form2时自动触发form2()。

所以我的问题是,“Google 如何知道提交表单时要运行哪个脚本?”。

谢谢。如果可能,我想将所有表单数据发送到一个电子表格,但我不想设置不可靠的内容。

-杰

感谢 wchiquito 的回答。我想我在你的帮助下解决了这个问题。这是我认为正在发生的事情。如果有人可以证实或反驳我的结论,那对我来说将是一个很大的帮助。

在 Google Apps 中有两种创建表单的方法。
  • 直接创建表单。
  • 首先创建一个电子表格,然后通过从电子表格的菜单栏中选择“表单”和“创建表单”来创建表单。

  • 但是无论您如何创建表单,最终都会有两个文件。一种用于表单,一种用于从表单接收数据的电子表格。如果您将脚本放在表单和电子表格中,则在提交表单时两者都会运行。不同之处在于表单中的任何脚本都将受到权限限制。也就是说,表单中的任何脚本都无法访问电子表格,因为电子表格中的脚本将拥有您拥有的所有权限(只要在您的帐户下设置触发器)。

    现在...

    Google 云端硬盘中的新表格现在可以接收来自多个表单的回复,而 Google 云端硬盘中的旧表单只能接收一个表单回复。这最终导致我的困惑,wchiquito 的答案是正确的。似乎接收电子表格将运行任意数量的 onsubmit 脚本,但无论是一个还是多个,它们都将在电子表格接收的所有表单数据上运行。也就是说,当接收电子表格从任何表格接收表格数据时,电子表格中的所有提交脚本都将被执行。

    最佳答案

    应该执行这两个脚本,也许通过使用文字字符串,更改是不可见的。

    尝试使用以下更改运行:

    function form2(e) {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 1');
    sheet.getRange(sheet.getLastRow(), 3).setValue(e.values);
    }

    function form1(e) {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 2');
    sheet.getRange(sheet.getLastRow(), 3).setValue(e.values);
    }

    关于google-apps-script - 如果您有多个表单向单个电子表格发送响应,那么 google 如何知道在提交表单时执行哪个 onsubmit 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23164835/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com