Javascript Google脚本:比较If语句中的变量

Javascript Google脚本:比较If语句中的变量,javascript,google-apps-script,Javascript,Google Apps Script,我需要比较一个循环中的两个变量,我使用下面的代码。它不起作用。当两个变量相同时,代码似乎无法找到。我不知道为什么 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet3 = ss.getSheetByName("Approved"); var sheet4 = ss.getSheetByName("ADD/REMOVE"); var list2 = sheet4.getRange(2

我需要比较一个循环中的两个变量,我使用下面的代码。它不起作用。当两个变量相同时,代码似乎无法找到。我不知道为什么

  var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet3 = ss.getSheetByName("Approved");
  var sheet4 = ss.getSheetByName("ADD/REMOVE");
  var list2 = sheet4.getRange(2,4,sheet4.getLastRow()-1,1).getValues();
  var list3 = sheet3.getRange(2,8,sheet3.getLastRow()-1,1).getValues();
  
  for(var i = 0;i<list2.length+1;i++){
    
    for(var j=0;j<list3.length;j++){
      
      var x = list3[j];
      var y = list2[i];
     
      console.log(x);
      console.log(y);

      if(x == y){sheet3.getRange(j+2,9).setValue("OK");console.log("HELLO!");}    
    }
  }
试试这个:

function one() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sheet3=ss.getSheetByName("Approved");
  var sheet4=ss.getSheetByName("ADD/REMOVE");
  var list2=sheet4.getRange(2,4,sheet4.getLastRow()-1,1).getValues().map(function(r){return r[0];});
  var list3=sheet3.getRange(2,8,sheet3.getLastRow()-1,1).getValues().map(function(r){return r[0];});
  for(var i=0;i<list2.length+1;i++){
    for(var j=0;j<list3.length;j++){
      if(list2[i] == list3[j]){
        sheet3.getRange(j+2,9).setValue("OK");
        console.log("HELLO!");
      }    
    }
  }
}
函数一(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet3=ss.getSheetByName(“批准”);
var sheet4=ss.getSheetByName(“添加/删除”);
var list2=sheet4.getRange(2,4,sheet4.getLastRow()-1,1.getValues().map(函数(r){return r[0];});
var list3=sheet3.getRange(2,8,sheet3.getLastRow()-1,1.getValues().map(函数(r){return r[0];});

对于(var i=0;i
i,两个列表中的值是什么?我修正了第一点,但仍然没有运气。两个列表中的值是电子邮件。例如:['xxx@gmail.com' ].x=y在3种情况下应该为真,但它永远不会为真。如果比较不为真,那么字符串就不完全相同。这意味着它们要么有大小写差异,要么有空格差异。然后它们是字符串数组,而不仅仅是字符串。数组只有在它们实际上是内存中的同一数组时才相等。不,但我能够o让list2[i][0]对list2[i]和list3[j][0]对list3[j]起作用。我完全不理解这一点,因为它只是一列数据,所以为什么我需要指定[0]?使用getValues()获得的所有值数组是以二维格式返回的。每个单元格都有一行和一列。注意到了。在其他情况下,我没有使用[0]并且仍在工作。在这些情况下,我将数组值与值进行比较。例如:list[I]=“x”。因此,我想我只需要在比较数组值与其他数组值时指定二维。
function one() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sheet3=ss.getSheetByName("Approved");
  var sheet4=ss.getSheetByName("ADD/REMOVE");
  var list2=sheet4.getRange(2,4,sheet4.getLastRow()-1,1).getValues().map(function(r){return r[0];});
  var list3=sheet3.getRange(2,8,sheet3.getLastRow()-1,1).getValues().map(function(r){return r[0];});
  for(var i=0;i<list2.length+1;i++){
    for(var j=0;j<list3.length;j++){
      if(list2[i] == list3[j]){
        sheet3.getRange(j+2,9).setValue("OK");
        console.log("HELLO!");
      }    
    }
  }
}