从最后一行Google Apps脚本再次递增ID

时间:2020-11-12 11:31:28

标签: javascript google-apps-script google-sheets

上周我在这里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个字母的情况下有效。

我真的试了两个小时,然后生气了。

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))
  }
相关问题