Javascript Google脚本编辑器| |不在IF语句中工作

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

谁能告诉我为什么if语句中的| | in不起作用。如果我取出| |,如果单元格编号不相等,它将生成所需的记录结果

   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"))