
GASで外部APIと連携して、スプレッドシートをさらに便利に!UrlFetchAppの使い方を徹底解説します。
はじめに:GASで外部API連携の基礎
Google Apps Script(GAS)は、Google Workspaceの様々なサービスを自動化できる強力なツールです。その中でも、UrlFetchAppクラスを使うことで、外部のAPIと連携し、データを取得したり、送信したりすることが可能になります。
この記事では、GASのUrlFetchAppを使って外部APIにリクエストを送信する方法について、基本的な使い方から、エラーハンドリング、認証まで、詳しく解説します。
UrlFetchApp.fetch()の基本
UrlFetchApp.fetch()は、指定されたURLにHTTPリクエストを送信し、レスポンスを取得するための基本的なメソッドです。
最もシンプルな使い方は、GETリクエストを送信することです。以下に例を示します。
function callApi() {
const url = 'https://jsonplaceholder.typicode.com/todos/1';
const response = UrlFetchApp.fetch(url);
const content = response.getContentText();
Logger.log(content);
}
リクエストオプションの設定
UrlFetchApp.fetch()には、様々なオプションを設定することができます。例えば、HTTPメソッド(GET, POST, PUT, DELETEなど)、ヘッダー、ペイロードなどを指定できます。
POSTリクエストを送信する例を見てみましょう。
function postData() {
const url = 'https://jsonplaceholder.typicode.com/posts';
const payload = {
'title': 'foo',
'body': 'bar',
'userId': 1,
};
const options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
エラーハンドリング
APIリクエストは、様々な理由で失敗する可能性があります。そのため、エラーハンドリングは非常に重要です。
try-catch文を使って、エラーをキャッチし、適切な処理を行うようにしましょう。
function callApiWithErrorHandling() {
try {
const url = 'https://example.com/api/nonexistent'; // 存在しないURL
const response = UrlFetchApp.fetch(url);
const content = response.getContentText();
Logger.log(content);
} catch (e) {
Logger.log('エラーが発生しました: ' + e);
}
}
認証:APIキーとOAuth2
多くのAPIは、認証を必要とします。認証方式には、APIキーやOAuth2など、様々な種類があります。
APIキーを使用する場合は、リクエストヘッダーにAPIキーを含めるのが一般的です。
function callApiWithApiKey() {
const url = 'https://api.example.com/data';
const apiKey = 'YOUR_API_KEY';
const options = {
'headers': {
'X-API-Key': apiKey
}
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
OAuth2を使用する場合は、OAuth2ライブラリを利用して、アクセストークンを取得し、リクエストヘッダーに含めます。(詳細なOAuth2の実装は、別の記事で解説します。)
参考リンク
まとめ
GASのUrlFetchAppを使うことで、外部APIとの連携が簡単に行えます。基本的な使い方、オプション設定、エラーハンドリング、認証について理解することで、より高度なアプリケーションを開発することができます。
この記事を参考に、ぜひ様々なAPIとの連携に挑戦してみてください。