Google カレンダーから指定月の予定を抽出し、勤務表フォーマットを Google スプレッドシートへ自動転記する Python スクリプトです。
- 休憩時間自動控除・合計行・土日色分け・ヘッダー装飾
- 終日イベント (
date) / 時間指定イベント (dateTime) 両対応 - ページネーション 完全対応(
nextPageToken) - Sheets API 60 req/min 制限を 65 秒待機で回避
- 実働時間は跨日対応式
IF(C<B,(C+1)-B,C-B)*24-D - 取得件数 / API 呼び出し回数をデバッグ出力
pip install
pandas pytz gspread gspread_dataframe gspread-formatting
google-api-python-client google-auth google-auth-oauthlib
- 新規プロジェクトを作成
- Calendar API と Google Sheets API を有効化
- OAuth 同意画面 ▸ 外部 ▸ テスト公開
- OAuth 2.0 クライアント ID(デスクトップ)を作成し、
credentials.jsonをスクリプトと同じフォルダに配置 - 初回実行時にブラウザ認証が走り、
token.jsonが自動保存されます。
キーワード1,キーワード2,...,スプレッドシートID
例)Hoge,ホゲ,12w3e4r5t6y7u8i9o0drftgyhuji
- 行末がスプレッドシート ID(URL の
/d/と/editの間) - それ以前はイベントタイトルに含めるキーワード(大文字小文字無視・複数可)
python Timesheet_Tool.py
対象年月 (YYYYMM): 202504
- 月初 0 時 UTC 〜 翌月 1 日 0 時 UTC の予定を全件取得
- キーワードごとにシートへ出力
- シート完了ごとに 65 秒カウントダウンを表示
- 取得件数 / API コール回数を集計表示
例: 📆 hoge会社 : 358 events / 2 request(s)
| 変数名 | 定義場所 | 既定値 | 説明 |
|---|---|---|---|
WAIT_SEC |
ソース先頭 | 65 | シート書き込み後の待機秒数 |
DEBUG_EVENTS |
ソース先頭 | False | True にすると各イベントを逐次表示する |
| 症状 | 対処方法 |
|---|---|
| Quota exceeded (429) | WAIT_SEC を延ばす / 同時に処理するシート数を減らす |
| Permission denied (403) | 対象シートに認証アカウントを「編集者」として共有する |
| 終日予定が抜ける | 本ツールは date 対応済み。タイトルにキーワードが含まれているか確認 |
| 月末が欠ける | ページネーション実装済み。スクリプトを最新版に更新 |