Appscript обрабатывает ошибки, которые не отображаются в ошибках в стеке - PullRequest
0 голосов
/ 08 января 2019

Я пишу аддон Gmail с помощью Appscript. Если приложение выдает необработанную ошибку, оно будет автоматически зарегистрировано в stackdriver и отображено в Отчете об ошибках Stackdriver. Однако я хочу вручную отправлять сообщения об ошибках в Stackdriver:

try{
    thisMayThrowAnError();
catch(err){
    console.error(new Error("Something Failed"))
}

В приведенном выше примере журнал ошибок отображается в журналах Stackdriver, но не отображается в отчете об ошибках Stackdriver. Есть ли способ достичь этого, не бросая его (и не разбивая аддон)?

1 Ответ

0 голосов
/ 09 января 2019
  • Вы хотите вручную сообщить о пользовательской ошибке в StackDriver Error Reporting.
  • Вы не хотите останавливать сценарий.

Если мое понимание верно, как насчет этого обходного пути? В этом обходном пути он использует метод projects.events.report в API отчетов об ошибках Stackdriver.

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

  • Добавьте https://www.googleapis.com/auth/cloud-platform к областям применения, используя Манифесты и другие.
  • Включить API отчетов об ошибках Stackdriver на консоли API.

Пример сценария:

try {
    thisMayThrowAnError();
} catch(err) {
  var projectId = "project-id-#####"; // Please set the project ID of project including your script.
  var payload = { // Please modify this for your situation.
    message: "Something Failed",
    serviceContext: {service: "sample"},
    context: {reportLocation: {functionName: "sampleFunctionName"}},
  };

  var url = "https://clouderrorreporting.googleapis.com/v1beta1/projects/" + projectId + "/events:report";
  var params = {
    method: "post",
    payload: JSON.stringify(payload),
    contentType: "application/json",
    headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()},
  }
  UrlFetchApp.fetch(url, params);
}

Примечание:

  • Это простой пример сценария. Поэтому, пожалуйста, измените вашу ситуацию.
  • В этом сценарии каждое значение payload является примером значений. Поэтому, пожалуйста, измените вашу ситуацию.
  • Когда я вызывал этот API, был случай, когда отражение результата запаздывает. Поэтому, если результат не отображается в отчете об ошибках StackDriver после вызова API, подождите немного.

Ссылки:

Из вашего вопроса я понял, что вы используете Google Apps Script. Если вы используете другой язык, пожалуйста, скажите мне. Если этот обходной путь не принес желаемого результата, я прошу прощения.

...