在这种条件下我正在做什么?

时间:2018-12-11 08:16:00

标签: google-apps-script google-sheets triggers

昨天我问了一个有关我正在执行的脚本的问题,因为我无法检测到正在修改的单元格,因此我直接链接到该问题:

Stuck with Google spreadsheet script

现在我正在尝试使脚本成为条件脚本,但是我无法区分watchRange1和watchRange2,这是两个不同的单元格区域,它们具有特定的单元格,我要在其中写入每个范围的修改时间。

现在,即使我修改了其他范围,条件语句也总是在watchRange1的单元格中写入修改时间。

你能告诉我我在做什么吗?

这是我要提到的脚本:

function onEdit(e){
  var curDate = Utilities.formatDate(new Date(), "GMT+01:00", "hh:mm");
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Test2');
  var range = e.range;
  //var colIndex = range.getColumn();
  var colIndex = range.getColumnIndex(); //Same as getColumn()
  var rowIndex = range.getRowIndex(); //Same as getRow()
  var DateCol1 = "K9"; //Cell you want to have the date
  var DateCol2 = "U9"; //Cell you want to have the date

  var watchRange1 = { 
    top : 11,         // start row
    bottom : 109,     // end row
    left : 3,        // start col
    right : 11,        // end col
  };

  var watchRange2 = { 
    top : 11,         // start row
    bottom : 109,     // end row
    left : 13,        // start col
    right : 21,        // end col
  };

  if(colIndex >= watchRange1.left || colIndex <= watchRange1.right && 
  rowIndex >= watchRange1.top || rowIndex <= watchRange1.bottom && 
  e.getValue() != 0){

    SpreadsheetApp.getActiveSheet().getRange(DateCol1).setValue(curDate); 
    //Write the date in the cell

  }else if (colIndex >= watchRange2.left || colIndex <= watchRange2.right && 
  rowIndex >= watchRange2.top || rowIndex <= watchRange2.bottom && 
  e.getValue() != 0){

    SpreadsheetApp.getActiveSheet().getRange(DateCol2).setValue(curDate); 
    //Write the date in the cell

  }else{

    SpreadsheetApp.getActiveSheet().getRange(DateCol1).setValue("Error");

  };
}

1 个答案:

答案 0 :(得分:0)

您使用的是“或” ||,而不是“和” &&颜色大于或等于,或者小于或等于。在第一个范围内,颜色将始终大于。这意味着第一个if语句始终为true(如果您在两个范围中的任何一个中进行编辑)。

if(colIndex >= watchRange1.left || //should be &&

colIndex <= watchRange1.rigth && //right is misspelled
rowIndex >= watchRange1.top || //should be &&
rowIndex <= watchRange1.bottom && 
e.value != 0) //access key value instead of call function

此外,事件对象e没有关联的功能。它们具有key:value对。 e.value是您访问值的方式。