Код для проверки ошибки выполнения в конце функции? - PullRequest
3 голосов
/ 26 сентября 2019

Я создал скрипт приложений Google, который запускается из файла Google Sheets.Каждый день в ~ 9 часов утра запускается триггер моих функций.

Каждые несколько дней (я не знаю почему), но я получаю сообщение об ошибке выполнения: служба вызывается слишком много раз в течение одного дня: urlfetch

Я перестал пытаться решить эту проблему, но было бы замечательно, если бы в конце моей функции я мог включить некоторый код, чтобы проверить, была ли ошибка выполнения и, если да, запустить другую функцию, например,

myfunction_9am() {
    <try run some code>
    if (execution Status = "Failed") {      <<this is the bit I don't know how to code
        myfunction_error();
    }
}

Заранее благодарю за любую помощь!

1 Ответ

1 голос
/ 26 сентября 2019

Обработка ошибок в Apps Script может обрабатываться как инструментами устранения неполадок JavaScript, так и Apps Script.

function myFunction() {
try{
  //Some code 
}catch(e) {
  //Code to run only if there is an error
  console.error("Error: " + e + "Stack: " + e.stack);//Send to StackDriver
  myErrorHandlingFunction(e);
} 
}

Функция обработки ошибок:

function myErrorHandlingFunction(e) {
  var body,errMsg, recipient,stack;

  if (!e) {
    return;
  }

  errMsg = e.message;
  stack = e.stack;

  recipient = Session.getEffectiveUser().getEmail();
  subject = "Error in Code";

  body = 'The error is: ' + errMsg + "\n\nStack:" + stack;
  GmailApp.sendEmail(recipient, subject, body);
}

Буква e в скобкахявляется «объектом исключения», который содержит сообщение об ошибке JavaScript и «стек».Если блок catch запускает код, то выполнение не удалось.Вам не нужно проверять, провалился ли он или нет.Чтобы получить сообщение об ошибке, используйте e.message, а для получения стека - e.stack.

Возможно, вы захотите отправить информацию об ошибке в службу Apps Script StackDriver и / или обработать ошибку с помощью собственного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...