有没有一种方法可以使用Emacs与Google Calendar和Google Contacts同步,理想情况下保留本地副本,以便我可以脱机访问它们?
有没有一种方法可以使用Emacs与Google Calendar和Google Contacts同步,理想情况下保留本地副本,以便我可以脱机访问它们?
Answers:
不幸的是,我无法给出完整的答案。我所能提供的只是一些漫步的可能途径的建议。
最简单的方法是,吉尔斯在此问题的SU版本中提到的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"
您要提取的日历的网址替换(您可以在Google日历的每个日历的设置页面的底部找到它)。您可以根据需要添加任意数量。
现在,您只需(getcals)
在要获取日历时致电即可。您可以在启动时将其放入.emacs中,但可能会使启动停顿。
要使组织模式在议程中显示日记条目,只需添加(setq org-agenda-include-diary t)
.emacs。有关详细信息,请参见组织模式手册。
emacs-calfw可以与iCal(.ics
)格式的日历同步,例如Google日历。