くまがいブログ

エンジニアに目指す社会人

カルディセールカレンダー通知機能作った!!

目次

はじめに


コーヒー好きの皆さん、こんにちは!

最近、カルディのコーヒー豆は値上がり傾向…。「買った直後にセール開始」の悲しみを経験された方も多いのではないでしょうか?

そこで、Google Apps ScriptとDiscord通知を組み合わせた「カルディセールカレンダー通知機能」を作成しました。週末のドリップコーヒータイムをもっと計画的に、もっとお得に楽しみましょう!

なぜ作ったのか


  • 値上がりするコーヒー豆

    200gで896円3年前くらいに比べると1.5倍くらいの価格帯に。

  • セール後の後悔

    欲しい豆を買ったあとにセールが始まり、「やられた…」とガッカリ。

  • 週末のドリップ習慣

    結婚祝いでいただいたバルミューダのケトルを使い、土日はドリップコーヒーを淹れるのが日課に。

  • いちいち見に行くのは大変

    セール情報の通知機能が欲しい。

機能概要


  1. Google Apps Script でカルディ公式サイトからセール情報を自動取得
  2. スクリプトプロパティで店舗名設定&お気に入り店舗を管理
  3. Google カレンダー(primary)に全日イベントを重複なく登録
  4. お気に入り店舗のセール開始を Discord(Webhook)へ通知
  5. 時間主導トリガーで毎日自動実行

リポジトリ: https://github.com/kuma6082/kaldi-sale-calendar-bot

実行結果

Googleカレンダー イベント登録

Image in a image block

Discord通知

Image in a image block

実装ポイント


  • 設定取得 (getConfig)
    • FAVORITE_STORESTORE_NAMES_TO_CHECK を ScriptProperties から読み込み
    • JSON パース・重複排除して店舗リストを生成
  • セール情報取得 (getKaldiSaleData)
    • UrlFetchApp.fetch で公式ページを取得
    • 正規表現で店舗名と開始・終了日を抽出し、配列で返却
  • カレンダー登録 (createKaldiSaleEvents)
    • CalendarApp.getDefaultCalendar() → 既存イベントを getEvents で検索
    • 未登録なら createAllDayEvent、お気に入り店舗は Discord 通知
  • Discord通知 (notifyToDiscord)
    • Webhook URL に対して POST リクエストでメッセージ送信
  • 自動実行トリガー
    • Apps Script の時間主導型トリガーで毎日 createKaldiSaleEvents を実行

セットアップ手順


  1. スクリプトプロジェクト作成

    Google スプレッドシートまたはカレンダーから「拡張機能」→「Apps Script」を開く。

  2. コード登録

    提供の .gs ファイルをコピーして貼り付け。

  3. スクリプトプロパティ設定

    プロジェクト設定の「スクリプトのプロパティ」に以下を登録してください:

    キー 値(例)
    FAVORITE_STORE ららテラス川口店
    STORE_NAMES_TO_CHECK ["エミオ狭山市店","武蔵小山店"]
    DISCORD_WEBHOOK_URL https://discord.com/api/webhooks/...
  4. 実行権限の承認

    初回実行時に表示されるダイアログでスクリプトの権限を承認。

  5. トリガー設定

    自動実行したい場合、Apps Script エディタの「トリガー」から以下を追加:

    • 関数:createKaldiSaleEvents
    • イベント:時間主導型 → 毎日 (例: 09:00)

メリット・デメリット


メリット
  • セール情報を自動取得&通知
  • 計画的なまとめ買いが可能
  • 一度設定すればほぼメンテ不要
デメリット
  • API変更による動作停止リスク
  • Google アカウント&Discord 必須
  • カレンダーとWebhookの権限設定が必要

おわり


お気に入りのコーヒー豆を賢くお得にゲットして、週末のドリップタイムを存分に楽しみましょう!

GASとDiscordを組み合わせた通知は、一度設定すれば以降は気にせず“ほったらかし”でOKなのが最大の魅力です。これまでに通知関連ツールを3つ開発してきましたが、今回のカルディセール通知も手軽かつ便利!

バグ報告や機能要望はお気軽に GitHub までどうぞ☕️