⚠️ この章はロードマップ外の上級者向けコンテンツです。基礎編を修了してから取り組んでください。
⚠️ API連携の注意点
API連携を安全に行うための重要な注意点を学びます
🚨 API連携を行う際の注意点
API連携は非常に便利ですが、いくつかの重要な注意点があります。 これらの注意点を守らないと、セキュリティ上の問題やコスト面での問題が発生する可能性があります。
APIキーの管理
APIキーは絶対に他人に見せない
API利用料金
無料枠を超えると課金される
呼び出し回数の制限
1日あたりの制限に注意
⚠️ 重要
これらの注意点を守らないと、予期せぬトラブルが発生する可能性があります。 必ず確認してから実装を進めましょう。
🔐 APIキーの管理
APIキーは、あなたがそのサービスを使う権限を持っていることを証明するパスワードのようなものです。 APIキーが他人に漏れると、不正利用される可能性がありますので、厳重に管理する必要があります。
🚨 APIキーが漏洩した場合のリスク
- 💸 不正利用による高額請求:他人があなたのAPIキーを使って大量のリクエストを送り、高額な利用料金が発生する可能性があります
- 🔓 個人情報の漏洩:APIキーを使って、あなたのアカウントにアクセスされ、データが盗まれる可能性があります
- ⚠️ アカウント停止:不正利用が検知されると、サービス提供者からアカウントが停止される可能性があります
✅ 対策:GASのプロパティサービスを使う
GASには、プロパティサービスという機能があります。 これを使えば、APIキーをコードに直接書かずに、安全に保存することができます。
ステップ1:APIキーを保存する関数を作成
function setApiKey() {
// プロパティサービスを取得
const scriptProperties = PropertiesService.getScriptProperties();
// APIキーを保存(実際のキーに置き換えてください)
scriptProperties.setProperty('API_KEY', 'YOUR_API_KEY_HERE');
Logger.log('APIキーを保存しました');
}
この関数を1回だけ実行して、APIキーを保存します。保存後は、この関数を削除しても構いません。
ステップ2:保存したAPIキーを取得して使用
function callAPI() {
// プロパティサービスからAPIキーを取得
const scriptProperties = PropertiesService.getScriptProperties();
const apiKey = scriptProperties.getProperty('API_KEY');
// APIキーを使ってリクエスト送信
const url = "https://api.example.com/endpoint";
const options = {
"method": "POST",
"headers": {
"Authorization": "Bearer " + apiKey,
"Content-Type": "application/json"
}
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
この方法なら、APIキーがコードに直接書かれていないので、GitHubなどに公開しても安全です。
📌 その他の対策
- • GitHubなどにコードを公開する際は、APIキーを削除またはプロパティサービスを使う
- • APIキーは定期的に再生成して、セキュリティを強化する
- • APIキーに適切な権限(読み取り専用など)を設定し、必要最小限の権限にする
💰 API利用料金
多くのAPIには、利用料金がかかります。 無料枠を超えると、課金される場合があるので注意が必要です。
💳 主要APIの料金体系
ChatGPT API(OpenAI)
- • 料金体系:リクエスト数とトークン数に応じて課金
- • 無料枠:基本的になし(初回クレジット$5程度が提供される場合あり)
- • 目安:GPT-4は1000トークンあたり$0.03〜$0.12程度
Gemini API(Google)
- • 料金体系:リクエスト数とトークン数に応じて課金
- • 無料枠:月間1500リクエストまで無料(Gemini 1.5 Flashの場合)
- • 目安:無料枠内で十分試せるので、初心者にもおすすめ
Slack API
- • 料金体系:基本的に無料(Incoming Webhooksは無料)
- • 無料枠:通知送信は無制限に近い(Slackの利用プランによる)
- • 目安:通知送信だけなら、ほぼコストはかからない
✅ 料金を抑えるための対策
- 1. 無料枠の範囲内で使用する:Gemini APIなど、無料枠があるAPIを優先的に使う
- 2. 利用状況を定期的にチェック:API提供者のダッシュボードで、使用量を定期的に確認する
- 3. テスト時は少量のデータで試す:いきなり大量のリクエストを送らず、少量で動作確認する
- 4. キャッシュを活用:同じデータを何度も取得せず、一度取得したデータを保存して再利用する
- 5. 予算アラートを設定:利用料金が一定額を超えたら通知が来るように設定する
⏱️ API呼び出し回数の制限
APIには、1日あたりの呼び出し回数制限があります。 制限を超えると、APIが使えなくなったり、エラーが返ってきたりする場合があります。
📊 レート制限の例
❌ 制限を超えた場合
「429 Too Many Requests」というエラーが返ってきて、一定時間APIが使えなくなります。
✅ 制限の目安
- • ChatGPT API:1分あたり3〜10リクエスト(プランによる)
- • Gemini API:1分あたり15〜60リクエスト(プランによる)
- • Slack API:1秒あたり1リクエスト(Webhook)
✅ レート制限を回避する対策
- 1. 必要最小限の呼び出しに抑える:本当に必要なタイミングだけAPIを呼び出す
- 2. キャッシュを活用:同じデータを何度も取得しない
- 3. リトライロジックを実装:エラーが返ってきたら、少し待ってから再度リクエストを送る
- 4. バッチ処理を活用:複数のリクエストをまとめて1回で送る(可能な場合)
💻 リトライロジックのコード例
function callAPIWithRetry() {
const maxRetries = 3; // 最大リトライ回数
const retryDelay = 2000; // リトライ間隔(ミリ秒)
for (let i = 0; i < maxRetries; i++) {
try {
const response = UrlFetchApp.fetch(url, options);
return JSON.parse(response.getContentText());
} catch (error) {
if (i < maxRetries - 1) {
Logger.log('エラー発生。' + (i + 1) + '回目のリトライ...');
Utilities.sleep(retryDelay); // 待機
} else {
throw new Error('API呼び出しに失敗しました: ' + error);
}
}
}
}
このコードは、エラーが発生した場合、最大3回まで自動的にリトライします。
📝 上級編:APIについて 全体のまとめ
🔌 セクション1:APIとは?
- ✓ APIは、異なるソフトウェア同士がやり取りするための仕組みです
- ✓ レストランの例:APIはウェイター、あなたはお客さん、外部サービスはキッチン
🌐 セクション2:API連携のメリット
- ✓ Google以外のサービス(Slack、Twitter、ChatGPT、Geminiなど)を活用できる
- ✓ 複数のサービスを組み合わせて、より高度な自動化が可能
- ✓ 手動作業を自動化して、業務時間を大幅に短縮できる
⚙️ セクション3:GASでAPI連携を行う方法
- ✓ API連携は3つのステップ:APIキー取得、コード記述、レスポンス処理
- ✓ UrlFetchAppを使えば、GASから簡単にAPIを呼び出せる
- ✓ レスポンスは目的に応じて自由に処理できる
💡 セクション4:代表的なAPI連携の例
- ✓ ChatGPT APIで文章生成・校正
- ✓ Gemini APIで画像分析・テキスト要約
- ✓ Slack APIでリアルタイム通知
⚠️ セクション5:API連携の注意点
- ✓ APIキーは絶対に他人に見せない(プロパティサービスで管理)
- ✓ 無料枠を超えると課金されるので、利用状況を定期的にチェック
- ✓ 呼び出し回数制限に注意し、キャッシュやリトライロジックを活用
皆さん、上級編:APIについて、すべてのセクションを完了できましたでしょうか?
API連携を活用することで、GASの可能性が無限に広がります。
あなたのアイデア次第で、どんな自動化システムでも構築できるようになるでしょう。
ぜひ実践編にも挑戦して、実際にAPI連携を体験してみてくださいね。
わからないことがあれば、何度でもこの資料を読み返してください。