Javascript。如果找到某些字符串,是否有更简便的方法来替换文本?

时间:2018-08-09 20:19:07

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

我正在使用Google Sheets脚本编辑器,正在尝试检查某个单元格是否包含以下文字:DROPPED,DENIED,WEBITE,POTENTIAL,SELECTED,TESTING,INACTIVE或ACTIVE。如果它包含“已删除”或“已拒绝”,则我需要说“拒绝”,如果它是“选择/测试/不活跃” /“活动”,则需要说“接受”,如果它是“网站” /“可能”则需要说“不完整”。

我的代码大致如下所示。我没有接受任何正式的培训,所以可能有点混乱,但是希望有一种更简单的方法可以实现。

if (('' + data1[i][1]).trim().toUpperCase() == "DROPPED" ||
    ('' + data1[i][1]).trim().toUpperCase() == "DENIED") {

        sh2.getRange(j + 1, 11, 1, 1).setValue("DENIED"); 

}else if (('' + data1[i][1]).trim().toUpperCase() == "SELECTED" ||
    ('' + data1[i][1]).trim().toUpperCase() == "TESTING" || 
    ('' + data1[i][1].trim().toUpperCase() == "INACTIVE" || 
    ('' + data1[i][1].trim().toUpperCase() == "INACTIVE" ||
    ('' + data1[i][1].trim().toUpperCase() == "ACTIVE") {

        sh2.getRange(j + 1, 11, 1, 1).setValue("ACCEPTED");

}else if (('' + data1[i][1]).trim().toUpperCase() == "WEBSITE" ||
    ('' + data1[i][1]).trim().toUpperCase() == "POTENTIAL") {

        sh2.getRange(j + 1, 11, 1, 1).setValue("INCOMPLETE");

我要从“交叉检查”脚本中提取此内容,该脚本在两个不同工作表之间比较单元格的内容,这就是为什么它使用sh2.getRange的原因。通常,我只是想知道是否有比那种庞大的if/elseif更加轻松的编写方法。如果没有,那很好,它将只需要运行几千次检查,所以如果我能够以最小化脚本执行的繁琐工作的方式来做到这一点,那就更好了。

我唯一能想到的就是在执行检查之前将其强制为大写,然后在完成检查后将其放回适当的大小写。我不知道继续做toUpperCase是否会花费更多时间。老实说,我什至不知道它是如何工作的,我只是知道它是如何工作的。我们把原始剧本外包了,我不知道他到底做了什么,他什么也没评论,所以我必须自己弄清楚。

2 个答案:

答案 0 :(得分:0)

sh2.getRange(j + 1, 11, 1, 1).setValue(ParseData(data1[i][1]));


function ParseData(data) {
    switch (('' + data).trim().toUpperCase()) {
        case "SELECTED":
        case "TESTING":
        case "INACTIVE":
        case "ACTIVE":
            {
                return "ACCEPTED";
            }
        case "DROPPED":
        case "DENIED":
            {
                return "DENIED";
            }
        case "WEBSITE":
        case "POTENTIAL":
            {
                return "INCOMPLETE";
            }
        default:
            {
                return "";
            }
    }
}

答案 1 :(得分:0)

创建3个分组数组 然后,您可以简单地检查value是否在数组之一中,然后打印相应的值。 例如:使用一个数组分组来获得拒绝的值。

let deniedArray = ['DENIED','DROPPED'];
let value = data1[i][1]).trim().toUpperCase();
if( deniedArray.includes(value) ){
   sh2.getRange(j + 1, 11, 1, 1).setValue("DENIED");
}