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



我正在使用Google表格脚本编辑器,我正在尝试检查单元格是否包含文本"丢弃","拒绝","网站","潜在","已选择","测试","非活动"或"活动"。如果它包含"丢弃"或"拒绝",我需要

它说"拒绝",如果它说"已选择/测试/非活动/活动",则需要说"已接受",如果它说网站/潜力,则需要说"不完整"。我的代码大致如下所示。我没有任何正式的培训,所以这可能是一团糟,但希望有一种更简单的方法可以做到这一点。

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是否会花费更多时间。 老实说,我不完全知道它是如何工作的,我只知道它确实如此。我们把原来的剧本外包出去了,我不知道他到底做了什么,他没有发表任何评论,所以我必须自己弄清楚。

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 "";
}
}
}

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

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

最新更新