【问题标题】:Auto-increment ID in Google spreadsheet using Script使用脚本在 Google 电子表格中自动增加 ID
【发布时间】:2021-03-22 23:39:51
【问题描述】:

我有下面的代码。在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 函数由于某种原因没有返回正确的值。有人可以帮忙吗?

【问题讨论】:

  • 你能显示一个示例文件的屏幕截图吗?
  • @NaziA 刚刚做到了。在 A 列和 B 列中是我得到的结果,在 B 和 C 列中是我希望看到的结果。我突出显示了第 9 行和第 10 行的区别。
  • 在下面添加了答案,应该可以回答您的问题。如果对您有帮助,请随意选择答案并投票。

标签: google-apps-script auto-increment


【解决方案1】:

在检查您的代码时,我发现您没有使用 toString 作为方法,导致它返回的数字长度始终为 1。

只需将其更改为 toString() 即可。 我已经对它进行了测试,它确实达到了您的预期。

样本输出:

更多参考,请查看usage

【讨论】:

  • 没问题,很高兴为您提供帮助。其他方法也很好用。非常干净的代码。清理干净。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多