Всплывающее окно, если отрицательное число на основе формулы - PullRequest
2 голосов
/ 18 февраля 2020

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

function onEdit(event){
  var sheet = event.source.getActiveSheet().getName()
  var editedCell = event.range.getSheet().getActiveCell();
  if(sheet=="Numbers"){
     if(editedCell.getColumn() == 6 && event.value==-0.1){   
        Browser.msgBox('It looks like there is a negative number in Column F.');
  }}}

Я думаю, что это может Я имею отношение к функции 'editedcell', но я не на 100%. Кто-нибудь знает лучший сценарий, который будет отображать окно, даже если формула генерирует отрицательное число (значение в столбце F будет формулой, которая может генерировать отрицательное значение)?

На этом этапе с этим кодом ничего не произойдет, если я вручную не введу «-1» или какой-либо другой отрицательный знак в столбце F.

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 18 февраля 2020

Ответ:

Объект события возвращает диапазон отредактированных вами ячеек, а не отредактированных сценарием или формулами. Кроме того, есть несколько вещей, которые вы можете сделать, чтобы исправить или оптимизировать ваш код.

Исправления кода:

Во-первых, вы можете изменить условное выражение для оптимизации скрипта и делать вызовы только тогда, когда они вам нужны - это я сделал с несколько иным условным порядком.

Кроме того, вместо event.range.getSheet().getActiveCell() вам нужно явно указать значения столбца F и использовать * Функция 1012 * также будет принимать значения, если ячейка содержит формулу:

function onEdit(event) {
  var sheet = event.source.getActiveSheet();
  if (sheet.getName() != "Numbers") {
    return;
  }

  var values = sheet.getRange('F:F').getDisplayValues()

  for (var i = 0; i < values.length; i++) {
    if (values[i] < 0) {
      Browser.msgBox('It looks like there is a negative number in Column F.');
      return;
    }
  }  
}

Надеюсь, это будет полезно для вас!

Ссылки:

...