Emacs sync w / Google Calendar and Contacts?

10

Czy istnieje sposób na użycie Emacsa do synchronizacji z Kalendarzem Google i Kontaktami Google, najlepiej zachowując lokalną kopię, aby uzyskać do nich dostęp offline?

hpy
źródło
1
Czego obecnie używasz w emacsie do przechowywania kontaktów? bbdb? Ponadto, czego używasz do swojego kalendarza w emacsie? Moja odpowiedź będzie się różnić dla powiedzmy tryb org vs tryb pamiętnika.
Steven D
Właściwie dopiero zaczynam i planuję użyć bbdb do kontaktów. Planowałem użyć trybu pamiętnika do kalendarza, ale teraz, gdy wiem i czytam o trybie org, to też może być dobra opcja. Dzięki!!
hpy
To byłaby świetna opcja, jeśli to w ogóle możliwe, chciałbym wiedzieć. Zbudowanie klienta programu emacs z pewnością byłoby fajne.
1
Zapytany również w Super User . Nie rób tego! (Wyjątek: gdy pytanie nie ma żadnej dobrej odpowiedzi na stronie, a następnie link do pierwotnego pytania.)
Gilles „SO- przestań być zły”
Przepraszam, nie miałem pojęcia! Jednak wciąż szukam dobrej odpowiedzi.
hpy

Odpowiedzi:

3

Niestety nie jestem w stanie udzielić pełnej odpowiedzi. Wszystko, co mam, to porady na temat niektórych możliwych ścieżek wędrówki w dół.

Najłatwiejszą drogą byłoby, gdyby działał klient emacs-g, o którym Gilles wspomniał w wersji SU tego pytania. Jeśli to nie zadziała, chciałbym spojrzeć na następujące kwestie:

  • Przynajmniej powinieneś być w stanie uzyskać niektóre funkcje kalendarza, uzyskując dostęp do kalendarza Google za pomocą ical. Funkcja icalendar-import-filemoże zaimportować plik ical do pliku dziennika emacsa (dokumentacja icalendar-import-file file ). Dlatego w pliku .emacs możesz mieć trochę emacs lisp, aby pobrać plik kalendarzowy Google i zaimportować go do swojego dziennika. Jeśli skończysz w trybie org, istnieje wiele sposobów na zintegrowanie trybu org z trybem pamiętnika.

  • Myślę, że ostatecznym celem byłoby wykorzystanie interfejsu API gdata. Nie sądzę, że istnieje łatwy sposób na uzyskanie dostępu do kontaktów Google poza tym interfejsem API. Istnieje narzędzie wiersza polecenia, które obsługuje szeroki zakres funkcji korzystających z tego interfejsu API o nazwie Google CL , które teoretycznie mogą być używane w niektórych funkcjach emacs lisp, aby zapewnić pełny dostęp do kontaktów, kalendarza i wielu innych usług hostowanych przez Google. Byłoby to jednak prawdopodobnie znacznie trudniejsze niż kilka linii wrzuconych do plików .emac.

Steven D.
źródło
3

W przypadku Kalendarza Google pomyślnie skonfigurowałem synchronizację w jedną stronę. Emacs pobiera moje kalendarze podczas uruchamiania i przenosi je do pamiętnika emacsa. Jest to następnie wyświetlane w trybie organizacji w porządku obrad, ale możesz go ustawić w dowolnym momencie.

Aby odesłać z powrotem do Kalendarza Google, skonfigurowałem już wszystko, ponieważ nie potrzebuję go tak bardzo. Myślę jednak, że byłoby dość łatwo mieć funkcję, która dodaje wpis do pamiętnika i wywołuje googlecl, aby dodać wpis do kalendarza Google.

Aby pobrać kalendarze, mam następujące pliki .emacs (nie to, że to nie jest mój kod, pochodzi z listy mailingowej w trybie organizacji, ale nie pamiętam, gdzie go dokładnie znalazłem):

(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"))

Zamień "http://www.google.com/calendar/ical/DFSDFSDFSDFASD/basic.ics"adresy URL na kalendarze, które chcesz pobrać (znajdziesz go na dole strony konfiguracji każdego kalendarza w kalendarzu Google). Możesz dodać tyle, ile chcesz.

Teraz możesz zadzwonić, (getcals)gdy chcesz pobrać kalendarze. Możesz umieścić to w .emacs, aby zrobić to przy starcie, ale może to zablokować twój start.

Aby tryb organizacji wyświetlał wpisy w dzienniku w programie, po prostu dodaj (setq org-agenda-include-diary t).emacs. Szczegółowe informacje można znaleźć w instrukcji obsługi trybu org .

Mortimer
źródło
3

Do integracji z kontaktami Google jest skrypt Juliena Danjou, który można zobaczyć tutaj w akcji (repozytorium github jest tutaj ):

Kontakty Google dla rozszerzenia Emacs umożliwiają wyświetlanie kontaktów Google bezpośrednio w Emacs.

Zauważ, że prawdopodobnie będzie działać tylko z Emacsem 24, ponieważ używa oauth2, który jest częścią GNU ELPA.

PuercoPop
źródło
2

emacs-calfw może synchronizować z kalendarzami w .icsformacie iCal ( ), takimi jak Kalendarz Google.

Bastian Ballmann
źródło