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 表单时放置一个计数器值。
- 在您的情况下,计数器值以
T001216
和 T001217
的格式放入“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
这样的错误。请注意这一点。
参考文献:
我以前使用数组公式为新提交的表单分配唯一 ID;但是有 27 列和 5000 多行数据,运行 数组公式的成本会干扰我的 onformsubmit 向阻止它发送电子邮件的一部分人发送自定义电子邮件。
我正在尝试分配值“Txxxxxx”,其中 xxxxxx 是第 22 列中提交的下一个编号,即 T05000 或 T00100
我不知道如何编写代码来执行此操作,有人有什么想法吗?我必须用 onformsubmit 触发它吗?这会干扰我已经必须发送电子邮件的 onformsubmit 吗?
我相信你的目标如下。
- 您想在提交 Google 表单时放置一个计数器值。
- 在您的情况下,计数器值以
T001216
和T001217
的格式放入“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
这样的错误。请注意这一点。