JavaScript:If语句在循环内不起作用

JavaScript:If语句在循环内不起作用,javascript,google-apps-script,Javascript,Google Apps Script,我正在使用Google脚本编写以下代码(目前的测试)以将数据从一个电子表格传递到另一个电子表格。代码的传递工作得很好,但是我的第二个For循环(我打算使用它来检测重复值并避免传递这些行)不起作用。 检查日志,我发现即使“I”和“j”值在If块内正确传递,“If(sheetsIDHome[I]==sheetsIDTarget[j])语句从未触发,即使我确认这两个值相同。 任何帮助都将不胜感激,提前谢谢 function move(){ var homeBook = SpreadsheetAp

我正在使用Google脚本编写以下代码(目前的测试)以将数据从一个电子表格传递到另一个电子表格。代码的传递工作得很好,但是我的第二个For循环(我打算使用它来检测重复值并避免传递这些行)不起作用。 检查日志,我发现即使“I”和“j”值在If块内正确传递,“If(sheetsIDHome[I]==sheetsIDTarget[j])语句从未触发,即使我确认这两个值相同。 任何帮助都将不胜感激,提前谢谢

function move(){

  var homeBook = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = homeBook.getSheets()[0];//Sheet where my Home data is stored
  var limit = sheet.getLastRow(); //number of rows with content in them

  var evento = sheet.getRange(2, 1, limit-1).getValues(); //Even titles array
  var descript = sheet.getRange(2,2,limit-1).getValues(); //Event Descriptions array
  var tags = sheet.getRange(2,3,limit-1).getValues(); //Tags array
  var sheetsIDHome = sheet.getRange(2,4,limit-1).getValues(); //ID's array


  var targetBook = SpreadsheetApp.openById("1t3qMTu2opYffLmFfTuIbV6BrwsDe9iLHZJ_ZT89kHr8"); // Traget Workbook 
  var target = targetBook.getSheets()[0]; //Sheet1, this is my Target sheet
  if (target.getLastRow() > 1){
    var sheetsIDTarget = target.getRange(2, 4,target.getLastRow()-1).getValues();}
  else{
    var sheetsIDTarget = target.getRange(2, 4, 1).getValues();}
  var targetRow = target.getLastRow()+1; //Target row to start pasting content


   for (var i = 0; i < evento.length; i++) { //Loops throught every value from my Home sheet in order to pass it to my Target Sheet

     var isKlar = 1; //This works as a switch, data passing will not activate if isKlar set to 0

     Logger.log("Switch is: "+isKlar);

     for(var j = 0; j < sheetsIDTarget.length; j++){ //While having a certain "i" value in place, will loop though all my values in my target array using the counter "j"

       if(sheetsIDHome[i] == sheetsIDTarget[j]){ //If the ID of my curent row from Home matches any of the values in my target sheet, my "isKlar" switch should turn off and the break loop will be exited.          
         Logger.log("If Activated");
         isKlar = 0;
         break;}
       else{Logger.log("ID's: "+sheetsIDHome[i] + " vs " + sheetsIDTarget[j]);}
     }

       if(isKlar === 1){     //data passing will not activate if isKlar set to 0
         //pass data to the Target sheet
         target.getRange(targetRow,1).setValue(evento[i]);
         target.getRange(targetRow,2).setValue(descript[i]);
         target.getRange(targetRow,3).setValue(tags[i]);
         target.getRange(targetRow,4).setValue(sheetsIDHome[i]);
         targetRow++; //select the next available row in ny Target sheet
       }     
     }
   }
函数移动(){
var homeBook=SpreadsheetApp.getActiveSpreadsheet();
var sheet=homeBook.getSheets()[0];//存储我家数据的工作表
var limit=sheet.getLastRow();//包含内容的行数
var evento=sheet.getRange(2,1,limit-1).getValues();//偶数标题数组
var descript=sheet.getRange(2,2,limit-1).getValues();//事件描述数组
var tags=sheet.getRange(2,3,limit-1).getValues();//标记数组
var sheetsIDHome=sheet.getRange(2,4,limit-1).getValues();//ID的数组
var targetBook=SpreadsheetApp.openById(“1t3qMTu2opYffLmFfTuIbV6BrwsDe9iLHZJ_ZT89kHr8”);//Traget工作簿
var target=targetBook.getSheets()[0];//Sheet1,这是我的目标工作表
如果(target.getLastRow()>1){
var sheetsIDTarget=target.getRange(2,4,target.getLastRow()-1).getValues();}
否则{
var sheetsIDTarget=target.getRange(2,4,1).getValues();}
var targetRow=target.getLastRow()+1;//开始粘贴内容的目标行
for(var i=0;i

编辑。-现在我正在用相同的数字(例如1、2、3、4)测试两个ID数组。我的else语句中的日志确实显示了两个数组的正确读取值。。。我原以为这是一个范围问题,但现在我不确定问题在哪里。

问题是一个工作表范围。getValues()返回一个数组,而不是一个值数组


值[0]是第一行,值[0][0]是该第一行中的第一个值。了解这一点,重新编写代码。

sheetsIDHome[i]
sheetsIDTarget[j]
的记录值是多少?现在,我正在使用相同的数字(例如1、2、3、4)测试这两个ID数组。我的else语句中的日志确实显示了两个数组的正确读取值。。。我认为这是一个范围问题,但现在我不确定问题在哪里。这两个值的类型是否相同。。。它们是相同类型的值。目前只有数字。我试着用“==”和“==”来做逻辑运算。我也尝试过用Switch语句来做,结果完全一样。非常感谢你,Zig,我从来没有想到过。问题解决了。