1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GAS × GCP Cloud Loggingへの連携方法

Posted at

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プロジェクトの作成

  1. GCP Console にアクセス
  2. 画面上部の「プロジェクトの選択」をクリック
  3. 「新しいプロジェクトを作成」ボタンをクリック
  4. プロジェクト名を入力し、必要に応じて組織や場所を選択して「作成」

GCP_project.png

1.2 Cloud Logging APIの有効化

  1. GCP Console上部で先ほど作成した、または既存の対象プロジェクトを選択
  2. 左側メニューから「APIとサービス」→「ライブラリ」に移動
  3. 「Cloud Logging API」を検索
  4. 「有効にする」ボタンをクリック

cloud_logging.png

2. GASプロジェクトの設定

  1. 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を設定できます。

  1. GASエディタを開く
  2. 歯車アイコンの「プロジェクトの設定」をクリック
  3. 「Google Cloud Platform(GCP)プロジェクト」セクションで、GCPプロジェクト番号を入力

GAS_GCP.png

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: 重大なエラー

トラブルシューティング

よくある問題

認証エラーが発生する場合

  1. appscript.json"https://www.googleapis.com/auth/logging.write" スコープが設定済みか確認
  2. 初回実行時のOAuth認証が完了しているか確認
  3. Cloud Logging APIが有効化されているか確認
  4. GASプロジェクトとGCPプロジェクトが同じGoogleアカウントで管理されているか確認

ログが表示されない場合

  1. GCP Consoleの「ログエクスプローラー」でログを確認
  2. フィルター: resource.type="global" を設定
  3. プロジェクトIDが正しく設定されているか確認
  4. ログ名(logName)が正しいか確認

参考資料

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?