google-apps-script - 如何使用应用程序脚本在 Google 表格中创建 Uniq ID?
问题描述
我正在考虑在 A 列输入信息并需要在 I 列上显示 ID 后创建一个简单的 Uniq ID。我想将其命名为 Trip Number 并使用 google sheet 脚本显示 Driver-John0001 等等。抱歉,我是新手,所以我不懂行话
我找到的当前代码有效,但现在我需要它有点不同。这是我的结果显示的驱动程序:1611710811706
我想拉 Driver-John0001。名称 John 由标记为 Driver 或 D 列的列生成我如何更改它以添加 D 列上的值 + 4 位不重复的数字?
function TripID () {
{ var sheetVals = [
["DriverLog","Driver:","",9,1]
];}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
//Loop through every sheet value
for(var i = 0; i < sheetVals.length; i++){
var sheetID = sheetVals[i][0],
frontStr = sheetVals[i][1],
backStr = sheetVals[i][2],
IDcol = sheetVals[i][3],
editCol = sheetVals[i][4];
var offset = IDcol - editCol;
if(sheet.getName() === sheetID){
var date = new Date().getTime();
var newID = frontStr+date+backStr;
//Check the location of the active cell
var selectedCell = ss.getActiveCell();
if( selectedCell.getColumn() === editCol) {
//Update the ID Column
var cellToChange = selectedCell.offset(0,offset);
if(cellToChange.isBlank()){
cellToChange.setValue(newID);
};
};
};
};
};
解决方案
假设您永远不需要超过 9999 个 ID,那么您可以使用以下步骤修改您的代码来完成此操作。请注意,此解决方案将允许您创建(几乎)无限数量的 ID 号码,但在 9999 之后,ID 号码的长度会有所不同。
- 使用PropertiesService初始化用于创建 ID 的计数器
function createIdProperty() {
PropertiesService.getScriptProperties().setProperty('idCounter', '0');
}
// run this once to create the idCounter property
createIdProperty();
// To test that your property was created you can run this
Logger.log(PropertiesService.getScriptProperties().getProperty('idCounter')); // logs '0'
- 创建一个函数以从 Script Properties 获取下一个 counterId 数字作为字符串,用 0 替换空数字(1 => '0001', 2 => '0002', 3 => '0003')
function getUniqueIdNumber() {
var currentIdNum = +PropertiesService.getScriptProperties().getProperty('idCounter'); //get counter as a number
currentIdNum++; // increment counter by 1
currentIdNum+=''; // convert counter back to a string
PropertiesService.getScriptProperties().setProperty('idCounter', currentIdNum); // store the new counter in properies
while (currentIdNum.length < 4) {
currentIdNum = '0'+currentIdNum;
}
return currentIdNum;
}
- 修改您的原始代码以使用
getUniqueIdNumber
而不是date
创建您的 id
改变
var newID = frontStr+date+backStr;
到
var idNumber = getUniqueIdNumber();
var newID = frontStr+idNumber;
请注意,您可以将frontStr
and替换backStr
为您想要的任何变量。
推荐阅读
- groovy - 创建 Scriptrunner 作业以列出所有存储库的挂钩
- html - 如何更改 html 电子邮件模板中的白色侧边栏颜色
- java - Java反射:对象不是声明类的实例
- meshlab - 如何在 meshlab 上导入每顶点颜色 FALSE(每面颜色)的 VRML 模型
- php - 我不明白为什么 PDO 插入 ' 代替单引号
- git - 如果我之前没有提交代码,我可以撤消合并吗?
- c# - 如何在 Swagger 中为 .Net Core 使用 @ApiImplicitParams?
- vue.js - GSAP:无法读取未定义的属性“样式”
- intellij-idea - 字符串比较挂在 IntelliJ 中用于大字符串
- python - ValueError:张量的形状 (26, 400) 与提供的形状 [26, 200] 不兼容