ブログ | XIMIX

[GWSStudio100本ノック] 一日をスマートに開始。毎朝の予定をChatでリマインド

作成者: XIMIX松浦|2025.12.22

はじめに

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

今回は、毎朝カレンダーを確認する手間を減らし、Google chatのみで予定を確認するのが目的です。

難易度 初心者向け
実現すること 毎朝、当日の予定一覧をChatに自動送信
想定する対象者 毎朝カレンダーを確認している人
利用サービス Google calender, Google sheets, Google Chat , Gemini

活用イメージ

今回作成する機能では、

  • 予定の確認
    • 出社・始業時にGoogle ChatのDMを開くだけで、その日の重要な予定(会議、締め切りなど)を瞬時に確認できます。
  • スケジュールの見落とし防止
    • 重要な予定や会議を見落とすリスクを軽減します。
  • カスタマイズの自由度
    • この基本フローを応用通知をChatルームに送ってチームに共有したり、特定のキーワードを含む予定だけを抽出したりするなど、自由な拡張が可能です。

前提条件

今回のエージェントを作成するための前提条件は以下となります。Google Workspace Studioは2025年12月時点ではそれまではFlowsという名前で提供されていたサービスからリネームされたサービスかつまだ提供されて間もないため、このブログの内容が最新ではなくなる可能性があることをご了承ください。

  • 利用環境:Google Workspace Studioにアクセスできるユーザーであること。
  • 利用アプリ:Google カレンダーが利用でき、指定するカレンダーの予定が作成されていること。
  • Google spredsheetとGoogle Apps Script (GAS) による事前準備
    2025年12月現在、Workspace Studioにはカレンダーの予定を直接リスト化するアクションがないため、GASを使用してカレンダー情報をスプレッドシートに連携させます。

    ①スプレッドシートに予定名・開始日時・終了日時・作成日時のフィールドを作成します。

    ②Google Apps Script (GAS)を以下コードを保存して、毎日6-7時に実行するトリガーを作成します。(毎朝8時にChatするため)
function exportCalendarToSheet() {
  // --- 設定 ---
  const sheetName = 'シート1'; // データを出力するシート名
  const calendarId = 'primary'; // メインのカレンダー ('primary') または特定カレンダーのメールアドレス
  // --- 設定終 ---

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(sheetName);
  
  if (!sheet) {
    Logger.log(`エラー: シート名 ${sheetName} が見つかりません。`);
    return;
  }

  // 実行日の日付範囲(本日00:00:00 から 本日 23:59:59)を設定
  const today = new Date();
  const startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0); // 0時0分0秒
  const endOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59); // 23時59分59秒

  // Google Calendar から本日のイベントを取得
  const calendar = CalendarApp.getCalendarById(calendarId);
  const events = calendar.getEvents(startOfDay, endOfDay);
  
  // データを格納する配列
  const data = [];
  const now = new Date(); // データ作成日時

  // イベント情報から必要なデータを抽出し配列に追加
  events.forEach(event => {
    // 抽出情報: 予定名, 開始日時, 終了日時
    const eventData = [
      event.getTitle(),
      event.getStartTime(),
      event.getEndTime(),
      now
    ];
    data.push(eventData);
  });

  // --- スプレッドシートへの書き込み ---
  
  // 既存のデータをクリア(ヘッダー行は残す)
  sheet.getRange(2, 1, sheet.getMaxRows(), sheet.getMaxColumns()).clearContent();

  if (data.length > 0) {
    // 抽出したデータをシートの2行目以降に書き込む
    sheet.getRange(2, 1, data.length, data[0].length).setValues(data);
  }
  
  Logger.log(`本日 (${startOfDay.toLocaleDateString()}) の予定 ${data.length} 件をスプレッドシートに書き込みました。`);
}

 

エージェントの全体図

今回作成したエージェントは4ステップの非常にシンプルな構成となります。
スターターとして平日の8時時点で、スプレッドシートに登録されている予定をChatを通知されます。

構築手順

各ステップについて詳細を説明します。

  1. On a schedule
    平日の毎朝8時に実行されるように設定します。
    Time zoneを日本時間にすることを忘れないようにしてください。

  2. Get sheet contents
    「Spreadsheet」には事前に作成していたスプレッドシートを選択します。

    「Sheet」には該当のシートを選択します。複数のシートを選択することができないので注意してください。
    「Find rows to get values from」では、選択した列の値を指定して、データを取得する行を選択します。
    今回は予定名を「予定名」と指定し、Valueは「Any」と指定します。


  3. Ask Gemini
    Geminiに必要な情報を抽出するプロンプトを入力します。自由なプロンプトを入力してください。
    関数や様々な抽出コマンドを使用しないので、オーバーヘッドを減らすことが出来ます。
    今回はスプレッドシートの情報をGeminiに読ませる必要がりますので、「Sources Gemini can use」のドロップダウンは以下画像のように選択してください。



  4. Notify me in Chat
    Chatで送信するメッセージを入力します。任意でメッセージを入力してください。
    「+ Variables」からGeminiの変数を選択することで、回答内容を出力することができます。

実行テスト

  1. 「Test run」から、「On a schedule」の時間を待たなくてもアクションの動作確認できます。


  2. 「Start」をクリックするとアクション実行されます。
    スプレッドシートを読み込んで、Gminiが実行され回答内容が表示されています。
    「Run Compuleted」を確認できれば、フローが成功しています。


  3. Chatを開きます。「アプリ」のフィールドに設定した「agent名」でメッセージを確認することできます。

まとめ

毎朝カレンダーを開くことなく、Chatを開くだけでカレンダーに登録されてある予定を確認することができます。

Google Workspace Studioなら、Geminiをフローに含めることができるので関数や様々な抽出コマンドを使用せずプロンプトで自由に抽出できます。

カレンダーチェック・メールの確認・Chatの確認など、毎朝チェックしなければいけないタスクがあると思いますが少しでも効率が上がればよいかなと思います!