【问题标题】:Appscript handled errors not shown in stackdriver errorsAppscript 处理了堆栈驱动程序错误中未显示的错误
【发布时间】:2019-01-08 14:11:52
【问题描述】:

我正在使用 Appscript 编写 Gmail 插件。如果应用程序抛出未处理的错误,它将自动登录到 stackdriver 并显示在 Stackdriver Error Reporting 中。但是,我想手动将错误发送到 Stackdriver 错误报告:

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

在上面的示例中,错误日志显示在 Stackdriver 日志中,但不会出现在 Stackdriver 错误报告中。有没有办法在不实际抛出它(并使插件崩溃)的情况下实现这一点?

【问题讨论】:

    标签: google-apps-script stackdriver gmail-addons


    【解决方案1】:
    • 您想手动向 StackDriver 错误报告报告自定义错误。
    • 您不想停止脚本。

    如果我的理解是正确的,那么这个解决方法怎么样?在此解决方法中,它使用 Stackdriver Error Reporting API 中的 projects.events.report 方法。

    在使用此示例脚本之前,请先进行以下操作。

    • 使用 Manifest 和其他方法将 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时,出现结果反映迟的情况。因此,如果调用 API 后结果没有反映到 StackDriver 错误报告中,请稍候。

    参考资料:

    根据您的问题,我了解到您正在使用 Google Apps 脚本。如果您使用其他语言,请告诉我。如果此解决方法不是您想要的结果,我深表歉意。

    【讨论】:

    猜你喜欢
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多