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

GAS×主要API全部のせ|8つのAPIを駆使するかんたんサンプルプログラムを動かそう

「整理券(APIキー)」を「金庫(スクリプトプロパティ)」に収めたら、次に行うべきはマザーシステムの構築です。

このブログでは、すべてのAPIキーを「マザーシステム」という一つのプロジェクトに集約します。今後作成するスプレッドシートやツールからは、このマザーシステムを「ライブラリ」として読み込むことで、面倒なキーの設定を一度きりで終わらせます。


1. マザーシステムの構築とキーの最終チェック

まずは核となるプロジェクトを作成し、金庫の中身を揃えましょう。

  1. Google Apps Scriptにアクセスし、「新しいプロジェクト」をクリック。
  2. プロジェクト名を「マザーシステム」に変更します。
  3. 「プロジェクトの設定(歯車アイコン)」を開き、以下のプロパティがすべて入力されているか確認してください。
分野 プロパティ名(名前) 必要な値
AIGEMINI_API_KEYGoogle AI Studioのキー
通知LINE_TOKENLINE Notify等のトークン
通知SLACK_WEBHOOK_URLSlackのWebhook URL
通知DISCORD_WEBHOOK_URLDiscordのWebhook URL
整理NOTION_API_KEYNotionインテグレーションキー
整理TRELLO_KEY / TRELLO_TOKENTrelloのKeyとToken
情報OPENWEATHER_API_KEYOpenWeatherMapのキー
情報QIITA_TOKENQiitaの個人用トークン

第1部:全API「一括通信診断」プログラム

マザーシステムの「コード.gs」を以下に書き換え、保存してから checkAllAPIs を実行してください。どの鍵が壊れているか、あるいは有効かを一気にあぶり出します。

/**

 * 全API一括疎通確認スクリプト

 */

function checkAllAPIs() {

  const props = PropertiesService.getScriptProperties().getProperties();

  const results = [];

  const verify = (name, url, options = {}) => {

    try {

      const res = UrlFetchApp.fetch(url, options);

      const code = res.getResponseCode();

      if (code >= 200 && code < 300) {

        results.push(`✅ ${name}: 疎通成功`);

      } else {

        results.push(`❌ ${name}: エラー (Status: ${code}) - 設定を確認してください`);

      }

    } catch (e) {

      results.push(`❌ ${name}: 接続失敗 - キーが未登録、またはURLが誤っています (${e.message})`);

    }

  };

  console.log("--- 診断プロセス開始 ---");

  // 1. AI: Gemini

  verify("Gemini", `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${props.GEMINI_API_KEY}`, 

    { method: "post", contentType: "application/json", payload: JSON.stringify({contents:[{parts:[{text:"Hi"}]}]}), muteHttpExceptions: true });

  // 2. 通知: Slack / LINE / Discord

  verify("Slack", props.SLACK_WEBHOOK_URL, { method: "post", payload: JSON.stringify({text:"Check"}), muteHttpExceptions: true });

  verify("LINE", "https://notify-api.line.me/api/notify", { method: "post", headers: { Authorization: `Bearer ${props.LINE_TOKEN}` }, payload: { message: "Check" }, muteHttpExceptions: true });

  verify("Discord", props.DISCORD_WEBHOOK_URL, { method: "post", contentType: "application/json", payload: JSON.stringify({content:"Check"}), muteHttpExceptions: true });

  // 3. 情報: Qiita / Weather

  verify("Qiita", "https://qiita.com/api/v2/authenticated_user", { headers: { Authorization: `Bearer ${props.QIITA_TOKEN}` }, muteHttpExceptions: true });

  verify("Weather", `https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=${props.OPENWEATHER_API_KEY}`, { muteHttpExceptions: true });

  // 4. 整理: Notion / Trello (認証形式が特殊なため簡易チェック)

  if(props.NOTION_API_KEY) results.push("ℹ️ Notion: キー登録済み (連携時に詳細テスト)");

  if(props.TRELLO_KEY && props.TRELLO_TOKEN) results.push("ℹ️ Trello: キー/トークン登録済み");

  results.forEach(r => console.log(r));

  console.log("--- 診断プロセス終了 ---");

}

第2部:マザーシステムを「核」にするための連携手順

💡 なぜ一つのプロジェクトにまとめるのか?

GASの「金庫(スクリプトプロパティ)」は、プロジェクトごとに独立しています。レシピごとに新しいプロジェクトを作ると、その度に重いAPIキーをコピペし直さなければなりません。

マザーシステムをライブラリ化して各ツールに集約することで、「一度設定すれば、一生使い回せる」環境が完成します。

