我正在使用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
是否会花费更多时间。老实说,我什至不知道它是如何工作的,我只是知道它是如何工作的。我们把原始剧本外包了,我不知道他到底做了什么,他什么也没评论,所以我必须自己弄清楚。
答案 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");
}