使用脚本在 Google 电子表格中自动递增 ID
Auto-increment ID in Google spreadsheet using Script
我有下面的代码。它应该在 col B 中输入“是”时增加 ID。
它在一定程度上完成了工作,但它总是保持零的数量相同,而当 ID 达到 10s 时它应该减少 1,当它达到 100s 时减少 2 等等。
function onEdit(e){
var AUTOINC_COLUMN = 0;
var HEADER_ROW_COUNT = 1;
var zeros = "000000";
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var worksheet = spreadsheet.getSheetByName("Sheet6");
var rows = worksheet.getDataRange().getNumRows()-1;
var vals = worksheet.getSheetValues(1, 1, rows+1, 2);
var r = worksheet.getActiveCell();
if (r.getColumn() == 2 && worksheet.getName()=='Sheet6' && r.getValue() == "Yes") {
for (var rowx = HEADER_ROW_COUNT; rowx < vals.length; rowx++) {
try {
var id = vals[rowx][AUTOINC_COLUMN];
Logger.log(id);Logger.log((""+id).length ===0);
if ((""+id).length === 0) {
worksheet.getRange(rowx+1, AUTOINC_COLUMN+1).setValue("STU" + ("0".repeat(zeros.length - rowx.toString.length)) + rowx);
}
} catch(ex) {
}
}
}
}
似乎由于某种原因,toString 函数没有返回正确的值。有人可以帮忙吗?
在检查您的代码时,我发现您没有使用 toString
作为方法,导致它 return 数字长度始终为 1。
只需将其更改为 toString()
即可。
我已经对它进行了测试,它确实达到了您的预期。
示例输出:
有关其他参考,请参阅 usage
我有下面的代码。它应该在 col B 中输入“是”时增加 ID。 它在一定程度上完成了工作,但它总是保持零的数量相同,而当 ID 达到 10s 时它应该减少 1,当它达到 100s 时减少 2 等等。
function onEdit(e){
var AUTOINC_COLUMN = 0;
var HEADER_ROW_COUNT = 1;
var zeros = "000000";
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var worksheet = spreadsheet.getSheetByName("Sheet6");
var rows = worksheet.getDataRange().getNumRows()-1;
var vals = worksheet.getSheetValues(1, 1, rows+1, 2);
var r = worksheet.getActiveCell();
if (r.getColumn() == 2 && worksheet.getName()=='Sheet6' && r.getValue() == "Yes") {
for (var rowx = HEADER_ROW_COUNT; rowx < vals.length; rowx++) {
try {
var id = vals[rowx][AUTOINC_COLUMN];
Logger.log(id);Logger.log((""+id).length ===0);
if ((""+id).length === 0) {
worksheet.getRange(rowx+1, AUTOINC_COLUMN+1).setValue("STU" + ("0".repeat(zeros.length - rowx.toString.length)) + rowx);
}
} catch(ex) {
}
}
}
}
似乎由于某种原因,toString 函数没有返回正确的值。有人可以帮忙吗?
在检查您的代码时,我发现您没有使用 toString
作为方法,导致它 return 数字长度始终为 1。
只需将其更改为 toString()
即可。
我已经对它进行了测试,它确实达到了您的预期。
示例输出:
有关其他参考,请参阅 usage