脚本拆分文本并向值加 1 不记录正确的数字

Script splits text and adds 1 to value doesnt record the correct number

我一直都不知道这段代码有什么问题,它记录了正确的数字,但没有正确地添加数字,除非我自己输入。

https://docs.google.com/spreadsheets/d/1kxIzE_HcPWd82LpGqCXNxg0yczhcnA6yOYRnB4GuAZo/edit?usp=sharing

var column = 0;
  var HEADER_ROW_COUNT = 1;

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var worksheet   = spreadsheet.getSheetByName("RawData");
  var rows        = worksheet.getDataRange().getNumRows();
  var vals        = worksheet.getSheetValues(1, 1, rows, 1);

  var max = 0;

  for (var row = HEADER_ROW_COUNT; row < vals.length; row++) {  
     var splitstring = vals[row][0].toString().split(" ");
 
  
    var splitstring = vals[row][0].toString().split(" ");
    var id = splitstring[1];
    
   Logger.log(id)
    if (max < id) {
      Logger.log(id)
        max = id+1;
         Logger.log(max)
    }
  }
  var LastRow = worksheet.getLastRow();
 
  
 
  worksheet.getRange(LastRow+1,1).setValue("PO# " + max.toString());

虽然我不确定我是否能正确理解你的目标,但在你的脚本中,var splitstring = vals[row][0].toString().split(" "); 检索到的 var id = splitstring[1]; 是字符串类型。我认为这可能是您遇到问题的原因。当这反映到您的脚本中时,它会变成如下。

发件人:

var id = splitstring[1];

Logger.log(id)
if (max < id) {

收件人:

var id = Number(splitstring[1]);
Logger.log(id)
if (max <= id) {

注:

  • 例如,在您的脚本中,您也可以使用 var max = Math.max(...vals.map(([v]) => Number(v.split(" ").pop()))) + 1; 代替 for 循环。

参考:

试试这个:

function myfunk() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName("RawData");
  Logger.log(parseInt(sh.getRange(sh.getLastRow(), 1).getValue().split(' ')[1]) + 1);
}