脚本拆分文本并向值加 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);
}
我一直都不知道这段代码有什么问题,它记录了正确的数字,但没有正确地添加数字,除非我自己输入。
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);
}