首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谷歌应用脚本:创建唯一的RefNo,不能从受保护的工作表中正确写入递增的新refno,无法向RefNo添加前导零

谷歌应用脚本:创建唯一的RefNo,不能从受保护的工作表中正确写入递增的新refno,无法向RefNo添加前导零
EN

Stack Overflow用户
提问于 2021-08-25 12:49:33
回答 1查看 42关注 0票数 1

我正在为一个使用GAS (Google应用脚本)的非政府组织创建一个支持表。

我已经成功地用下面的代码创建了一个唯一的参考号。并将我在参考数字中使用的递增数字存储在隐藏/受保护的工作表上。

问题是添加至少3个前导零

示例:票证2应该有一个引用T0002

但当前返回的是T2

下面是我的代码:

代码语言:javascript
复制
 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“。

代码语言:javascript
复制
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;
}

为唯一的参考号插入和创建字符串

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2021-08-25 13:41:08

如果我没理解错的话,您的lr变量包含最新的引用。如果你在它上面做了下面的var cnr = addLeadingZeros(lr)函数,你就会很好。请运行下面的代码片段,并确认它按预期工作:

代码语言:javascript
复制
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)}`));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68923268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档