【发布时间】:2021-06-05 04:44:44
【问题描述】:
我是 Google Apps 脚本的新手,刚刚开始了解它的工作原理。一个团队成员为我正在做的一些工作写了一个简单的脚本。该脚本本质上是在任何一组允许的用户(可能会有所不同)通过 Google 表单向“表单响应 1”电子表格提交输入时触发的。
基本上,我有一个用户填写然后提交的表单。提交后,脚本检查活动行,代码将单元格 W2 的编号加 1(这是一个“请勿编辑”单元格,并将 W2 替换为新编号,然后检查唯一 ID 字段是否在Active Row 为空,然后将其替换为连接的字母数字 ID。即,它为一组字母前缀添加前缀,并从同一表单上的单元格 W2 中获取数字输入以创建新的唯一 ID。
在团队成员离开之前,脚本一直运行良好,我从 Google 工作表中删除了她的访问权限,而脚本根本没有任何更改。我一直在争先恐后地试图弄清楚在那之后发生了什么,因为自从访问被删除后,当我没有对我的代码进行任何更改时。我搜索了很多不同的地方,似乎找不到问题所在。
如果我将它发布在新的谷歌表格上,它工作正常.. 但不是在已经有大约 900 个关键条目的这张表格上。
欢迎任何指导。脚本如下。帮助!
//Logger.log(SpreadsheetApp.getActiveSpreadsheet().getUrl());
//Logger.log(SpreadsheetApp.getActive().getUrl());
// Get the active sheet
var sheet = SpreadsheetApp.getActiveSheet();
// Get the active row
var row = sheet.getActiveCell().getRowIndex();
// Get the next ID value. NOTE: This cell should be set to the last record counter value
var id = sheet.getRange("X2").getValue()+1;
Logger.log("HKG0"+id);
// Check if ID column is empty
if (sheet.getRange(row, 1).getValue() == "") {
// Set new ID value
sheet.getRange(2, 24).setValue(id);
sheet.getRange(row, 1).setValue("HKG0"+id);
}
}
【问题讨论】:
-
为什么你的
id没有从最后一行获取值,否则即使 +1 也会返回重复的 id -
该代码假定活动单元格来自最后一行,并将 W2 替换为该行索引中的 +1.. 至少,它曾经.. 不是最干净的代码,我被告知..但它正在工作:(
标签: excel google-apps-script google-sheets form-submit unique-key