自動化LINEbotの基本

【第2回】実用化へ!Botに「今日の天気」を喋らせる

  • ブログのメッセージが「Hello World」のままで、ちょっと物足りない...。
  • Botがただ動くだけじゃなく、本当に役に立つ情報をくれるようにしたい!
  • 天気APIとかJSON解析とか、難しそうで手が出せない...。

こんな悩みを解決できる記事になっています!

なぜなら、これからご紹介する「無料の天気API連携」を実施することで、あなたのBotは毎日「今日の天気」と「最高気温」を自動で通知してくれる、生活に密着した秘書に進化するからです。

この記事を読み終えることで、プログラミング知識ゼロでも「外部APIと連携する方法」が理解できるだけでなく、ワークを通して「自動で天気を教えてくれるBot」が身についた状態になります。

記事の前半では『外部APIの仕組みと、無料で使えるツールの紹介』を解説しつつ、記事の後半では『AIに書いてもらったコードでBotを実用化する方法』を具体的に解説します。

Botに「天気予報」という新しい「目」を与え、朝の準備を格段に楽にする「秘書Bot」に進化させましょう!

Botに新しい「目」を与える!外部APIの仕組みを理解する

Bot開発において、外部API連携こそが最もエキサイティングな瞬間です。

Botを真の秘書にするには「外部API」が必須!

Botが「Hello World」以上のことを言うためには、外部の情報自力で見てくる「目」が必要です。この目が、インターネット上の情報提供窓口、「外部API」です。

Botは天気予報を自力で予測できないから。

Botの「脳」(GAS)は、Googleスプレッドシートの中の計算は得意ですが、「今日の東京の天気」といった外部のリアルタイム情報は知ることができません。Botは、天気予報を専門に扱っている「外部サービス」に情報交換窓口(API)を通じて尋ねる必要があるのです。

GASとAPIの「合言葉」リクエスト

例えるなら、GASが「OpenWeatherMapさん、東京の天気を教えて!」という「リクエスト」を送り、OpenWeatherMapが「JSON」という形式のデータを返してくれるというやり取りです。

主体役割動き
GAS(Botの脳)情報要求者LINEの合鍵と、天気APIの合鍵を両方持って、天気情報を要求する。
OpenWeatherMap(天気API)情報提供者GASのリクエストを承認し、天気の詳細をJSON形式で返す。

外部API連携こそ、あなたの自動化の可能性を無限に広げる鍵です。

天気だけでなく、株価、ニュース、カレンダーの予定など、あらゆる情報をBotに取得させられるようになります。

【実践①】新しい合鍵(APIキー)と地域の緯度・経度を取得せよ

これが「地域密着型の秘書Bot」を生み出すための、最も重要な情報収集ステップです。

Botを動かすには、二つの「合鍵」と「ピンポイントな住所」が必要です。

BotはLINEの鍵(チャネルアクセストークン)だけでは天気にアクセスできません。天気情報を引き出すための**「OpenWeatherMap専用の合鍵(APIキー)」と、知りたい場所を正確に特定するための「緯度・経度」**の二つを準備します。

APIキーは「身分証明書」、緯度・経度は「Botのカーナビ」です。

  • APIキー:BotがOpenWeatherMapにアクセスする際の「私は正規の利用者です」という身分証明書の役割を果たします。これがないと、APIはデータを渡してくれません。
  • 緯度・経度:Botは「東京」という大雑把な地名ではなく、カーナビのようにピンポイントな座標(北緯35.6度、東経139.6度など)で場所を認識します。これにより、正確な地域の予報を取得できます。

具体的な取得手順

  1. OpenWeatherMapでOne Call API 3.0のAPIキーを取得
    • OpenWeatherMapの公式ウェブサイトへ行き、無料ユーザー登録を完了させます。(※ One Call API 3.0が無料アカウントで利用可能です。)
    • ダッシュボードの「API keys」セクションで発行された長い文字列をコピーし、必ずメモしておきましょう
  2. 地域の緯度・経度を調べる
    • 精度の高いものにするにはGoogleで「[あなたの地名] 緯度 経度」と検索します。(例:「大阪駅 緯度 経度」)
    • 検索結果に出た、34.7024(緯度)と135.4959(経度)のような数値をメモしておきます。小数点以下も正確に控えてください。

大雑把でよければ指令文での設定で大丈夫です

下記赤枠がAPIキーです。指令文を入れるときにコピペして貼り付けましょう

このAPIキーと緯度・経度こそが、Botを「ただの通知マシン」から「地域密着型の秘書」へと進化させる最初の情報源となります。

AIに「チートコード」を投げて、Botの脳(コード)を完成させる

いよいよ、プログラミング知識をスキップするための**「チートコード」**を使います。

あなたがやることは、たった一つ。これから提示する「AIへの指令文(プロンプト)」をAIに送るだけです。Botの機能設計と複雑なAPI連携処理は、すべてAIに丸投げしましょう!

AIは、あなたの代わりに「天気APIにアクセス」「JSONを解析」「気温で絵文字と気遣いコメントを自動追加」「LINEで通知」という一連の処理を完璧にこなすGASコードを生成してくれます。

以下の**指令文(プロンプト)**をコピー&ペーストして、AIにBotの脳(Code.gs)を書いてもらいましょう。

【AIへの指令文(プロンプト)】

Google Apps Script (GAS)で動作するJavaScript関数を作成してください。

