見出し画像

Googleカレンダーの予定を自動でスプレッドシートに記録する方法

※この記事は以下の記事になります。ぜひこちらの記事もご覧ください。

Googleカレンダーの予定を自動記録!スプレッドシートに毎日出力する方法

毎日の予定、手書きでまとめていませんか?

Googleカレンダーに入れた予定を、あとから集計したりレポートに使ったりしたい。でも、いちいち手でスプレッドシートに転記するのは大変……。そんなときに便利なのが、予定を自動でスプレッドシートに記録する仕組みです。

実はこの仕組み、Googleが提供する無料ツール「Google Apps Script(GAS)」だけで実現可能。しかも一度設定してしまえば、あとは毎日勝手に予定が記録されていきます。

この記事では、「今日の予定を毎日スプレッドシートに保存する仕組み」を、ITに詳しくない方でもすぐに始められるよう、図やコード付きでわかりやすく解説します。

こんなシーンでの活用に適しています

① カレンダーに書いた予定を、勤務実績や報告書に使いたい
→ 会議・訪問・作業予定などをそのままExcelとして出力できます。
② 日報や勤怠報告を簡単にしたい
→ カレンダーを書くだけで、自動的にスプレッドシートに記録されます。
③ 顧客との面談・打ち合わせをまとめて集計したい
→ スプレッドシートで並べ替えや集計もラクラク。

Notion × Slack

  • メリット

    • 毎日の予定を自動で記録。手作業ゼロで転記ミス防止

    • 予定の開始・終了時刻/タイトル/場所/メモまで自動取得

    • 完全無料&一度設定すれば放置でOK

  • デメリット

    • 最初にGASのコードをコピペして設定する必要あり

    • 共有カレンダーを使う場合はカレンダーIDの指定が必要

  • 難易度・面倒さ

    • プログラミング経験ゼロでも大丈夫

    • コードはそのままコピペ、時間トリガーの設定も画面クリックだけ

    • 所要時間は初回20〜30分程度

  • 特徴

    • スプレッドシートに記録された予定は、自由に加工・印刷・共有が可能

    • GASによる自動化なので、外部サービス不要で安定稼働

    • 時間帯や件名などを使って、フィルターや集計にも応用しやすい

  • 価格

    • Googleカレンダー:無料

    • Googleスプレッドシート:無料

    • Google Apps Script(GAS):無料

用意するもの

① Googleカレンダー(予定を入れているGoogleアカウント)
② Googleスプレッドシート(空のファイルを作成しておく)
③ Google Apps Script(スプレッドシートから「拡張機能」→「Apps Script」でOK)

設定手順

🔹Step 1:記録用のスプレッドシートを作成する

1.Googleスプレッドシートを開き、「新しいスプレッドシート」を作成します
2.シートの1行目(ヘッダー行)に、以下のような列を入力します
 ・開始日時|終了日時|タイトル|場所|メモ

🔹Step 2:スクリプトエディタを開き、コードを追加する

1.スプレッドシート上部の「拡張機能」→「Apps Script」をクリックします

2.エディタ画面が開いたら、最初からあるコードをすべて削除して、以下のコードを貼り付けます

function exportCalendarEventsToSheet() {
  const calendarId = 'primary'; // 通常は「primary」でOK(他カレンダーの場合はID指定)
  const calendar = CalendarApp.getCalendarById(calendarId);

  const today = new Date();
  const startTime = new Date(today.getFullYear(), today.getMonth(), today.getDate());
  const endTime = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);

  const events = calendar.getEvents(startTime, endTime);
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  sheet.clearContents(); // 毎回上書きする場合(追記したい場合は削除してもOK)
  sheet.appendRow(["開始日時", "終了日時", "タイトル", "場所", "メモ"]);

  events.forEach(function(event) {
    sheet.appendRow([
      event.getStartTime(),
      event.getEndTime(),
      event.getTitle(),
      event.getLocation(),
      event.getDescription()
    ]);
  });
}

🔹Step 3:実行確認とアクセス許可を行う

1.エディタ上で「関数を選択」から exportCalendarEventsToSheet を選び、「▶ 実行」ボタンをクリックします

2.「承認が必要です」という画面が出たら、「続行」をクリックし、Googleアカウントを選びます

3.「このアプリは確認されていません」という警告が出る場合は「詳細」→「プロジェクト名に移動」をクリック

4.「許可」をクリックして実行を完了させます
 → これで一度手動実行され、シートに今日の予定が出力されていればOKです

🔹Step 4:毎日自動で動くようにトリガーを設定する

1.Apps Scriptの画面左側にある「トリガー」をクリックします

2.「+トリガーを追加」ボタンをクリックし、以下のように設定します

実行する関数:exportCalendarEventsToSheet
実行タイミング:時間主導型
時間の種類:日付ベースのタイマー
時刻帯:午前3時~4時など任意の時間帯を選択

3.「保存」をクリックして設定完了。これで毎日自動的に予定が出力されるようになります

※お好きな時間帯にトリガー設定することで、毎日決まった時間にその日の予定が出力されます!

よくある質問

GASの無料枠で制限はありますか?

Google Apps Scriptは基本的に無料で使えます。
毎日1回予定を取得してスプレッドシートに書き出すくらいであれば、制限を気にせず使って大丈夫です。
もし何千件もの予定を一気に処理する、というような使い方をしない限り、普段の業務で困ることはまずありません。

複数日分を一括で出力することはできますか?

コードの中にある「開始日時(startTime)」と「終了日時(endTime)」の範囲を広げてあげるだけで、昨日・今日・明日や、1週間分の予定もまとめて出力できます。
応用として、週次レポートに使いたい…という場合にも対応可能です。

スプレッドシートの内容を毎回上書きせず、追記にしたいです

記事内のコードでは「毎日上書きする」前提でsheet.clearContents();という行が入っていますが、そこを削除すれば毎日下に追記していく形に変えられます。
日付ごとにデータがどんどん溜まっていく形なので、後からフィルターや検索で活用したい人にはおすすめです。