[GWSStudio100本ノック] 熱中症対策アラートが発出されていることを日中帯にChatに連携するエージェントを作成してみた

 2025.12.12 Yudai Imai

はじめに

本記事は、Google Workspace Studio(旧Flows)の実践ノウハウを100本紹介する連載「Google Workspace Studio活用方法100本ノック」の一つとなります。  

今回は、気象庁や自治体が発表する熱中症対策アラートを監視し、日中帯に全社向けGoogle Chatスペースへ注意喚起を配信するエージェントを構築します。アラート発出時にただちに通知するだけでなく、同じ状態が続いている間は再通知を抑制し、適切なタイミング(例:日中帯など)でリマインドを送る設計も取り入れます。健康経営や安全衛生活動の一環として、社内周知を自動化しましょう。

難易度 中級者向け
実現すること 熱中症アラート発出を検知し、業務時間内にChatで注意喚起。発出中は重複通知を避け、解除時に別途通知することで健康経営を促進します
想定する対象者 外回り・現場作業部門を抱える企業の総務、人事、安全衛生担当
利用サービス Google Sheets, Google Chat

ユースケース

今回作成するエージェントの代表的なユースケースとしては以下のようなことが考えられると思います。

  • 全社向け健康アラート周知
    • 熱中症特別警戒アラートが新たに発表されたら即時通知し、以降はアラートの内容が変わった時もリマインドします。
  • 現場作業チームの行動喚起
    • 建設現場や物流倉庫など暑さの影響を受けやすいチーム向けに、水分補給・休憩のリマインドを自動配信することもできます。

前提条件

今回のエージェントを作成するための前提条件は以下となります。Google Workspace Studioは2025年12月時点ではそれまではFlowsという名前で提供されていたサービスからリネームされたサービスかつまだ提供されて間もないため、このブログの内容が最新ではなくなる可能性があることをご了承ください。
  • 利用環境:Google Workspace Studioにアクセスできるユーザーであること。
  • 利用アプリ:通知先のGoogle Chatスペース(またはDM)が事前に用意されていること。

エージェントの全体図

今回作成したエージェントは8ステップの少し複雑な構成となっています。

スターターとして「On a schedule」を設定し、毎時エージェントが実行されるようにしています。

続くアクションでは、まず「Ask Gemini」ステップで現時点で熱中症対策アラートが発出されているかを確認して、その後の「Extract」ステップでGeminiが調査した情報を抽出します。そして、「Add a row」ステップで熱中症対策アラートの情報の履歴を持つようにします。続いて2回連続で「Decide」ステップを経由してからこの2つの判定でTRUEとなった場合のみ、「Post in a space」ステップで熱中症対策アラートの情報をChatスペースへ連携するような作りとしています。

構築手順

今回作成したエージェントの構築手順は以下のようになっています。

スプレッドシートの準備

熱中症対策アラートの情報の履歴を持つためのスプレッドシートを準備します。今回はTimeとAreaの2列のみの列を作成するようにします。

Starter

Starterで「On a schedule」を選択して、Dateには月曜日の日付、Timeには「8:00am」を選択します。そして、毎週実行するようにしたいのでRepeatには「Weekly」を入れるようにしました。Time zoneも設定できますがデフォルトの日本時間となるようにしています。

Actions

最初のActionsでは「Ask Gemini」を選択して、Enter a promptの欄に「現在の「熱中症警戒アラート」および「熱中症特別警戒アラート」の日本国内における発令状況を都道府県別、または地域別に詳しく調査し、発令されている場合はその地域名と警戒レベルを箇条書きでまとめてください。現在の日本時間の時刻も含めて出力してください。発令されていない場合は、「現在、アラートは発令されていません」と回答してください。」と入力します。Sources Gemini can useは「Web only」に変更してください。

次のステップでは「Extract」を設定します。Content to analyzeのContentにはStep2でGeminiが調査した内容を含める必要があるので、「Step2: Content created by Gemini」をVariablesから設定してください。そして、抽出する内容をCustom content nameから以下の2つを設定してください。

Custom content name Description for Gemini
Area 日本で熱中症警戒アラートが発出されている地域一覧の情報
Time 日本で熱中症対策アラートの調査を実施した時間情報(2025-01-01 14:00:00の形式)

