简单的for循环,if语句和输出消息

时间:2018-10-21 18:16:19

标签: javascript for-loop if-statement google-apps-script google-sheets

我认为这很简单,但是我是新手,所以我不确定从这里去哪里:)

我有一个Google表格,其中包含一些数据(相当大的表格)。我想要一个脚本来检查一个单元格(第I列)中的数字是否大于同一行但另一列(第D列)中的数字。

想象一下两行有5行的列:D列=(3、3、3、3、3、3)和I列=(2、2、7、2、2)

在此示例中,我希望脚本告诉我“行3”有问题,因为第I列第3行的数字大于第D列第3行的:)

这就是我所拥有的:

    function Check() {

      var spreadsheet = SpreadsheetApp.getActive();
      var sheet = spreadsheet.getActiveSheet();
      var lr = sheet.getLastRow();
      var Summary;

      for (var i=6; i<lr; i++) {
        if (sheet.getRange(i,9) > sheet.getRange(i,4)){
          summary.setvalue("Problem")

         }  
      } 

    }

我希望它从第6行开始,因为我的数据从这里开始。我只检查I列(因此为9)和D列(因此为4)

我不确定该如何处理我的for循环和If语句?现在,代码正在检查第4列(D)和第I列(9)中的每一行,但是,只要第9列中的数字大于第4列中的数字,我如何存储该值?我还想要一个输出,在代码完成后,所有有问题的行都输出?如果我们没有任何问题,我想显示一条消息:“没问题”

有人可以从这里引导我吗?

1 个答案:

答案 0 :(得分:2)

如果您的输出可以在工作表中设置(请在“ J”列中说),则可以使用此方法:

function Check() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet       = spreadsheet.getActiveSheet();
  var maxRows     = sheet.getMaxRows(); // get the number of rows
  var startRow    = 6;
  var diffCol1    = 'D';
  var diffCol2    = 'I';
  var outputCol   = 'J';
  var outputStrOK = 'no problem';
  var outputStrKO = 'problem';
  var outputRange = []; // stored values
  for (var i = startRow; i <= maxRows; i++) {
    var valueA = sheet.getRange(diffCol2+i).getValue();
    var valueB = sheet.getRange(diffCol1+i).getValue();
    // add controls on values then
    if (valueA > valueB) {
      outputRange.push([outputStrKO]);
    } else {
      outputRange.push([outputStrOK]);
    }
  }
  // setting a range of values is much faster than fulfilling cell by cell in loop
  sheet.getRange(outputCol+startRow+':'+outputCol+maxRows).setValues(outputRange);
}

因此,您应该这样做:

#|D|I|J
6|9|4|problem
7|4|9|no problem