Кроме того, что ваш синтаксис выключен (Apps Script основан на JavaScript), да, вы можете сделать это, используя несколько различных механизмов.
Используйте простой триггер onEdit(e)
для просмотра листа.
Объект e
имеет клавиши oldValue
и value
, которые можно сравнивать напрямую. Вы также можете проверить на специфическую ссылку на ячейку, используя параметр range
. Следующие тесты для ячейки B10, а именно:
function onEdit(e) {
if (e.range.getA1Notation() == 'B10' && e.value > e.oldValue) {
Browser.msgBox("you increased the value")
}
}
Если взять еще больше, вы можете указать лист в электронной таблице для проверки перед запуском сценария.
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
if (e.range.getA1Notation() == 'B10' && e.range.getSheet().getName() == 'Página1' && e.value > e.oldValue) {
Browser.msgBox("you increased the value")
}
}
Если ячейка не в указанном листе или диапазоне, ничего не происходит.
Просмотр ячейки формулы немного сложнее, но она будет работать. В скрипте приложений есть два метода. getValue()
возвращает значение , отображаемое в ячейке , даже если оно рассчитывается по формуле. .getFormula()
получает расчетную формулу ячейки . Так что, да, это будет работать с простым вызовом .getValue()
в диапазоне.
Основное различие заключается в том, что вы должны следить за ячейкой формулы, поскольку она не редактируется пользователем напрямую. Другими словами, объект события не будет срабатывать, если значение ячейки вычисляется по формуле. В том числе это просто:
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var formulaRange = e.range.getSheet().getRange("B4");
if (e.range.getA1Notation() == 'B10' || formulaRange && (e.range.getSheet().getName() == 'Página1' && e.value > e.oldValue) {
Browser.msgBox("you increased the value")
}
}
Подробнее о Объекты событий Apps Script в документации.