Googleカレンダーの予定を自動で処理し、記録タグを付与する自動化ツール
calsrecoilは、Googleカレンダー上の特定条件のイベントを自動で検出し、
指定したシェルスクリプトを並行実行、その結果をイベントのタイトルに
🆗または🆖タグとして自動追記するGo製ツールです。
- サービスアカウント認証方式対応
- 終了時間を過ぎた予定で、タイトルに
🆗や🆖が含まれていないイベントが対象 - イベントごとにシェルスクリプト(
calsrecoil.sh)を自動実行(並行実行対応) - 正常終了した場合は
🆗、失敗した場合は🆖を自動付与 🆖は最大5回まで付与(リトライ上限)- Googleカレンダーの予定編集にも自動対応
- 環境変数でカレンダーIDや待機時間などを指定可能
- Go 1.27.1 以降
- Google Cloud Consoleで「サービスアカウント」作成
- サービスアカウント用JSONキー(例:
service-account.json) - サービスアカウントを対象カレンダーに「編集者」として共有済み
- シェルスクリプト(
calsrecoil.sh)のパス指定 - カレンダーID
- Google Cloud Consoleでプロジェクト作成
- サービスアカウント作成
- [IAMと管理] → [サービスアカウント] → 新規作成
- 「キー」タブからJSONキーを生成・ダウンロード(例:
service-account.json)
- 対象のGoogleカレンダーを開き、「設定と共有」→「特定のユーザーと共有」で
- サービスアカウントのメールアドレスを「編集者」として追加
-
このリポジトリをクローン
git clone https://github.com/your-account/calsrecoil.git cd calsrecoil -
依存パッケージのインストール
go mod tidy
-
service-account.jsonをプロジェクトディレクトリに配置 -
環境変数を設定
CALENDAR_ID:対象カレンダーのIDRUN_AFTER_MINUTES:終了後何分経過したイベントを対象にするか(省略時0)
-
必要に応じて
main.go内の定数を編集scriptFile:実行するシェルスクリプト名(デフォルト:calsrecoil.sh)timeZone:タイムゾーン(デフォルト:Asia/Tokyo)
go run main.go- 直近1週間のイベントを取得し、終了済みかつ未処理(
🆗/🆖なし)のものを抽出 - 各イベントごとに
calsrecoil.shを以下の引数で実行:- 開始日時
- 終了日時
- タイトル(タグ除去済み)
- 場所
- 説明
- シェルスクリプトの終了コードでタグを自動付与
- 失敗時は最大5回までリトライタグ(
🆖)を付与
| 変数名 | 必須 | 説明 |
|---|---|---|
| CALENDAR_ID | 必須 | 対象GoogleカレンダーのID |
| RUN_AFTER_MINUTES | 任意 | 終了後何分経過したイベントを対象にするか |
| LOG_LEVEL | 任意 | debugでスキップ理由・スクリプト出力も出力(既定は通常ログ) |
実行のたびに、[calsrecoil] タグ付きで以下を標準エラー出力(journaldで集約可能)に出力します。
[calsrecoil] 実行開始: calendar取得=5件 対象=1件 window(終了時刻)=2026-07-08T10:10:00+09:00〜2026-07-15T09:40:00+09:00 run_after=30min
[calsrecoil] 対象: summary="XXXラジオ" station=TBS time=2026-07-15T10:00:00+09:00〜2026-07-15T10:30:00+09:00
[calsrecoil] 実行: summary="XXXラジオ" station=TBS scriptを起動
[calsrecoil] 完了: summary="XXXラジオ" exit=0
[calsrecoil] 実行完了: 対象=1件 成功=1 失敗=0
window(終了時刻)は選定に使った時間窓で、イベントの終了時刻が下限(1週間前)〜上限(now - RUN_AFTER_MINUTES)に収まる予定が対象です。- 個人情報保護の方針により、
CALENDAR_IDはログに出力しません。
MIT License