首页 > 解决方案 > 如何使用应用程序脚本在 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);
            };
          };
        };
      };
    }; 

标签: google-apps-scriptgoogle-sheets

解决方案


假设您永远不需要超过 9999 个 ID,那么您可以使用以下步骤修改您的代码来完成此操作。请注意,此解决方案将允许您创建(几乎)无限数量的 ID 号码,但在 9999 之后,ID 号码的长度会有所不同。

  1. 使用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'
  1. 创建一个函数以从 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;
} 
  1. 修改您的原始代码以使用getUniqueIdNumber而不是date创建您的 id

改变

var newID = frontStr+date+backStr;

var idNumber = getUniqueIdNumber();
var newID = frontStr+idNumber;

请注意,您可以将frontStrand替换backStr为您想要的任何变量。


推荐阅读