Не могу вызвать мою функцию изнутри onEdit - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть эта функция onEdit, которая сначала проверяет, находится ли выполненное редактирование в определенной области. Затем он получает строку, которая была отредактирована, регистрирует ее и, как предполагается, отправляет такое же сообщение журнала на канал Discord через веб-крючок. Я не могу заставить его работать правильно. Функция postMessageToDiscord прекрасно работает, когда я вызываю ее из другой имеющейся у меня функции, но не изнутри onEdit. Любые идеи относительно того, почему это работает?

onEdit Func:

function onEdit(edit){
 if (
    edit.range.columnStart >= 3 &&
    edit.range.columnEnd <= 9 &&
    edit.range.rowStart >= 13 &&
    edit.range.rowEnd <= 101
  )
  {
    Logger.log("Edit in range");
    var editRow = (edit.range.rowStart, edit.range.rowEnd)
  }
  Logger.log("Row " + String(editRow) + " has been edited on Cadet Log " + edit.range.getSheet().getSheetName());
  postMessageToDiscord("Row " + String(editRow) + " has been edited on Cadet Log " + edit.range.getSheet().getSheetName());
}

postMessageToDiscord func:

function postMessageToDiscord(message) {

  message = message || "Hunter fucked up, disregard."

  var discordUrl = LINK REDACTED FOR SECURITY;
  var payload = JSON.stringify({content: message});

  var params = {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    method: "POST",
    payload: payload,
    muteHttpExceptions: true
  };

  var response = UrlFetchApp.fetch(discordUrl, params);

  Logger.log(response.getContentText());

}

1 Ответ

0 голосов
/ 11 ноября 2019

Предоставлено @ Dimu Designs

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

...