Contents
✅ この記事はこんな人におすすめ
- 自分が何にどれだけ時間を使っているか把握したい
- Googleカレンダーを使っているけど、記録の整理が面倒
- GAS(Google Apps Script)で時間管理を自動化したい
- Excelやスプレッドシートへの集計を効率化したい
はじめに|時間の「見える化」は最強の生産性ツール
「時間がない」「1日が終わるのが早い」と感じていませんか?
原因は、“何に時間を使っているかが見えていない”ことにあります。
Googleカレンダーは予定を記録するのに便利ですが、「あとから見返して集計するには不向き」という欠点もあります。
そこで活躍するのが GAS(Google Apps Script)。
GASを使えば、カレンダーのイベントを自動取得して、作業内容ごとに合計時間を算出・スプレッドシートに出力することができます。
実現すること|完成形のイメージ
GASでできること:
内容 | 実現方法 |
---|---|
カレンダーイベントの自動取得 | GASでAPI経由で読み込み |
作業カテゴリ別の分類 | イベントタイトルに「#タグ」などで分類 |
集計結果をスプレッドシートに出力 | 日別/週別/カテゴリ別に自動集計 |
👇 スプレッドシートに以下のようなデータが自動で出力されます:
日付 | カテゴリ | 作業時間(分) |
---|---|---|
2025-06-03 | #執筆 | 120 |
2025-06-03 | #会議 | 45 |
2025-06-04 | #リサーチ | 90 |
ステップ①|Googleスプレッドシートを準備
- Googleスプレッドシートを新規作成
- シート名を「TimeLog」などに変更
- ヘッダー行に以下を入力:
cssコピーする編集するA列:日付
B列:カテゴリ
C列:時間(分)
ステップ②|GASスクリプトを作成
- スプレッドシート → 拡張機能 → Apps Script を開く
- 以下のコードを貼り付け:
javascriptコピーする編集するfunction logCalendarEvents() {
const calendarId = 'primary'; // 自分のカレンダーID(基本は primary)
const calendar = CalendarApp.getCalendarById(calendarId);
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TimeLog');
const now = new Date();
const sevenDaysAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); // 過去7日間
// 一旦シートを初期化
sheet.clearContents();
sheet.appendRow(['日付', 'カテゴリ', '時間(分)']);
const events = calendar.getEvents(sevenDaysAgo, now);
const log = {};
events.forEach(event => {
const title = event.getTitle();
const start = event.getStartTime();
const end = event.getEndTime();
const duration = (end - start) / (1000 * 60); // 分単位
// カテゴリ(例:タイトルに「#執筆」「#会議」などを含める)
const match = title.match(/#\w+/);
const category = match ? match[0] : '#未分類';
const date = Utilities.formatDate(start, Session.getScriptTimeZone(), 'yyyy-MM-dd');
const key = `${date}_${category}`;
if (!log[key]) {
log[key] = 0;
}
log[key] += duration;
});
// 出力
Object.keys(log).forEach(key => {
const [date, category] = key.split('_');
const duration = Math.round(log[key]);
sheet.appendRow([date, category, duration]);
});
}
ステップ③|スクリプトの実行と自動化
- 上記関数を保存し、「
logCalendarEvents
」を選択して実行(初回は認証が必要) - 正常に動作すれば、過去7日間の作業内容と時間がスプレッドシートに記録されます
⏰ 定期実行の設定(トリガー)
- Apps Script → 左側メニュー「トリガー」 → 「+トリガーを追加」
- 関数:
logCalendarEvents
- 実行タイミング:時間主導型 → 日次(朝など)でOK
活用Tips|より実用的に使うコツ
✅ カテゴリ分けのタグルールを統一しよう
- 「#執筆」「#会議」「#学習」など
- カレンダー予定のタイトルの最後に「#タグ」を付けるだけで分類可能
✅ 色別にカレンダーを使い分けるのもアリ
カレンダーごとにフィルターを変えて処理も可能です(関数を複製してカレンダーIDを切り替える)
よくある質問(FAQ)
Q1. GAS初心者でも使えますか?
→ はい。上記コードを貼り付けて動かすだけで基本動作します。
ただし、初回のみ認証許可が必要です(Gmail連携のため)。
Q2. 日ごとの合計だけでなく「カテゴリ別の累計」が欲しい
→ スプレッドシート側で ピボットテーブル を使えば、カテゴリ別・日別の時間集計も簡単にできます。
Q3. 予定にタグが付いていない場合はどうなる?
→ 自動的に「#未分類」として集計されます。タグ付け忘れが可視化されるので改善にもつながります。
まとめ|GASで時間管理はここまで自動化できる
作業時間を見える化するだけで、ムダな時間や非効率が浮き彫りになり、生産性が格段に上がります。
GASとGoogleカレンダーの連携は、一度設定してしまえばあとは放置でOKの最強の時間管理術です。