GAS × GCP Cloud Loggingへの連携方法
Google Apps Script (GAS) から Google Cloud Platform (GCP) の Cloud Logging にログを送信するための設定方法を説明します。
前提条件
- GCPプロジェクトが作成済みであること
- GCPプロジェクトでCloud Logging APIが有効化されていること
- GASプロジェクトへのアクセス権限があること
認証方式
GASからCloud Loggingにログを送信する際はOAuth認証方式(ScriptApp.getOAuthToken()を利用)を使用します。
- サービスアカウントキーは不要です
-
appscript.jsonにOAuthスコープを追加するだけでOKです
設定手順
1. GCPプロジェクトの設定
1.1 GCPプロジェクトの作成
- GCP Console にアクセス
- 画面上部の「プロジェクトの選択」をクリック
- 「新しいプロジェクトを作成」ボタンをクリック
- プロジェクト名を入力し、必要に応じて組織や場所を選択して「作成」
1.2 Cloud Logging APIの有効化
- GCP Console上部で先ほど作成した、または既存の対象プロジェクトを選択
- 左側メニューから「APIとサービス」→「ライブラリ」に移動
- 「Cloud Logging API」を検索
- 「有効にする」ボタンをクリック
2. GASプロジェクトの設定
- appscript.json の設定
appscript.jsonに以下のOAuthスコープを追加してください:
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/logging.write"
]
}
2.GASプロジェクトとGCPプロジェクトの紐付け
スクリプトプロパティにGCPプロジェクトIDを設定できます。
- GASエディタを開く
- 歯車アイコンの「プロジェクトの設定」をクリック
- 「Google Cloud Platform(GCP)プロジェクト」セクションで、GCPプロジェクト番号を入力
3.初回実行時の認証
初回のみOAuth認証の承認が必要です。GASエディタ上で関数を1度実行して認証してください。
3. GASコードの実装例
下記はCloud Loggingにログを送信するサンプルコードです。
/**
* Cloud Loggingにログを送信する関数
* @param {string} message - ログ内容
* @param {string} severity - ログレベル(例: 'INFO', 'ERROR', 'DEBUG' など)
*/
function sendLogToCloudLogging(message, severity = "INFO") {
const projectId = "test-log";
// 「projects/{プロジェクトID}/logs/{ログ名}」の形式にしてください。
const logName = `projects/${projectId}/logs/custom-appscript-log`;
const url = "https://logging.googleapis.com/v2/entries:write";
const payload = JSON.stringify({
entries: [
{
severity: severity,
textPayload: message,
logName: logName,
resource: {
type: "global"
}
}
]
});
const options = {
method: "post",
headers: {
Authorization: "Bearer " + ScriptApp.getOAuthToken(),
"Content-Type": "application/json"
},
payload: payload,
muteHttpExceptions: true
};
try {
UrlFetchApp.fetch(url, options);
} catch (error) {
Logger.log("Cloud Logging API への送信エラー: " + error.message);
}
}
// サンプル使用例
function testCloudLogging() {
sendLogToCloudLogging("テストログ: GASからCloud Loggingへの接続テスト", "INFO");
}
ログレベル
下記のログレベルが利用可能です:
-
DEBUG: デバッグ情報 -
INFO: 一般的な情報 -
WARNING: 警告 -
ERROR: エラー -
CRITICAL: 重大なエラー
トラブルシューティング
よくある問題
認証エラーが発生する場合
-
appscript.jsonに"https://www.googleapis.com/auth/logging.write"スコープが設定済みか確認 - 初回実行時のOAuth認証が完了しているか確認
- Cloud Logging APIが有効化されているか確認
- GASプロジェクトとGCPプロジェクトが同じGoogleアカウントで管理されているか確認
ログが表示されない場合
- GCP Consoleの「ログエクスプローラー」でログを確認
- フィルター:
resource.type="global"を設定 - プロジェクトIDが正しく設定されているか確認
- ログ名(logName)が正しいか確認


