Google 表单 - 为提交添加唯一标识符 - 不使用数组公式

Google Forms - Add unique identifier to submissions - not using an array formula

我以前使用数组公式为新提交的表单分配唯一 ID;但是有 27 列和 5000 多行数据,运行 数组公式的成本会干扰我的 onformsubmit 向阻止它发送电子邮件的一部分人发送自定义电子邮件。

我正在尝试分配值“Txxxxxx”,其中 xxxxxx 是第 22 列中提交的下一个编号,即 T05000 或 T00100

我不知道如何编写代码来执行此操作,有人有什么想法吗?我必须用 onformsubmit 触发它吗?这会干扰我已经必须发送电子邮件的 onformsubmit 吗?

我相信你的目标如下。

  • 您想在提交 Google 表单时放置一个计数器值。
  • 在您的情况下,计数器值以 T001216T001217 的格式放入“V”列。
    • 当前面的计数器是T001217时,提交Google表单时,你想把T001218的值放到提交行的“V”列。

在这种情况下,我想提出以下示例脚本。在这个示例脚本中,使用了 autoFill in Class Range 的方法。

示例脚本:

请将以下脚本复制并粘贴到从 Google 表单提交值的 Google 电子表格的容器绑定脚本中。和 please install the OnSubmit trigger to the function of onSubmit。这样,当提交 Google 表单时,像 T01218 这样的值将添加到“V”列。

function onSubmit(e) {
  const initialValue = "T001216"; // This is the initial value at the row 2.
  const counterColumn = 22; // 22 is the column "V".

  const range = e.range;
  const sheet = range.getSheet();
  if (range.rowStart == 2) {
    sheet.getRange(2, counterColumn).setValue(initialValue);
    return;
  }
  const previousRange = sheet.getRange(2, counterColumn, range.rowStart - 2);
  previousRange.autoFill(previousRange.offset(0, 0, range.rowStart - 1), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
}
  • 在此示例脚本中,当提交第一个值Google 表单时,initialValue 的值用作初始值。在此示例脚本中,由于您的示例图像,使用了 T001216 的值。

注:

  • 当提交 Google 表单时,此示例脚本由可安装的 OnSubmite 触发器 运行 执行。所以,当你在脚本编辑器中直接运行onSubmit的函数时,会出现TypeError: Cannot read property 'range' of undefined这样的错误。请注意这一点。

参考文献: