我正在为一个使用GAS (Google应用脚本)的非政府组织创建一个支持表。
我已经成功地用下面的代码创建了一个唯一的参考号。并将我在参考数字中使用的递增数字存储在隐藏/受保护的工作表上。
问题是添加至少3个前导零
示例:票证2应该有一个引用T0002
但当前返回的是T2
下面是我的代码:
function onSelect(event) {
//This function creates a unique reference number
//When a new support item is logged
//It then stores the newest reference number on a locked sheet
//Initialising Googlesheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
var ws = ss.getSheetByName("Ticket");
var wt = ss.getSheetByName("Ref");
//Retrieves the row number that is being edited
var rownum = r.getRow();
//Initializing the first cell in the row to return its value
var data = ws.getRange(rownum,1).getValues();
//Checks if the data in the cell is empty
if(data == ""){
//When the cell is empty it gets the latest Reference Number
//Execute the GetLatest() Function
var gl = GetLatest();
// Increment the latest Reference Number by 1
var newgl = gl + 1;
//The new Reference number is now stored
wt.getRange(1,1).setValue(newgl);
// Creates the Reference Number that will be written in the Reference column on the Support Log
// Execute NewRef() function
var nr = NewRef();
//Writes the new Reference number in the designated cell
ws.getRange(rownum,1).setValue(nr);
}
}创建了一个单独的函数,该函数获取存储在"Ref“页上的最新参考号。
在隐藏工作表的单元格A1中,我存储了值"0001“。
function GetLatest(){
// This function fetches the latest reference number stored
//Initialising Googlesheet and cell with the value
var ss = SpreadsheetApp.getActive();
var ws = ss.getSheetByName("Ref");
var row = 1;
var col = 1;
// fetches the value
var value = ws.getRange(row, col).getValue();
return value;
}为唯一的参考号插入和创建字符串
function NewRef(){
//This function creates the Reference number that the user sees on the Support Log
//Initialising Googlesheet
var ss = SpreadsheetApp.getActive();
var ws = ss.getSheetByName("Ref");
//Fetches latest Reference number
var lr = GetLatest();
//Creates support log reference number
var cnr = "T" + lr;
return cnr;
}发布于 2021-08-25 13:41:08
如果我没理解错的话,您的lr变量包含最新的引用。如果你在它上面做了下面的var cnr = addLeadingZeros(lr)函数,你就会很好。请运行下面的代码片段,并确认它按预期工作:
const numbers = [7, 12, 34, 321, 4567, 89981];
const numLen = 4;
const addLeadingZeros = num =>
'0'.repeat(numLen - (num + '').length >= 0 ? numLen - (num + '').length : 0) +
(num + '');
numbers.forEach(num => console.log(`${num} becomes ${addLeadingZeros(num)}`));
https://stackoverflow.com/questions/68923268
复制相似问题