gpt4 book ai didi

google-apps-script - 每个用户只允许提交一个 Google 表单

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

我有一项调查,预计不会有重复回复。似乎没有任何方法可以在 Google Forms 控件中进行设置,因此我需要编写一个脚本。如何确保每个唯一用户名只允许提交一个 Google 表单?

考虑一个有简单选择的调查。如果一个人提交了“选择A”,后来又重复调查提交了“选择B”,我想忽略后一个提交;刚刚发送的选项 (B) 将从 Google Sheet 中删除。

最佳答案

您无法阻止用户多次提交,但正如您所说,您可以删除后续提交。

让我们假设“用户名”被放置在 B 列中,并带有该标题。如果您在 Google Apps 域中,则可以选择自动收集用户名。在域之外,您将不得不依赖受访者始终如一地填写他们的用户名。

以下功能应设置为电子表格中的编程表单提交事件触发器。当收到新的提交时,用户

function onFormSubmit (event) {
var sheet = event.range.getSheet();
var data = sheet.getDataRange().getValues();

// Read usernames from column B, into string
var userNames = sheet.getDataRange()
.offset(1, 1, sheet.getLastRow()-1,1)
.getValues()
.join();

// Use a regex search to count occurrences of the current
// username. There should be just 1.
var re = new RegExp(event.namedValues["Username"], "g");
var count = userNames.match(re).length;

// Delete submission if user previously submitted.
if (count != 1) {
sheet.deleteRow(event.range.getRow());
}
}

注意事项
  • 这将从接受表单响应的电子表格中删除条目;它不会影响附加到表单本身的回复,可通过 Form.getResponses() 获得。 .
  • 随着提交数量的增加,这将变得更慢。可以通过消除搜索以前提交的需要来优化它,例如通过缓存所有唯一的用户名。
  • 触发函数接收到的提交数据有可能与读入 data 的电子表格版本不同步。变量,眩光事件。结果将是仍然允许重复条目。可以通过比较 event.range 中的行号来缓解这种担忧。最后一行来自 .getDataRange() ,并处理差异。
  • 关于google-apps-script - 每个用户只允许提交一个 Google 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767416/

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