Có cách nào để sử dụng Emacs để đồng bộ hóa với Lịch Google và Danh bạ Google, lý tưởng là giữ một bản sao cục bộ để tôi có thể truy cập chúng ngoại tuyến?
Có cách nào để sử dụng Emacs để đồng bộ hóa với Lịch Google và Danh bạ Google, lý tưởng là giữ một bản sao cục bộ để tôi có thể truy cập chúng ngoại tuyến?
Câu trả lời:
Thật không may, tôi không thể đưa ra một câu trả lời hoàn chỉnh. Tất cả những gì tôi có là lời khuyên về một số con đường có thể đi lang thang.
Con đường dễ nhất sẽ là nếu emacs-g-client mà Gilles đã đề cập trong phiên bản SU của câu hỏi này hoạt động. Nếu điều đó không hiệu quả, tôi sẽ xem xét như sau:
Ít nhất bạn sẽ có thể có được một số chức năng lịch bằng cách truy cập lịch google của bạn bằng ical. Hàm này icalendar-import-file
có thể nhập tệp ical vào tệp nhật ký emacs ( tài liệu tệp icalWiki-import-file ). Do đó, trong tệp .emacs của bạn, bạn có thể có một chút emacs lisp để lấy tệp ical lịch google và nhập nó vào nhật ký của bạn. Nếu bạn kết thúc bằng chế độ org, có một số cách để tích hợp chế độ org với chế độ nhật ký.
Tôi nghĩ rằng mục tiêu cuối cùng sẽ là sử dụng gdata api. Tôi không nghĩ rằng có một cách dễ dàng để có quyền truy cập vào danh bạ Google ngoài api này. Có một tiện ích dòng lệnh hỗ trợ một loạt các chức năng sử dụng api này được gọi là Google CL , về mặt lý thuyết có thể được sử dụng bên trong một số chức năng không thể thiếu để cung cấp quyền truy cập đầy đủ vào danh bạ, lịch và nhiều dịch vụ được lưu trữ khác của Google. Tuy nhiên, điều này có thể sẽ khó khăn hơn nhiều so với chỉ một vài dòng ném vào .emacs của bạn.
Đối với Lịch Google, tôi có thiết lập đồng bộ một chiều thành công. Emacs lấy lịch của tôi khi khởi động và chuyển nó vào nhật ký của emacs. Điều này sau đó được hiển thị bởi chế độ org trong chương trình nghị sự, nhưng bạn có thể thiết lập nó theo bất cứ cách nào bạn muốn.
Để gửi lại Lịch Google, tôi chưa thiết lập bất cứ điều gì vì tôi không cần nó nhiều như vậy. Tuy nhiên, tôi nghĩ sẽ khá dễ dàng khi có một chức năng thêm một mục trong nhật ký và gọi googlecl để thêm một mục trong lịch google của bạn.
Để tìm nạp lịch, tôi có các phần sau trong .emacs của tôi (không phải đây không phải là mã của tôi, nó xuất phát từ danh sách gửi thư ở chế độ org, nhưng tôi không thể nhớ chính xác mình đã tìm thấy nó ở đâu):
(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"))
Thay thế "http://www.google.com/calendar/ical/DFSDFSDFSDFASD/basic.ics"
bằng các url vào lịch bạn muốn tìm nạp (bạn tìm thấy nó ở dưới cùng của trang thiết lập của mỗi lịch trong lịch google). Bạn có thể thêm nhiều như bạn muốn.
Bây giờ, bạn chỉ có thể gọi (getcals)
khi bạn muốn lấy lịch. Bạn có thể đặt cái này vào .emacs để thực hiện khi khởi động, nhưng nó có thể cản trở khởi nghiệp của bạn.
Để có chế độ org hiển thị các mục nhật ký trong chương trình nghị sự, chỉ cần thêm (setq org-agenda-include-diary t)
.emacs của bạn. Xem hướng dẫn sử dụng chế độ org để biết chi tiết.
Để tích hợp với các liên hệ của Google, có tập lệnh của Julien Danjou mà bạn có thể thấy trong hành động ở đây (kho github ở đây ):
Tiện ích liên hệ google cho tiện ích mở rộng Emacs cho phép hiển thị Danh bạ Google của bạn ngay bên trong Emacs.
Lưu ý rằng có khả năng nó chỉ hoạt động với ít nhất Emacs 24, vì nó sử dụng oauth2, một phần của GNU ELPA.
emacs-calfw có thể đồng bộ hóa với lịch ở .ics
định dạng iCal ( ) như Lịch Google.