GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Diary-iCalendar-Import.html ・ emacs-doc.conao3.com

33.10.7.1 iCalendarデータを日記エントリとしてインポートする

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 カスタマイズグループを参照してください。