【问题标题】:Does a Google Form Trigger on Submit happen before or after the push into a spreadsheet提交时的 Google 表单触发器是在推送到电子表格之前还是之后发生
【发布时间】:2021-10-05 19:23:21
【问题描述】:

如果我想更改 Google 表单中的答案,比如对多项选择项做出回复,我该怎么做?我可以在提交时触发脚本的执行,但它是在推送到电子表格之前还是之后发生?

以下代码在提交时触发,提交也会导致表单数据被推送到链接的电子表格中。电子表格更新了,但结果并没有达到我想要的效果。

function setPrice() {
  var ws = SpreadsheetApp.openByUrl("spreadsheet_link");
  var ss = ws.getSheetByName("BPS")
  var inventory = ss.getRange("A2:A280").getValues();
  var prices = ss.getRange("B2:B280").getValues();
  var prices_no_bp = ss.getRange("C2:C280").getValues();

  var form = FormApp.getActiveForm();
  var formItems = form.getItems();

  var item_selected = form.getItemById("Question 1").asListItem();
  var bp_selected = form.getItemById("Question 2").asListItem();
  var price_selected = form.getItemByID("Price").asMultipleChoiceItem;
  var formResponse = form.createResponse();

// scan the inventory list, find the item selected, and return the price
  var this_price = 999999999;
  var sl = 8;
  for (var i = 0;i < sl; i++) {
    if (inventory[i] == item_selected) {
      if (bp_selected == "Yes") {
        this_price = prices_no_bp[i];
      } else {
        this_price = prices[i];
      }
    }
  }

// Create the multiple choice entry
// Change the response to the same value
// Attach the response to the form
  price_selected.createChoice(this_price);
  var response = price_selected.createResponse(this_price);
  formResponse.withItemResponse(response)

// Responses are ready for submission

}

此代码不起作用是因为我在将响应推送到电子表格后更改了响应,还是因为我以正确的顺序执行此操作但没有真正更改响应?

【问题讨论】:

  • 您必须在打开和提交表单之前更新表单
  • 您的代码看起来会根据item_selected 的选择以及prices_no_bponFormSubmit() 触发期间是否设置为Yes/No 来更新price_selected。如果您可以向我们展示您的代码运行结果以更好地理解您的问题,这将有所帮助。 AFAIK,onFormSubmit(),一旦触发,将仅收集用户在表单上输入的数据,因此,在提交期间以编程方式在最后一分钟更新price_selected 答案很可能不起作用。
  • 我可以确认这一点。经过一些调试后,表单响应会在触发代码运行之前提交到响应电子表格。因此,不可能在推送之前更改表单响应。但是,可以解析和读取刚刚推送到响应电子表格的结果,这就是我所做的。

标签: google-apps-script google-sheets triggers


【解决方案1】:

在触发的代码运行之前,响应会被推送到响应电子表格中。因此,通过 onSubmit 触发器以编程方式更改响应是没有意义的。最好的选择是改用响应电子表格,因为那里有数据可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2023-04-02
    • 2013-08-15
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多