javascript - 预定义文本之前的唯一 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])
}
解决方案
您可以制作一个变量计数器并将其保存到脚本属性中。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);
}
推荐阅读
- javascript - 有反应的 Dm 用户
- r - 时间序列缺少按频率进行的观察识别
- go - 去获取不从 BitBucket 下载存储库下的模块
- c++ - 如何专门化模板类的成员函数?
- gcc - 致命错误:在 Mac OSX 10.15.7 上找不到“jni.h”文件
- interface - 我很难理解 Solidity 中的接口。我错过了什么?
- autohotkey - AHK,如何通过列表更新 GUI 热键的值
- python - 有没有办法跳过熊猫中的行,直到 csv 说“飞行表”?
- typescript - 从对象中提取时如何保留类型,但考虑未定义的键?
- java - Sprint 数据使用多个数据模块在运行时注入具有不同实现的相同接口