8000 GitHub - kangaechu/calsrecoil · GitHub
[go: up one dir, main page]

Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

calsrecoil

Googleカレンダーの予定を自動で処理し、記録タグを付与する自動化ツール


概要

calsrecoilは、Googleカレンダー上の特定条件のイベントを自動で検出し、 指定したシェルスクリプトを並行実行、その結果をイベントのタイトルに 🆗または🆖タグとして自動追記するGo製ツールです。

  • サービスアカウント認証方式対応
  • 終了時間を過ぎた予定で、タイトルに🆗や🆖が含まれていないイベントが対象
  • イベントごとにシェルスクリプト(calsrecoil.sh)を自動実行(並行実行対応)
  • 正常終了した場合は🆗、失敗した場合は🆖を自動付与
  • 🆖は最大5回まで付与(リトライ上限)
  • Googleカレンダーの予定編集にも自動対応
  • 環境変数でカレンダーIDや待機時間などを指定可能

必要条件

  • Go 1.27.1 以降
  • Google Cloud Consoleで「サービスアカウント」作成
  • サービスアカウント用JSONキー(例:service-account.json)
  • サービスアカウントを対象カレンダーに「編集者」として共有済み
  • シェルスクリプト(calsrecoil.sh)のパス指定
  • カレンダーID

サービスアカウントの設定手順

  1. Google Cloud Consoleでプロジェクト作成
  2. サービスアカウント作成
    • [IAMと管理] → [サービスアカウント] → 新規作成
    • 「キー」タブからJSONキーを生成・ダウンロード(例:service-account.json)
  3. 対象のGoogleカレンダーを開き、「設定と共有」→「特定のユーザーと共有」で
    • サービスアカウントのメールアドレスを「編集者」として追加

セットアップ

  1. このリポジトリをクローン

    git clone https://github.com/your-account/calsrecoil.git
    cd calsrecoil
  2. 依存パッケージのインストール

    go mod tidy
  3. service-account.json をプロジェクトディレクトリに配置

  4. 環境変数を設定

    • CALENDAR_ID:対象カレンダーのID
    • RUN_AFTER_MINUTES:終了後何分経過したイベントを対象にするか(省略時0)
  5. 必要に応じてmain.go内の定数を編集

    • scriptFile:実行するシェルスクリプト名(デフォルト: calsrecoil.sh)
    • timeZone:タイムゾーン(デフォルト: Asia/Tokyo)

使い方

go run main.go

実行時の動作

  • 直近1週間のイベントを取得し、終了済みかつ未処理(🆗/🆖なし)のものを抽出
  • 各イベントごとに calsrecoil.sh を以下の引数で実行:
    1. 開始日時
    2. 終了日時
    3. タイトル(タグ除去済み)
    4. 場所
    5. 説明
  • シェルスクリプトの終了コードでタグを自動付与
  • 失敗時は最大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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0