スキップしてメイン コンテンツに移動

GASでBearer認証API

GASでBearer認証API

GAS実践で認証付きAPIを呼び出す

Google Apps Script(GAS)を使って外部APIにアクセスする際、認証付きAPIを呼び出す手順は必須です。まずはOAuth2ライブラリを導入し、アクセストークンを取得します。取得したトークンは後続のリクエストでAuthorizationヘッダーに設定します。

OAuth2のフローは、認証サーバーにリダイレクトし、ユーザーが許可すると発行されるコードを受け取り、アクセストークンに交換します。GASでは、UrlFetchApp.fetchを使ってトークン取得エンドポイントへPOSTリクエストを送ります。

var tokenUrl = 'https://example.com/oauth/token';
var payload = {
  client_id: 'YOUR_CLIENT_ID',
  client_secret: 'YOUR_CLIENT_SECRET',
  grant_type: 'client_credentials'
};
var options = {
  method: 'post',
  payload: payload,
  muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(tokenUrl, options);
var token = JSON.parse(response.getContentText()).access_token;

取得したtokenを使って、認証付きAPIにアクセスします。ここではBearer TokenをAuthorizationヘッダーに設定し、APIキーを併用するケースも紹介します。

headersとAuthorizationヘッダーの構築

API呼び出し時に必要なheadersは、Content-Type、Accept、Authorizationなどです。Authorizationヘッダーは「Bearer 」の形式で設定します。GASでは、headersオブジェクトを作成し、UrlFetchApp.fetchに渡します。

var apiUrl = 'https://api.example.com/data';
var headers = {
  'Authorization': 'Bearer ' + token,
  'Accept': 'application/json',
  'Content-Type': 'application/json'
};
var apiOptions = {
  method: 'get',
  headers: headers,
  muteHttpExceptions: true
};
var apiResponse = UrlFetchApp.fetch(apiUrl, apiOptions);
var data = JSON.parse(apiResponse.getContentText());

APIキーを別途ヘッダーに含める場合は、X-API-Keyなどのカスタムヘッダーを追加します。これにより、OAuth2とAPIキーの二重認証が可能になります。

認証ヘッダーを正しく構築することで、API側の認可チェックをスムーズに通過できます。ヘッダーの順序やスペースに注意し、文字列の結合ミスを防ぎましょう。

ペイロードとオプションで柔軟にリクエストを送る

POSTやPUTリクエストでは、ペイロード(リクエストボディ)を送る必要があります。GASでは、payloadプロパティにJSON文字列を設定し、Content-Typeapplication/jsonにします。

var payloadData = {
  name: 'Sample',
  value: 42
};
var options = {
  method: 'post',
  headers: headers,
  payload: JSON.stringify(payloadData),
  muteHttpExceptions: true
};
var result = UrlFetchApp.fetch(apiUrl, options);
var resultData = JSON.parse(result.getContentText());

オプションとして、タイムアウト設定やリダイレクト制御、キャッシュ無効化などを指定できます。muteHttpExceptionstrueにすると、HTTPエラー時でも例外が発生せず、レスポンスを取得できます。

さらに、クエリパラメータを付与したい場合は、URLに直接追加するか、paramsオブジェクトを使用します。GASのUrlFetchAppparamsを自動でエンコードしてくれるので、手動でクエリ文字列を作る手間が省けます。

この記事はAIによって作成されました。

コメント