マザーシステムを「ライブラリ化」することで、外部のスプレッドシートなどからその機能を呼び出せるようにします。

手順A:マザーシステムを公開する

  1. エディタ右上の「デプロイ」>「新しいデプロイ」をクリック。
  2. 種類の選択で「ライブラリ」を選び、説明に「MotherSystem v1」と入力してデプロイ。
  3. 発行された「ライブラリ ID(スクリプト ID)」をコピーします。

手順B:別のプロジェクトから呼び出す

  1. 新しいスプレッドシートを作成し、拡張機能>Apps Scriptを開きます(これが各ツールのサブシステムになります)。
  2. 左メニューの「ライブラリ」の横にある「+」をクリック。
  3. 先ほどコピーした「スクリプト ID」を貼り付けて検索。
  4. 最新バージョンを選択し、IDを「MotherSystem」にして追加します。

第3部:統合実戦!全APIが連動する「全自動モーニング・ブリーフィング」

開通式の締めくくりとして、これまでに準備した8つのAPI窓口をすべて繋いだドリーム・システムを動かしてみましょう。

このプログラムは、「天気と技術情報を取得」し、「AIが要約」し、「すべてのSNSへ通知」しながら「Notionへ記録」するという、自動化の全行程を網羅しています。

/**

 * マザーシステム:全API統合ブリーフィング

 */

function runFullSystemDemo() {

  const props = PropertiesService.getScriptProperties().getProperties();

  console.log("全システム起動...");

  // 1. 情報収集:天気とQiitaトレンド

  const weatherRes = UrlFetchApp.fetch(`https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=${props.OPENWEATHER_API_KEY}&lang=ja&units=metric`);

  const qiitaRes = UrlFetchApp.fetch("https://qiita.com/api/v2/items?page=1&per_page=1");

  const weather = JSON.parse(weatherRes.getContentText()).weather[0].description;

  const qiita = JSON.parse(qiitaRes.getContentText())[0].title;

  // 2. AI:Geminiに今日の要約を依頼

  const geminiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${props.GEMINI_API_KEY}`;

  const prompt = `天気:${weather}、最新ニュース:${qiita}\nこれらを元に、自動化エンジニアへの「朝の挨拶」を40文字で作って。`;

  const aiRes = UrlFetchApp.fetch(geminiUrl, {

    method: "post", contentType: "application/json",

    payload: JSON.stringify({ contents: [{ parts: [{ text: prompt }] }] })

  });

  const aiMsg = JSON.parse(aiRes.getContentText()).candidates[0].content.parts[0].text;

  // 3. 通知:Slack / LINE / Discord への一斉送信

  const finalMsg = `【Morning System】\n${aiMsg}\n(天気:${weather} / 記事:${qiita})`;

  UrlFetchApp.fetch(props.SLACK_WEBHOOK_URL, { method: "post", payload: JSON.stringify({ text: finalMsg }) });

  UrlFetchApp.fetch(props.DISCORD_WEBHOOK_URL, { method: "post", contentType: "application/json", payload: JSON.stringify({ content: finalMsg }) });

  UrlFetchApp.fetch("https://notify-api.line.me/api/notify", {

    method: "post", headers: { Authorization: `Bearer ${props.LINE_TOKEN}` }, payload: { message: finalMsg }

  });

  // 4. 記録:Notionへのログ保存

  UrlFetchApp.fetch(`https://api.notion.com/v1/pages`, {

    method: "post",

    headers: { "Authorization": `Bearer ${props.NOTION_API_KEY}`, "Notion-Version": "2022-06-28", "Content-Type": "application/json" },

    payload: JSON.stringify({ "parent": { "database_id": "DATABASE_ID_HERE" }, "properties": { "title": { "title": [{ "text": { "content": aiMsg } }] } } }),

    muteHttpExceptions: true

  });

  console.log("マザーシステム:全行程を正常に完了しました。");

}

これで、あなたのGoogleアカウント全体で共有できる「最強の自動化コア」が完成しました。明日から紹介する個別のレシピは、このマザーシステムに接続して、機能をどんどん拡張していく形になります。

準備完了:

診断結果がすべてOKなら、あなたの自動化環境は完璧です。次回のレシピから、具体的な業務ハックを開始しましょう!

コメント

このブログの人気の投稿

【2026年版】GAS自動化の「準備」ガイド:APIキーの入手からかんたんな動作テストまで

