@realmen80

Как реализовать уведомления по диапазону ячеек при изменении формулами?

Есть скрит для гугл таблиц который проверяет числа в столбце с названием "Сумма" и если число больше 5, то присылает уведомление в телеграм.

Данный код реагирует только на изменения чисел редактированием в ручном режиме в листе.

Как нужно изменить код скрипта чтобы он понимал числа в столбце с названием "Сумма" которые образованные с помощтю формул и присылал бы уведомления, как и при ручном редактировании числа?

function onChange(e) {
  var sheet = e.source.getSheetByName('My'); // название листа
  var token = "6362357049zxHBHeO4"; // токен бота
  var chatId = "-114165"; // chat_id

  var range = e.range;
  var sheetName = range.getSheet().getName();
  var cellAddress = range.getA1Notation();
  var editedValue = e.value;
  var targetColumn = "Сумма";
  var targetValue = 5;

  // Проверка, попадает ли измененная ячейка в целевой столбец
  if (sheetName === 'My' && range.getColumn() == getColByName(sheet, targetColumn) && editedValue > targetValue) {
    sendTelegramMessage("Значение в столбце 'Сумма' превысило " + targetValue + ": " + editedValue);
  }
}

function sendTelegramMessage(message) {
  var token = "6362xHBHeO4";
  var chatId = "-104545465";

  var url = "https://api.telegram.org/bot" + token + "/sendMessage?chat_id=" + chatId + "&text=" + encodeURIComponent(message);
  UrlFetchApp.fetch(url);
}

// Функция для получения номера столбца по его названию
function getColByName(sheet, colName) {
  var col = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0].indexOf(colName) + 1;
  return col;
}


Заранее благодарен за помощь
  • Вопрос задан
  • 99 просмотров
Решения вопроса 2
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Есть несколько подходов:

  1. Например, можно поставить весь диапазон в свою формулу и сравнивать с результатами из кеша. Если данные не совпадают, то реагировать
  2. Периодично проверять по дате изменения файла. Если дата изменилась, то реагировать
  3. Проверять через Google Actions API. Если файл был упомянут, то реагировать


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

Кстати, задания оставлять нельзя по правилам сообщества.
Ответ написан
Комментировать
@realmen80 Автор вопроса
Вопрос решен. Чтобы скрипт реагировал на значения из формул нужно использовать тригер по времени, а не по изменению листа.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы