質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Dialogflow

Dialogflowは、Googleが提供している自然言語対話プラットフォーム。音声入力で自然言語の解析を行ってくれる機能で、対話型アプリを簡単に作成することが可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1865閲覧

Stackdriver Loggingでログ取得APIが403エラーになる

SasuraiNoTsuba

総合スコア3

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Dialogflow

Dialogflowは、Googleが提供している自然言語対話プラットフォーム。音声入力で自然言語の解析を行ってくれる機能で、対話型アプリを簡単に作成することが可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/02/14 10:02

###やりたいこと
Dialogflowを使ったチャットボットを開発しているのですが、
全履歴をjson形式で取得したいです。
この記事を確認し、Stackdriver LoggingのAPIで取得ができるようなので、取得しようとしております。
StackDriver Loggingにログが生成されているのは確認済みです。

###困っていること
https://cloud.google.com/logging/docs/reference/v2/rest/v2/logs/list

上記のサイトを参考にして、ログを取得するのURLを作成し実行したのですが、403エラーが発生しております。
何か別の設定が必要なのでしょうか。

▼エラー内容

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

▼確認している方法
Google Apps Scriptから以下のコードで実行しています。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下の方法で実行できるようになりました。

  • APIキーを設定、ヘッダーに認証情報を追加
var options = {headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}}; var logs = UrlFetchApp.fetch("https://logging.googleapis.com/v2/projects/XXXXXXX/logs?key=my_api_key", options)
  • appsscript.jsonにscopeを追加
"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/project_id'], 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); }

投稿2020/02/17 11:08

編集2020/02/17 11:16
SasuraiNoTsuba

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問