上周我在这里Increment ID from last row google apps script
问了一些问题一切正常,但是再一次,当我使用WP1-1000作为起始行时,结果仍然显示为WP1-0NaN
var riskid = mysheet.getRange(rlast,2).getValue();
if (riskid.length > 3){
// Extract number ex. 3
var riskidnb = parseInt(riskid.substring(1,riskid.length));
// Increase risk number +1
riskidnb++
// Convert to string "0004"
var s = "000" + riskidnb.toString();
// Write risk nb i.e. "R004"
mysheet.getRange(r,2).setValue("WP1-"+ s.substring(s.length-4))
}
我尝试从代码中更改/增加/减小 riskid.length , var s 和 s.length-4 ,但仍然徒劳无功。结果仍然显示为“ WP1-0NaN”
从我的问题来看,该字符串已经被转换为整数,但是当我将其更改为WP1时,它仍然显示为NaN。
此外,似乎我最后一个问题中的代码仅在解决方案中只有1个字母的情况下有效。
我真的试了两个小时,然后生气了。
答案 0 :(得分:2)
这是因为在上一个问题中,id
具有以下结构
的R-002
,但现在您在3
之前使用-
个字母:
WP1-1000
。现在,您可以使用4
代替1
,它将起作用:
parseInt(riskid.substring(4,riskid.length));
但是,更通用的方法是在-
之后加上子串,因此您可以使用indexOf
查找该位置:
parseInt(riskid.substring(riskid.indexOf('-')+1,riskid.length));
您可以对最后一行应用相同的逻辑。无需硬拷贝WP1-
,您只需获取-
之前并包括在内的文本即可:
riskid.substring(0,riskid.indexOf('-')+1);
var riskid = mysheet.getRange(rlast,2).getValue();
if (riskid.length > 3){
// Extract number ex. 3
var riskidnb = parseInt(riskid.substring(riskid.indexOf('-')+1,riskid.length));
// Increase risk number +1
riskidnb++
// Convert to string "0004"
var s = "000" + riskidnb.toString();
// Write risk nb i.e. "R004"
var start = riskid.substring(0,riskid.indexOf('-')+1);
mysheet.getRange(r,2).setValue(start + s.substring(s.length-4))
}