google-apps-script - 如何使用 Stackdriver Logging API 获取日志

标签 google-apps-script stackdriver google-apis-explorer

我正在使用 Dialogflow 开发一个聊天机器人,我需要从中获取完整的对话日志。

我检查了this page我猜想它可以通过使用 Stackdriver Logging api 来实现。

我引用了下面的页面并尝试了,但是使用这个api时,出现了403错误。 https://cloud.google.com/logging/docs/reference/v2/rest/v2/logs/list

我是否使用了错误的方式?

如何解决这个问题?

这是错误消息。

{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

这是我调用 api 的代码。 我使用了 Google Apps 脚本。

function getLogs() {
  //XXXXXXXX is my project_id
  var output = UrlFetchApp.fetch('https://logging.googleapis.com/v2/projects/XXXXXXXX/logs');
  Logger.log(output)
}

最佳答案

我是这样解决的。

  1. 将我的 API key 添加到 http 请求。
var options = {headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}};
var logs = UrlFetchApp.fetch("https://logging.googleapis.com/v2/projects/XXXXXXXX/logs?key=my_api_key", options)
  • 将范围添加到 appscript.json。
  • "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/script.external_request"]
    

    然后我发现 logs.list 方法不适合我的目标,所以我需要更改为 v2.entries 方法。

    function getLogs(){
    var options = {
        method: "post",
        contentType: "application/json",
        headers: {Authorization: 'Bearer ' + ScriptApp.getOAuthToken()},
        payload: JSON.stringify({
          resourceNames: ['projects/XXXXXXX'],
          filter: "timestamp >= searchdate",
          orderBy: "timestamp desc",
          pageSize: 1,
        }),
      }
    
      var logs = UrlFetchApp.fetch("https://logging.googleapis.com/v2/entries:list?key=my_api_key", options);
      Logger.log(logs);
    
    }
    

    关于google-apps-script - 如何使用 Stackdriver Logging API 获取日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60235566/

    相关文章:

    google-apps-script - 谷歌电子表格 setBackgroundColors() "Deprecated"

    google-cloud-platform - 如何在 GCP Stackdriver 日志记录 UI 中嵌套 LogEntries?

    java - 如何通过 google api 库(例如 people api)或带有服务帐户凭据的 REST 通过 google 电子邮件获取用户信息(account_id)?

    youtube-api - YouTube API - setModerationStatus 到 heldForReview 不起作用

    r - 使用 R 连接到 Youtube Analytics API

    javascript - if 语句在条件满足后不停止

    javascript - 为什么 Javascript google docs app script try 语句只运行一个语句 if

    javascript - 使用谷歌应用程序脚本返回多次出现的值

    logging - Google Apps 脚本日志(网络应用)不会显示在新界面中

    google-cloud-platform - Stackdriver Monitoring 洪水 collectd uc_update : Value too old in syslog