GASで外部API連携|UrlFetchApp完全ガイドと実務パターン解説

2026年5月29日金曜日

GAS JavaScript プログラミング

t f B! P L

📘 Google Apps Scriptで外部API連携(UrlFetchApp)完全ガイド

「GASを使ってもっと自動化したい!」と思ったときに避けて通れないのが、外部API連携です。実務で使うなら、ただHTTP通信するだけじゃなく、GASをシステムのハブとして使いこなすことが重要です。


① 外部APIとは?

ざっくり言うと、Web上のサービスをプログラムから操作できる仕組みです。GASで外の世界にアクセスするための窓口みたいなものですね。

✅ 代表例

  • 天気情報取得
  • Slack通知
  • LINE通知
  • AI連携(ChatGPTなど)
  • 社内APIとの連携

要するに、「GASの外にあるデータや機能を使う」ための方法です。


② UrlFetchAppの基本

GASでは、UrlFetchApp.fetch()を使って簡単にAPIへリクエストを送れます。

✅ GETリクエスト

const response = UrlFetchApp.fetch("https://api.example.com");
const text = response.getContentText();
Logger.log(text);

返ってくるのはHTTPレスポンスで、JSONならオブジェクトに変換できます。

✅ JSON取得

const data = JSON.parse(response.getContentText());

③ HTTP構造を理解しよう

API連携の本質は「リクエスト → サーバ → レスポンス」の流れです。

✅ 主なHTTPメソッド

メソッド目的
GET取得
POST作成
PUT更新
DELETE削除

④ POST送信(実務で必須)

const url = "https://api.example.com";
const options = {
  method: "post",
  contentType: "application/json",
  payload: JSON.stringify({
    name: "鈴木",
    age: 30
  })
};
const response = UrlFetchApp.fetch(url, options);

APIにデータを送るときに使います。


⑤ ヘッダー設定(認証)

認証が必要なAPIでは、ヘッダーにAPIキーを設定します。

✅ 例:APIキー付きGET

const options = {
  method: "get",
  headers: {
    "Authorization": "Bearer API_KEY"
  }
};

⑥ 実務パターン

✅ パターン①:外部APIからデータ取得

function getApiData() {
  const url = "https://api.example.com/data";
  const res = UrlFetchApp.fetch(url);
  const data = JSON.parse(res.getContentText());
  Logger.log(data);
}

✅ パターン②:Slack通知

function sendSlack() {
  const url = "Webhook URL";
  const payload = { text: "処理が完了しました" };
  UrlFetchApp.fetch(url, {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload)
  });
}

✅ パターン③:LINE通知

function sendLine() {
  const url = "https://notify-api.line.me/api/notify";
  const options = {
    method: "post",
    headers: { "Authorization": "Bearer TOKEN" },
    payload: { message: "通知です" }
  };
  UrlFetchApp.fetch(url, options);
}

✅ パターン④:API → シート保存

function apiToSheet() {
  const res = UrlFetchApp.fetch("https://api.example.com");
  const data = JSON.parse(res.getContentText());
  const output = data.map(item => [ item.name, item.value ]);
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.getRange(1, 1, output.length, 2).setValues(output);
}

⑦ JSONの扱い(超重要)

APIから返ってくるJSONはオブジェクトに変換して操作します。

✅ 例

{
  "users": [
    { "name": "鈴木", "age": 30 }
  ]
}

✅ アクセス方法

data.users[0].name;

⑧ エラー処理(必須)

✅ ステータス確認

const res = UrlFetchApp.fetch(url);
const code = res.getResponseCode();
if (code !== 200) {
  throw new Error("APIエラー");
}

✅ try-catch

try {
  const res = UrlFetchApp.fetch(url);
} catch (e) {
  Logger.log(e);
}

⑨ パフォーマンス・設計

  • リクエスト削減 → APIはまとめて呼ぶ
  • レート制限対応 → Utilities.sleep(1000)
  • キャッシュ活用 → CacheService.getScriptCache()

⑩ トリガー連携(実務)

毎日・毎時の定期API取得も簡単に設定できます。

function batchApi() {
  // 外部API呼び出し
}

⑪ よくあるミス

  • JSON解析忘れ → responseは文字列
  • contentTypeミス → application/json 必須
  • 認証漏れ → APIキー忘れ
  • POST形式違い → JSON or form-data注意

⑫ 実務テンプレ(完成形)

function externalApiFlow() {
  const url = "https://api.example.com";
  try {
    const res = UrlFetchApp.fetch(url);
    const data = JSON.parse(res.getContentText());
    const output = data.map(item => [ item.name, item.value ]);
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.getRange(1, 1, output.length, 2).setValues(output);
  } catch (e) {
    Logger.log(e);
  }
}

🔚 まとめ(エンジニア視点)

  • 本質:GAS ↔ API ↔ 外部システム
  • できること:
    • 外部データ取得
    • 他システムへのデータ送信

このブログを検索

Blog Archive

Welcome



旅するWebライター「Hide」のブログへようこそ!

2年間の世界一周を終え、今は旅の思い出を言葉にしながら、AIやプログラミングという新しい冒険を楽しんでいます。最新技術を味方につけて、もっと自由でクリエイティブな発信を続けていきます!

人気の投稿

QooQ