ADVERTISEMENT

【Googleスプレッドシート】Googleカレンダーの予定を一覧表に自動取込!iCalImport関数の使い方

【Googleスプレッドシート】Googleカレンダーの予定を一覧表に自動取込!iCalImport関数の使い方
🛡️ 超解決

Googleカレンダーに登録した予定を、スプレッドシートで一覧として管理したいとお考えではありませんか。手動でコピーするのは手間がかかりますし、更新のたびに作業が発生します。本記事では、iCalImport関数を使ってGoogleカレンダーの予定をスプレッドシートに自動で取り込む方法を解説します。この関数を使えば、日付範囲を指定するだけで予定表を抽出できます。カスタム関数なので、準備は少し必要ですが、一度設定すればあとは簡単です。

【要点】iCalImport関数でGoogleカレンダーの予定をスプレッドシートに自動取込

  • iCalImport関数の準備: Google Apps Scriptでカスタム関数を作成し、スプレッドシートで使用できるようにします。
  • カレンダーIDと日付範囲の指定: 関数の引数にカレンダーIDと開始日・終了日を渡すことで、該当期間の予定を一覧で取得します。
  • 自動更新の仕組み: スプレッドシートを開くたびに関数が再計算され、最新の予定が反映されます。

ADVERTISEMENT

iCalImport関数でできることと事前準備

iCalImport関数は、Google Apps Scriptで作成するカスタム関数です。この関数を使うと、指定したGoogleカレンダーの予定を、タイトル、開始日時、終了日時、場所などの情報を二次元配列として取得できます。関数の構文は次のとおりです。
=iCalImport(カレンダーID, 開始日, 終了日)
事前に必要なのは、Google Apps Scriptエディタでスクリプトを追加し、プロジェクトを保存することだけです。また、カレンダーIDの取得方法も確認しておきましょう。カレンダーIDはGoogleカレンダーの設定画面で確認できます。通常はメールアドレス形式ですが、日本語名のカレンダーでは英数字のIDが割り当てられます。

iCalImport関数を使って予定を一覧表示する手順

ここからは、実際にiCalImport関数をスプレッドシートで使えるようにする手順を解説します。全部で4つのステップです。

ステップ1:Google Apps Scriptエディタを開く

  1. スプレッドシートを開く
    Googleスプレッドシートを新規作成するか、既存のファイルを開きます。
  2. 拡張機能メニューを開く
    メニューバーから「拡張機能」をクリックし、「Apps Script」を選択します。新しいタブでGoogle Apps Scriptエディタが開きます。

ステップ2:スクリプトコードを貼り付ける

  1. コードを削除する
    デフォルトで表示されているコードをすべて削除します。
  2. 以下のコードをコピーして貼り付ける
    /**
     * Googleカレンダーの予定を取得するカスタム関数
     * @param {string} calendarId カレンダーID
     * @param {string} startDate 開始日(yyyy-MM-dd)
     * @param {string} endDate 終了日(yyyy-MM-dd)
     * @return {Array} 予定の二次元配列
     */
    function iCalImport(calendarId, startDate, endDate) {
      var calendar = CalendarApp.getCalendarById(calendarId);
      var events = calendar.getEvents(new Date(startDate), new Date(endDate));
      var result = [];
      for (var i = 0; i < events.length; i++) {
        var event = events[i];
        result.push([event.getTitle(), event.getStartTime(), event.getEndTime(), event.getLocation()]);
      }
      return result;
    }

ステップ3:プロジェクトを保存してスプレッドシートに戻る

  1. プロジェクトを保存する
    スクリプトエディタのツールバーにある「保存」アイコンをクリックします。またはCtrl+S(Macの場合はCmd+S)で保存します。
  2. 名前を付けて保存する
    初回はプロジェクト名を求められます。任意の名前を入力して「OK」をクリックします。
  3. スプレッドシートに戻る
    スクリプトエディタのタブを閉じ、元のスプレッドシートに戻ります。

