Javascript Google脚本编辑器| |不在IF语句中工作
谁能告诉我为什么if语句中的| | in不起作用。如果我取出| |,如果单元格编号不相等,它将生成所需的记录结果Javascript Google脚本编辑器| |不在IF语句中工作,javascript,if-statement,google-apps-script,google-sheets,Javascript,If Statement,Google Apps Script,Google Sheets,谁能告诉我为什么if语句中的| | in不起作用。如果我取出| |,如果单元格编号不相等,它将生成所需的记录结果 function ReformatSheet() { var GoFlowWHInv = SpreadsheetApp.openById("1pXWj_UOTVy_mFB5gRUPbDfzNJcAK09Z-mDyXPKUJaLE"); var Data = GoFlowWHInv.getDataRange() v
function ReformatSheet() {
var GoFlowWHInv = SpreadsheetApp.openById("1pXWj_UOTVy_mFB5gRUPbDfzNJcAK09Z-mDyXPKUJaLE");
var Data = GoFlowWHInv.getDataRange()
var Values = GoFlowWHInv.getDataRange().getValues()
Values[i][4]
for (var i = 0; i < Values.length; i++) {
if(Values[i][4] !== "Item Type" || Values[i][4] !== "Standard Product") {
Logger.log(Values[i][4]);
}
}
您应该使用&¬ | |。在这一行
if(Values[i][4] !== "Item Type" && Values[i][4] !== "Standard Product")
它将始终调用记录器,因为即使单元格包含Item Type或Standard Product,整个表达式的另一部分也将为true,并将打印到记录器
例如,如果单元格包含项类型
值[i][4]!==“项目类型”
计算结果为false
但是
值[i][4]!==“标准产品”
计算结果为真
false | | true的计算结果为true,因此整个if语句成功
所以你应该用这个来代替:
if(Values[i][4] !== "Item Type" && Values[i][4] !== "Standard Product")
您还可以反转逻辑并使用||
if(!(Values[i][4] === "Item Type" || Values[i][4] === "Standard Product"))
为什么不在
if
语句之前使用console.log(值[i][4])
来查看它为什么不工作?我使用了Logger.log(),因为这就是在脚本编辑器中控制台登录的方式。但是,它显示为文本是正确的。此外,我已改为只重视!=我也尝试过在文本之前或之后修剪文本,以防文本之前或之后出现空白。尝试以下调试代码的方法:我认为这与字符串类型或字符计数无关。如果我运行相同的If语句时只匹配一个条件。当我将or语句放入其中时,它的行为就好像没有正确读取条件一样。if语句将始终返回“true”值。在任何情况下,“if”中的两个条件之一始终为真。因为它是“或”,所以输出总是正确的。我理解你的意思。我想我很困惑,因为| | |不是这个或那个的意思吗&将计算这两个语句。因此,这两个实例都会给我一个错误的日志。在这种情况下,我不需要一个If-else语句。不管我是否理解你现在所说的。
if(!(Values[i][4] === "Item Type" || Values[i][4] === "Standard Product"))