Emacsを使用してGoogleカレンダーやGoogleコンタクトと同期する方法はありますか。オフラインでアクセスできるようにローカルコピーを保持するのが理想的ですか?
Emacsを使用してGoogleカレンダーやGoogleコンタクトと同期する方法はありますか。オフラインでアクセスできるようにローカルコピーを保持するのが理想的ですか?
回答:
残念ながら、私は完全な答えを出すことはできません。私が持っているのは、さまよっているいくつかの可能な道についてのアドバイスです。
最も簡単な方法は、この質問のSUバージョンでGillesが言及したemacs-g-clientが機能するかどうかです。それがうまくいかない場合は、以下を調べます。
少なくとも、icalを使用してGoogleカレンダーにアクセスすることにより、いくつかのカレンダー機能を取得できるはずです。関数icalendar-import-file
は、icalファイルをemacs日記ファイルにインポートできます(icalendar-import-fileドキュメント)。したがって、.emacsファイルで、emacs lispを少し使用して、Googleカレンダーのicalファイルを取得し、それを日記にインポートすることができます。最終的にorg-modeを使用する場合、org-modeをdiary-modeと統合する方法はいくつかあります。
最終的な目標は、gdata APIを利用することだと思います。このAPI以外でGoogleの連絡先にアクセスする簡単な方法はないと思います。Google CLと呼ばれるこのAPIを使用して幅広い機能をサポートするコマンドラインユーティリティがあり、理論的には一部のemacs lisp関数内で使用して、連絡先、カレンダー、および他の多くのGoogleがホストするサービスへのフルアクセスを提供できます。ただし、これは、ほんの数行が.emacsにスローされるよりもはるかに難しいでしょう。
Googleカレンダーの場合、一方向の同期が正常に設定されています。Emacsは起動時に私のカレンダーを取得し、それをemacs日記に転送します。これは、アジェンダのorg-modeによって表示されますが、必要に応じて設定できます。
Googleカレンダーに送り返すには、あまり必要ないので、まだ何も設定していません。ただし、日記にエントリを追加し、googleclを呼び出してGoogleカレンダーにエントリを追加する関数を作成するのはかなり簡単だと思います。
カレンダーを取得するために、私は.emacsに次のコードを入れています(これは私のコードではなく、組織モードのメーリングリストからのものですが、どこで見つけたのか正確に思い出せません)。
(setq mark-diary-entries-in-calendar t)
(defun getcal (url)
"Download ics file and add to diary"
(let ((tmpfile (url-file-local-copy url)))
(icalendar-import-file tmpfile "~/diary" t)
(kill-buffer (car (last (split-string tmpfile "/"))))
)
)
(setq google-calendars '(
"http://www.google.com/calendar/ical/DFSDFSDFSDFASD/basic.ics"
"http://www.google.com/calendar/ical/SDFSADFSADFASD/basic.ics"
))
(defun getcals ()
(interactive)
(find-file "~/diary")
(flush-lines "^[& ]")
(dolist (url google-calendars) (getcal url))
(kill-buffer "diary"))
"http://www.google.com/calendar/ical/DFSDFSDFSDFASD/basic.ics"
取得するカレンダーのURLに置き換えます(Googleカレンダーの各カレンダーの設定ページの下部にあります)。いくつでも追加できます。
これで(getcals)
、カレンダーを取得するときに呼び出すことができます。これを.emacsに入れて起動時に実行できますが、起動が停止する可能性があります。
org-modeに予定表の日記エントリを表示させるに(setq org-agenda-include-diary t)
は、.emacsを追加するだけです。詳細については、org-modeのマニュアルを参照してください。
emacs-calfwは.ics
、GoogleカレンダーなどのiCal()形式のカレンダーと同期できます。