ステップ4:関数を入力して予定を取得する

  1. カレンダーIDを確認する
    Googleカレンダーを開き、左側のマイカレンダー一覧から対象のカレンダー名の右側にある「︙」アイコンをクリックし、「設定と共有」を選択します。カレンダーIDが表示されますので、コピーしておきます。
  2. スプレッドシートに関数を入力する
    例えばセルA1に次のように入力します。
    =iCalImport("your_calendar_id_here", "2023-01-01", "2023-12-31")
    カレンダーIDはダブルクォーテーションで囲み、日付は文字列で指定します。
  3. Enterキーを押す
    関数が実行され、予定の一覧が表示されます。初回は権限承認を求められるので、画面の指示に従って許可してください。

これで完了です。シートを開くたびに関数が再計算され、最新の予定が自動反映されます。

iCalImport関数使用時の注意点とよくあるエラー

初めての方はいくつかのポイントに注意してください。ここではよくあるエラーとその対処法をまとめます。

関数が#NAME?エラーになる場合

このエラーは関数名が認識されていないときに発生します。原因はスクリプトが正しく保存されていないか、関数名にタイプミスがある可能性があります。再びスクリプトエディタを開いて、関数名がiCalImportであることを確認し、保存し直してください。また、スプレッドシートをリロードすると改善します。

権限エラーが発生する場合

初回実行時には「承認が必要です」というダイアログが表示されます。「権限を確認」をクリックし、自分のGoogleアカウントを選択して許可します。このとき、アプリが安全でないという警告が出ることがありますが、「詳細」をクリックして「<プロジェクト名>(安全ではないページ)に移動」を選択することで続行できます。これはカスタム関数がカレンダーデータにアクセスするために必要なためです。

予定が更新されない場合

iCalImport関数はスプレッドシートが開かれたときや、関数の引数が変更されたときに再計算されます。しかし、カレンダーの予定が変わっても自動的には更新されません。最新の状態にしたい場合は、関数が含まれるセルを編集するか、メニューの「データ」→「再読み込み」を実行してください。また、スプレッドシートを閉じて再度開くことでも更新されます。

カレンダーIDの正しい取得方法

カレンダーIDは「設定と共有」画面の「カレンダーの統合」セクションにあります。通常はメールアドレスの形式(例:xxxx@group.calendar.google.com)です。日本語のカレンダー名の場合は、長い英数字のIDが割り当てられることがあります。必ずコピーしてそのまま使用してください。スペルミスに注意しましょう。

ADVERTISEMENT

iCalImport関数と手動CSVインポートの比較

方法 自動更新の有無 手間 リアルタイム性 データ範囲の柔軟性
iCalImport関数 あり(再計算時) 初期設定のみ シート再計算時 日付範囲を自由に指定
CSV手動インポート なし(手動で再インポート) 毎回エクスポートとインポートが必要 インポート時点で固定 事前にエクスポートした範囲のみ
Googleカレンダーアドオン あり(定期的な同期) アドオン導入と設定 同期間隔による アドオンによる

iCalImport関数は、一度設定すればほとんど手間がかからず、日付範囲も柔軟に変更できます。CSV手動インポートは自動化されないため、頻繁に更新する必要がある場合には不向きです。Googleカレンダーアドオンの選択肢もありますが、本記事で紹介したiCalImport関数は完全に無料で、しかも自分でカスタマイズできる点が大きなメリットです。

まとめ

本記事では、iCalImport関数を使ってGoogleカレンダーの予定をスプレッドシートに自動取り込みする方法を解説しました。このカスタム関数を使えば、手作業から解放され、常に最新の予定表をスプレッドシートで管理できます。また、QUERY関数やFILTER関数と組み合わせることで、特定の条件の予定だけを抽出することも可能です。例えば、特定の場所の予定だけ表示したい場合などに応用できます。ぜひあなたの業務フローに取り入れてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。