有没有办法使用 Emacs 与 Google 日历和 Google 通讯录同步,最好保留本地副本,以便我可以离线访问它们?
答案1
不幸的是,我无法给出完整的答案。我所拥有的只是关于一些可能的漫步路径的建议。
最简单的路线是如果emacs-g-客户端吉尔斯在这个问题的 SU 版本中提到的有效。如果这不起作用,我会研究以下内容:
至少您应该能够通过使用 ical 访问您的谷歌日历来获得一些日历功能。该函数
icalendar-import-file
可以将 ical 文件导入到 emacs 日记文件中(icalendar-导入文件文档)。因此,在您的 .emacs 文件中,您可以使用一些 emacs lisp 来获取 google 日历 ical 文件并将其导入您的日记中。如果您最终使用 org-mode,有多种方法可以将 org-mode 与 diary-mode 集成。我认为最终目标是利用 gdata api。我不认为有一种简单的方法可以在这个 api 之外访问 Google 联系人。有一个命令行实用程序,使用此 api 支持广泛的功能,称为谷歌CL,理论上可以在某些 emacs lisp 函数中使用,以提供对联系人、日历和许多其他 Google 托管服务的完全访问。然而,这可能比只在 .emacs 中写入几行要困难得多。
答案2
对于 Google 日历,我成功地进行了单向同步设置。 Emacs 在启动时获取我的日历并将其传输到 emacs 日记中。然后,这会通过 org-mode 显示在议程中,但您可以按照自己的意愿进行设置。
为了发送回 Google 日历,我还没有设置任何东西,因为我不太需要它。但是,我认为有一个在日记中添加条目并调用的函数会很容易谷歌cl在您的谷歌日历中添加一个条目。
为了获取日历,我的 .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"
为您要获取的日历的网址(您可以在谷歌日历中每个日历的设置页面底部找到它)。您可以根据需要添加任意数量。
现在,您只需(getcals)
在想要获取日历时调用即可。您可以将其放入 .emacs 中以在启动时执行此操作,但它可能会阻止您的启动。
要让 org-mode 显示议程中的日记条目,只需添加(setq org-agenda-include-diary t)
到您的 .emacs 中。请参阅组织模式手册了解详情。
答案3
答案4
emacs-calfw可以与 iCal ( .ics
) 格式的日历同步,例如 Google 日历。