首页 > 解决方案 > 预定义文本之前的唯一 ID

问题描述

我有一个电子表格,我需要一个唯一的 id,其中第一个字符是字母,接下来的六个字符是日期,最后一个是 0-99 之间的唯一数字,格式需要为 2 个字符。我试图将行数增加 1,但问题是如果有人删除一行,则要输入的下一行将具有错误和重复的 ID。

提前致谢

function test(){


  var ss = SpreadsheetApp.openById('XXXXXXXXXXXXXXXXXXXXXXXX').getSheetByName('Sheet1');
  
  var range = SpreadsheetApp.getActiveSheet().getLastRow()+1;
  var formatDate = Utilities.formatDate(new Date(), "GMT+8", "ddMMyy");
  var id = "T"+formatDate+range;


  ss.appendRow([id])
}

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


您可以制作一个变量计数器并将其保存到脚本属性中。https://developers.google.com/apps-script/guides/properties

在每次运行时,您都可以获得计数器,增加它并添加到您的下一个 ID。并将计数器的最后一个值保存回属性。

像这样的东西:

function generate_ID() {
  var scriptProperties = PropertiesService.getScriptProperties();
  var counter = scriptProperties.getProperty('counter') || 0;

  var formatDate = Utilities.formatDate(new Date(), "GMT+8", "ddMMyy");
  var zero = (counter < 10) ? '0' : '';
  var id = "T" + formatDate + zero + counter++;
  SpreadsheetApp.getActiveSheet().appendRow([id])
  
  if (counter > 99) counter = 0;
  scriptProperties.setProperty('counter', counter);
}

推荐阅读