如果声明比较谷歌表中的两个单元格没有触发

时间:2017-08-13 04:29:45

标签: google-apps-script

这可能是一个愚蠢的问题,因为我是新手,可能会遗漏一些简单的事情。

我想比较两个使用getValues()获取的单元格。 我想知道为什么我的if语句没有触发。

这是我的代码

      for (j in phonesData) {
    var phonerow = phonesData[j];
    Logger.log('phonerow: ' + phonerow);
    for (k in unSubdata) {
    var unsubrow = unSubdata[k];
          Logger.log('unsubrow: ' + unsubrow);
      if (phonerow===unsubrow) {
         Logger.log('equals');
        phonesSheet.getRange(startRow + Number(j), 1).setValue("");
      }
    }
  }

以下是我的评论日志。似乎if应该触发!

[17-08-12 21:19:34:054 PDT] phonerow: (626) 234-7711
[17-08-12 21:19:34:055 PDT] unsubrow: (626) 235-3150
[17-08-12 21:19:34:055 PDT] unsubrow: (626) 235-3152
[17-08-12 21:19:34:055 PDT] phonerow: (626) 235-3150 <These are the same!
[17-08-12 21:19:34:056 PDT] unsubrow: (626) 235-3150 <These are the same!
[17-08-12 21:19:34:056 PDT] unsubrow: (626) 235-3152

1 个答案:

答案 0 :(得分:0)

我认为你会发现它以这种方式运作。如果从getValues()获得它,它就是一个二维数组。

function theirfunction()
{
  for (j in phonesData) {
    var phonerow = phonesData[j];
    Logger.log('phonerow: ' + phonerow);
    for (k in unSubdata) {
    var unsubrow = unSubdata[k];
          Logger.log('unsubrow: ' + unsubrow);
      if (phonerow[0]===unsubrow[0]) {
         Logger.log('equals');
        phonesSheet.getRange(startRow + Number(j), 1).setValue("");
      }
    }
  }
}

我实际上是用这个版本来解决的。

function myFunction() 
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var r0=sh.getRange(1,1,sh.getLastRow(),1);
  var r1=sh.getRange(1,2,sh.getLastRow(),1);
  var vA=r1.getValues();
  var vB=r0.getValues();
  for(var j=0;j<vA.length;j++)
  {
    for(var k=0;k<vB.length;k++) 
    {
      Logger.log('vB[' + k + '][0]=' + vB[k][0] + ' and ' + 'vA[' + j + '][0]=' + vA[j][0]);
      if(vA[j][0]==vB[k][0]) 
      {
         Logger.log('equals');
      }
    }
  }
}