関数名は sendWeatherNotification とし、以下の機能を実行してください。

定数とAPIの定義(ユーザー入力エリアの設定):

【AIへの指示】 生成するGASコードの先頭に、ユーザーが個人情報を入力しやすいように、// ⚠️ 【重要:必ず入力してください】あなたの個人情報設定エリア というヘッダーと詳細な日本語コメントを付けて、以下の定数を定義してください。

LINEの定数(CHANNEL_ACCESS_TOKEN, USER_ID)と、OpenWeatherMapの定数(WEATHER_API_KEY, CITY_LATITUDE, CITY_LONGITUDE)を定義部に含めてください。

OpenWeatherMapの「Current Weather」APIエンドポイント(https://api.openweathermap.org/data/2.5/weather)を使用し、緯度・経度、APIキーを組み込んだリクエストURLを作成してください。単位は摂氏(units=metric)、言語は日本語(lang=ja)に設定してください。

天気データの取得と解析:

UrlFetchApp.fetch を使ってOpenWeatherMap APIを呼び出し、天気情報を取得してください。

取得したJSONレスポンスを JSON.parse で解析し、以下の情報を変数に格納してください。

現在の天気概況(weather[0].description)

現在の気温(main.temp)

メッセージの組み立て(気遣いロジックの追加):

取得した気温(currentTemp)に基づき、以下の条件で「気遣いコメント」と「絵文字」を決定してください。

25℃以上の場合:「今日は暑くなりそうです!熱中症に注意してくださいね。」絵文字:🥵

10℃以下の場合:「冷え込みます。暖かい服装でお出かけください。」絵文字:🥶

それ以外:「快適に過ごせそうです。」絵文字:🌡️

これらの情報を用いて、LINEに送信するテキストメッセージを組み立ててください。

LINEへの通知:

LINE Messaging APIのPushメッセージエンドポイント(https://api.line.me/v2/bot/message/push)を使用し、定義したUSER_IDにテキストメッセージを送信してください。

リクエストヘッダーには、CHANNEL_ACCESS_TOKENを用いたAuthorization設定を必ず含めてください。

処理の成功/失敗をLogger.logに出力してください。
定数名意味補足(あなたが入力すべき情報)
CHANNEL_ACCESS_TOKENLINE Botの合鍵LINE Developersで発行したトークンです。
USER_ID通知を送る宛先IDあなた自身のLINEアカウントのIDです。
WEATHER_API_KEYOpenWeatherMapの合鍵天気APIを利用するためのキーです。
CITY_LATITUDE / CITY_LONGITUDE天気を知りたい場所緯度と経度の座標(数値)です。

Botの「脳」で呪文を読み解く!JSON解析の初歩

AIが生成したコードの中に、以下の魔法のような行があるはずです。

取得したJSONレスポンスを JSON.parse で解析し、以下の情報を変数に格納してください。

JSONとは、Botが受け取る「呪文のようなテキスト」です。

外部API(OpenWeatherMap)がBotに返してくれる天気情報は、人間が見ても分かりにくい、ただの長いテキスト(JSON形式)です。これをJavaScriptが理解できる「オブジェクト」に変換するのが、JSON.parse()という呪文の役割です。

オブジェクトに変換すれば、必要な情報に直接アクセスできます。

JSON.parse()によって、Botは天気情報を以下のシンプルな形式で読み取れるようになります。

取得したい情報オブジェクト内の場所AIが生成したコード
現在の天気概況weather[0].descriptionconst weatherDescription = weatherData.weather[0].description;
現在の気温main.tempconst currentTemp = Math.round(weatherData.main.temp * 10) / 10;

これでBotは、あなたのピンポイントな場所の気温と天気を正確に把握することができました!

実用的な「気遣いLINE」を完成させる

Botの価値は、単なる情報の羅列ではありません。「あなたへの気遣い」を添えてこそ、真の秘書Botです。

Botのメッセージには「感情的な価値」が必要です。

AIが生成したコードは、ステップ8で取得したcurrentTemp(現在の気温)を使い、以下のような条件分岐(if文)で、送るべきメッセージを自動で変化させています。

気温の条件気遣いコメント絵文字
25℃以上「今日は暑くなりそうです!熱中症に注意してくださいね。」🥵
10℃以下「冷え込みます。暖かい服装でお出かけください。」🥶
その他「快適に過ごせそうです。」🌡️

条件分岐(if文)でメッセージにパーソナルな感情を演出します。

このロジックにより、Botは単なる天気予報士ではなく、あなたの健康を気遣う秘書に進化します。Botが自動で組み立てた「気遣いメッセージ」は、最後にLINE Messaging APIを通じてあなたのもとに届くのです。

【最終確認】 GASエディタで、**CHANNEL_ACCESS_TOKENUSER_IDWEATHER_API_KEYCITY_LATITUDECITY_LONGITUDE**の5つの値を、あなたがメモした情報に置き換えましたか?

置き換えたら、GASエディタで「実行」ボタンを押してテスト通知を試してみてください!

6. まとめ

お疲れ様でした!

これであなたのBotは、「今日の天気」「現在の気温」を正確に把握し、さらに気温に応じた「気遣い」まで添えて、毎日決まった時間に通知を送ってくれる、実生活に役立つ本物の秘書Botになりました!

プログラミング知識ゼロでも、AIへの「指令文」と3つの合鍵だけでここまで到達できるのが、AI時代のBot開発の最大の魅力です。

-自動化LINEbotの基本