次の「Add a row」ステップを追加してください。前のステップで抽出した熱中症対策アラートの情報をスプレッドシートに記録します。Spreadsheetの欄には「スプレッドシートの準備」で作成したファイルを、Sheetにはデフォルトで作成される「シート1」を、Add rowは「After last data row」を設定してください。Add data by columnにはStep3で抽出した内容を設定する必要があるので、Timeには「Step3: Time」、Areaには「Step3: Area」を設定してください。

続けて「Decide」ステップを2回設定します。1つ目のステップではEnter a promptの欄には「現在の日本時間が平日の9時から18時の場合にtrue、それ以外の時間の場合はfalseを出力して下さい。 ​​」を入力してください。この時の日中帯の定義を9時から18時としています。

もう一つの「Decide」ステップについては以下のプロンプトを入力してください。[]で囲まれている内容はVariablesから設定するようにしてください。

あなたはスプレッドシートに記録された熱中症対策アラートの更新ログを判定するレビュー担当です。
与えられる表(時刻降順または昇順のいずれか)から、次の手順に従って「TRUE」または「FALSE」のいずれかだけを出力してください。

判定手順
1. 表の中で最も新しい行を「最新行」とする。ここでの最新は日時列(Timestampなど)の最大値とする。
2. 最新行と同じ日付(例:2025-07-21)の行だけを抽出し、その中で最新行より前に記録された行があるか確認する。
3. 最新行のArea列が空白、または「解除」「解除済」「解除しました」「clear」「cleared」「no alert」など解除を示す語句を含む場合は、前行の有無にかかわらず「FALSE」を返す。
4. 同じ日付の前行が存在しない(=その日最初の記録)で、かつ最新行のArea列が空白でも解除ワードでもない場合は「TRUE」を返す。
5. 同じ日付の前行が存在する場合は、最新行のArea列と最も直近の前行のArea列を比較する。値が同じなら「FALSE」、異なれば「TRUE」。ただしステップ3の解除判定に該当する場合は「FALSE」とする。
6. 上記以外の文字列・説明は一切出さず、「TRUE」または「FALSE」のみを出力する。

以下にスプレッドシートのリンクを与えるので、判定を行ってください。
[Step4: Spreadsheet link]

そして、「Check if」ステップで前2つの処理の結果を判定します。Step5とStep6の結果をそれぞれ判定する設定を実施します。どちらも「is true」の場合のみ次の処理を実行するようにします。

最後の「Post in a space」ステップはCheck ifのサブステップとして設定します。Spaceの設定は今回のために新しく作った「全社」というスペースを設定し、Messageには「熱中症対策アラート情報:​」を入力した後にStep2で生成した内容となる「Content created by Gemini」をVariablesから設定するようにしてください。

実行テスト

作成したエージェントを有効化します。エージェントの下部に存在している「Turn on」のボタンを押してエージェントを有効化します。

今回作成したエージェントはスケジュール実行となっているため、Turn onのボタンの横にあるTest runボタンからテスト実行させてみたいと思います。ボタンを押すとTest runの画面が出てくるので、Startのボタンを押してみます。

テスト実行された結果を確認してみます。各Stepの実行結果を確認するとちゃんとプロンプトの通りに熱中症アラートの情報を取得した後に抽出しています。現在は11月のため熱中症アラートは発令されない時期のため、アラートは出ていないようです。そして、抽出した結果をスプレッドシートに書き込む処理についても正常に完了しています。

後半の実行内容も確認していきます。2回連続の「Decide」の結果も確認していきます。平日の9時から18時かどうかの判定をしているステップでは実行タイミングは19時過ぎだったためFALSEとなっており、スプレッドシートへの熱中症対策アラートの情報の確認では新しい行の追加で今日初めての処理となりArea列が空白となるので手順3によりFALSEと判定されています。そして、「Check if」ではどちらもTRUEでなければ後続の処理は実施しないので何もせずに終了となっています。

まとめ

熱中症アラートを毎回手作業で確認し周知する負担は大きいものの、Workspace Studioを使えば発出と解除の両方を自動検知し、適切な頻度でChat通知を送る仕組みを構築できます。

特に、スプレッドシートなどで「最後の通知日時」「現在のアラート状態」を記録しておくと、同じ状態が続いている時間帯に通知を連発しないよう制御でき、社員にとっても煩雑になりません。

まずは全社スペース向けに導入し、対象地域やメッセージ内容を自社の運用に合わせて調整しながら、健康経営を支える情報共有の自動化を進めていきましょう。

 


BACK TO LIST

   

Recent post最新記事

Contentsコンテンツ