Что я делаю в этой условной работе? - PullRequest
0 голосов
/ 11 декабря 2018

Вчера я задал вопрос о скрипте, который я делал, так как я не смог обнаружить ячейку, которую я модифицировал, я оставляю ссылку на вопрос:

Застрял в скрипте электронной таблицы Google

Сейчас я пытаюсь сделать скрипт условным, но я не могу различить watchRange1 и watchRange2, это два разных диапазона ячеек, в которых есть определенная ячейка, в которую я хочу записать время, в которое каждыйдиапазон был изменен.

Прямо сейчас условное выражение всегда записывает мне время модификации в ячейке watchRange1, даже если я изменяю другой диапазон.

Можете ли вы сказать мне, что я делаю, wrog?

Это сценарий, который я упоминаю:

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 голосов
/ 11 декабря 2018

Вы используете 'или' || вместо 'и' &&. Col больше или равно слева ИЛИ меньше или равно справа . Col всегда будет больше, чем left в первом диапазоне.Это означает, что первый оператор if всегда верен (если вы редактируете в любом из диапазонов).

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 не имеют связанных функций.У них есть пары ключ: значение.e.value - это способ доступа к значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...