iCalendarは、カレンダーデータを交換するためのインターネット標準フォーマットです。多くのカレンダーアプリケーションで、iCalendar形式のデータのエクスポートおよびインポートが可能です。また、iCalendarデータはメールの添付ファイルとして送信されることもよくあります。iCalendarデータは通常、.icsというファイル拡張子を使用し、メールでは‘text/calendar’というMIMEタイプで送信されます。(MIMEおよびメール添付ファイルの詳細については、メール関連事項を参照してください。)
diary-icalendar パッケージを使用すると、Emacs ダイアリーで iCalendar
データを利用できるようになります。iCalendar 形式と Emacs
ダイアリーファイルとの間でデータをインポート・エクスポートできるほか、iCalendar データをダイアリー上で直接表示することも可能です。
以下のコマンドを実行すると、iCalendarデータがダイアリーファイルにインポートされます。
diary-icalendar-import-file ¶iCalendarファイルをEmacsのダイアリーファイルにインポートします。
diary-icalendar-import-buffer ¶現在のバッファからiCalendarデータをEmacsのダイアリーファイルにインポートします。
diary-icalendar-import-bufferは、メールの添付ファイルからiCalendarデータをインポートする場合にも適しています。例えば、Rmailメールクライアントでは、次のように記述できます。
(add-hook 'rmail-show-message-hook #'diary-icalendar-import-buffer)
ダイアリーのインポートは、diary-icalendar-import
カスタマイズグループに含まれる、ユーザーがカスタマイズ可能な複数の変数に依存しています。これらの変数は M-x
customize-group で確認およびカスタマイズできます。カスタマイズグループ を参照してください。
iCalendarデータは、カレンダーイベント(VEVENTコンポーネント)、タスク(VTODO)、およびその他のテキストデータ(VJOURNAL)を表すコンポーネントにグループ化されています。これらのコンポーネントにはそれぞれ異なる種類のデータが含まれているため、以下の変数によって決定される異なる関数によってインポートされます。
diary-icalendar-vevent-format-function
¶日記用にVEVENTコンポーネントを整形する関数。
diary-icalendar-vjournal-format-function
¶日記用の VJOURNAL コンポーネントを整形する関数。
diary-icalendar-vtodo-format-function
¶日記用にVTODOコンポーネントをフォーマットする関数。
独自の書式設定関数を記述することで、インポートした日記エントリの書式をカスタマイズできます。こうした関数をスケルトンと呼ばれるテンプレートとして表現すると便利です(必須ではありません)。
例えば、各カレンダーイベントの日付、時刻、概要、場所だけをインポートして、次のように1行に書き出したいとします。
2025/11/11 Summary @ Some Location
すると、インポートフォーマット関数をスケルトンとして記述し、次のように diary-icalendar-vevent-format-function の値に設定できます。
(require 'skeleton)
(defun simple-vevent (_)
"Format a VEVENT summary and location on a single line"
(skeleton-insert
'(nil
ical-start-to-end & " " & ical-summary & " "
(when ical-location "@ ") & ical-location "\n")))
(setopt diary-icalendar-vevent-format-function #'simple-vevent)
この例における変数 ical-start-to-end、ical-summary、ical-location
は、スケルトンが呼び出された際に適切な値に動的にバインドされます。詳細については、diary-icalendar-vevent-format-function
のドキュメント文字列を参照してください。
インポート中に発生したエラーは、*icalendar-errors*
という名前のバッファに報告されます。これらのエラーは next-error
コマンドで確認できます。コンパイルモード
を参照してください。形式不備のある iCalendar
データを定期的にインポートする必要がある場合は、そのためのフックがいくつか用意されています。icalendar-parser カスタマイズグループを参照してください。