Почему не выполняется функция в триггере onEdit? Google Apps Script

Рейтинг: 0Ответов: 1Опубликовано: 08.06.2023

У меня есть простенький скрипт, в котором при активации флажка должен выводиться текст в тостер и выполняться функция. Но при изменении флажка текст в тостере появляется, а функция sendAdmin не выполняется. Я пробовал запустить вручную sendAdmin, - сообщение успешно отправляется, а при установке флажка автоматически не срабатывает.

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var column = range.getColumn();
  var flagColumnIndex = 17; // Индекс столбца "Q"
  var targetSheetName = "BOT";
  
  // Проверяем, что изменение произошло на нужном листе ("BOT") и в столбце флажка
  if (sheet.getName() == targetSheetName && column == flagColumnIndex) {
    var flag = range.getValue();
    
    if (flag) {
      // Флажок был активирован
      SpreadsheetApp.getActiveSpreadsheet().toast("Готово"); // Вывод текста в тостер
      sendAdmin(); // Вызов функции sendAdmin с нужными параметрами
    }
  }
}
function sendAdmin(){
 sendMessage(botAdmin, "Флажок установлен");
}

Ответы

▲ 0Принят

Назовите функции onEditTrigger(e) и поставьте обычный триггер на изменение на листе. Сообщение не отправляется, так как onEdit не имеет доступа к внешним сервисам (он необходим для UrlFetchApp.fetch, который используется в отправке сообщения через телеграмм). Скорее всего нужно будет добавить разрешение для работы с внешними сервисами в манифест проекта appsscript.json, если скрипт не попросит его сам.

{
  "timeZone": "Europe/Moscow",
  "oauthScopes": [
    "https://www.googleapis.com/auth/script.external_request"
  ],
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

Ограничения простых триггеров https://developers.google.com/apps-script/guides/triggers#restrictions