「GASの自動化を始めたいけど、設定が難しそう…」と不安に思っていませんか? 実は、GASで外部サービスを操るために必要なのは、 「合言葉(APIキー)」 を手に入れることだけです。 そもそも「GAS」とは? GAS(Google Apps Script)は、Googleが提供する 「Googleワークスペースを自動操縦するための魔法の杖」 です。 特別なソフトをインストールすることなく、ブラウザひとつでメール送信やデータ集計を全自動化できます。 APIとは要するに何? APIを一言でいうなら、 「サービス専用の窓口に並ぶための整理券」 です。 たとえば、あなたがデパート(Google)の厨房(AIやデータ)に直接入ることはできませんが、店員さん(API)に「整理券(APIキー)」を見せれば、代わりに料理を作って持ってきてくれます。 Gemini API:AIの「脳みそ」を呼び出す窓口 今回の自動化で主役となるのが「Gemini API」です。これはGoogleが誇る最新AIの機能を、あなたのプログラムから直接呼び出すための窓口です。 テキストの生成や要約など、これまで人間が頭を使っていた作業をGASが代わりに実行するための「脳」の役割を果たします。 1. Gemini API の整理券を「無料」でもらう まずは、AIの脳みそであるGeminiを使えるようにします。 💰 費用について:無料版で大丈夫? 「Geminiの有料プランに入っていないとダメなの?」と思うかもしれませんが、 結論、無料でOKです! 開発者向けの「Google AI Studio」には無料枠が用意されており、個人の自動化レシピを試す分には十分すぎるほど無料で使えます。 Google AI Studio にアクセスします。 左メニューの 「APIキーを作成」 をクリック。 ポイント: 初めて開いた場合、すでにデフォルトのキーが作成されていることがあります。その場合は、表示されている英数字のキーをコピーするだけでOKです! ※新しく作りたい場合は 「キーを作成」 ボタンから発行できます。 表示された長い英数字をコピーします。これが、あなたの「無料整理券(APIキー)」...

【通知】LINE・Slack・DiscordのAPI取得マニュアル

自動化の醍醐味は、GASに「チャットで報告させる」ことです。 APIキーの保存方法については、 [1-Aの記事] で解説した「金庫(スクリプトプロパティ)」の手順を先に行っておいてくださいね! 1. LINE Messaging API LINE Developers にログイン。 新規チャネルを作成し、 「Messaging API設定」 タブへ。 一番下の「チャネルアクセストークン」を発行してコピーします。 2. Slack (Webhook & API) Slack API で「Create New App」を作成。 「Incoming Webhooks」をONにして、表示されるURLをコピーします。 3. Discord (Webhooks) サーバー設定の「連携サービス」から「ウェブフックを作成」。 「ウェブフックURLをコピー」をクリック。これだけで準備完了です! 4. スクリプトプロパティへの保存 取得したキーは、[1-A]の手順で以下の名前で保存してください。 名前(プロパティ) 値 LINE_TOKEN LINEのアクセストークン SLACK_URL SlackのWebhook URL 💡 ためしにAPIを使ってみよう:金庫の確認テスト チャットへ通知を飛ばす前に、金庫に正しく合言葉が保存されているかチェックしましょう。 function testNotificationConfig() { const props = PropertiesService.getScriptProperties(); const slackUrl = props.getProperty('SLACK_URL') || "未設定"; const sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange("A1").setValue("設定確認:" + slackUrl.substring(0, 10) + "......

【情報収集】天気・技術ニュースのAPI取得マニュアル

外部の「生きたデータ」をGASに流し込むための窓口を確保しましょう。 保存方法は [1-Aの記事] の「金庫」の手順で行います。 1. OpenWeatherMap (天気予報) OpenWeatherMap に登録。 「API keys」タブにあるキーをコピーします。 2. Qiita API Qiitaの「設定」→「アプリケーション」を開く。 「個人用アクセストークン」を発行してコピーします。 3. Yahoo Finance (キー不要) Yahoo FinanceなどはAPIキーなしで数字を取る「スクレイピング」という手法を使います。具体的なやり方は各レシピ記事で紹介します! 4. スクリプトプロパティへの保存 [1-A]の手順で以下の名前で保存してください。 名前(プロパティ) 値 WEATHER_KEY 天気APIのキー QIITA_TOKEN Qiitaのアクセストークン 💡 ためしにAPIを使ってみよう:情報源の接続テスト 情報収集のパスワードが正しくセットされているか確認します。 function testDataConfig() { const weatherKey = PropertiesService.getScriptProperties().getProperty('WEATHER_KEY'); const sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange("A1").setValue(weatherKey ? "お天気API、準備完了!" : "キーが未設定です"); }