Jak utworzyć łącze, aby dodać wpis do kalendarza?

85

Pracuję w tym klubie nocnym i obecnie tworzę dla nich stronę internetową, mają wiele wydarzeń, a ich strona jest zbudowana wokół wydarzeń, dziś robią na Facebooku wydarzenie każdego wydarzenia, ale byłoby zabójczo mieć ” Dodaj do mojego kalendarza ”, który dodał go do iCal lub Kalendarza Google (a może nawet do Outlooka).

Udało mi się wymyślić, jak utworzyć kanał kalendarza, ale zostanie on dodany jako nowy kalendarz. Jedyną dobrą rzeczą jest to, że ludzie mogą „subskrybować wydarzenia”, ale kalendarz na każde wydarzenie jest dość kłopotliwy. Chciałbym więc wiedzieć, jak zaimplementować funkcję, która pozwoli im łatwo dodać ją do głównego kalendarza. Pomyśl jak mailto: link, ale w przypadku kalendarzy, jeśli to możliwe.

A skoro już o tym mówię, czy ktoś wie, czy możliwe jest automatyczne zaimportowanie wydarzenia z Facebooka do WordPress lub wyeksportowanie wydarzenia z WordPress do Facebooka, co byłoby świetne, ale to nie jest takie ważne.

Hultner
źródło
Związane z: stackoverflow.com/questions/22757908/…
Denilson Sá Maia

Odpowiedzi:

53

UPDATE (bezpłatnie do użytku osobistego):
HTTPS JEST TERAZ WSPIERANA

Podczas gdy moja poniższa odpowiedź, szczegółowo opisująca, jak to zrobić dla każdej usługi, BĘDZIE zadziałać, IMO jest teraz znacznie łatwiejsze do współpracy z firmą zewnętrzną, taką jak AddThisEvent [https://addthisevent.com] . Pozwala dostosować wiele opcji, a także dodawać do Facebooka i nie tylko. Niestety, teraz uczynili z tego płatną usługę do czegokolwiek innego niż do użytku osobistego i wymuszają to.

Zakładam, że istnieją inne rozwiązania innych firm, takie jak to, ale mogę rozmawiać tylko z tym i do tej pory działało świetnie.


W przypadku „ Dodaj do mojego Kalendarza Google ” mieli oni formularz generatora kodu, którego można było użyć, ale od tego czasu go usunęli. Aby uzyskać więcej informacji na temat linków do Kalendarza Google, zobacz odpowiedź firmy squarecandy poniżej .

W przypadku Outlooka jest to trochę bardziej skomplikowane, ale w zasadzie musisz utworzyć .vcsplik z danymi wydarzenia i po prostu utworzyć łącze do tego pliku. Instrukcje krok po kroku tutaj .

W przypadku łącza iCal możesz użyć klasy PHP, takiej jak ta , lub postępować zgodnie z instrukcjami na tej stronie, jak utworzyć icsplik (plik iCal).

Dave
źródło
14
Dzięki, szkoda, że ​​nie ma na to uniwersalnego standardu, jak w przypadku mailto: dla poczty elektronicznej.
Hultner
Wygląda na to, że strona „Przewodnik wydawcy wydarzeń” Google nie oferuje już tego formularza do generowania adresów URL (niestety dokumentacja Google ma nieustannie się zmieniać), ale format adresu URL @ squarecandy nadal działa dobrze (przynajmniej w przypadku Kalendarza Google)!
brązowy
Cóż, ich własny formularz nawet nie generował linków, które działały, więc prawdopodobnie dlatego go usunęli. :)
squarecandy
94

Linki w poście Dave'a są świetne. Wystarczy umieścić kilka szczegółów technicznych dotyczących linków Google w odpowiedzi tutaj na SO:

Link do Kalendarza Google

<a href="http://www.google.com/calendar/event?action=TEMPLATE&text=Example%20Event&dates=20131124T010000Z/20131124T020000Z&details=Event%20Details%20Here&location=123%20Main%20St%2C%20Example%2C%20NY">Add to gCal</a>

parametry to:

  • action = SZABLON (wymagane)
  • tekst (nazwa zdarzenia zakodowana w adresie URL)
  • daty (format daty ISO, data początkowa / data końcowa - musi mieć zarówno czas początkowy, jak i końcowy - generator przycisków pozwoli ci pozostawić czas zakończenia pusty, ale musisz go mieć, inaczej nie zadziała).
    • aby użyć strefy czasowej użytkownika: 20131208T160000 / 20131208T180000
    • aby użyć czasu globalnego, zamień na UTC, a następnie użyj 20131208T160000Z / 20131208T180000Z
    • wydarzenia całodniowe, których możesz użyć 20131208/20131209 - zwróć uwagę, że generator przycisków robi to źle. Musisz użyć następującej daty jako daty zakończenia jednodniowego wydarzenia całodniowego lub dać +1 do dowolnej daty zakończenia.
  • szczegóły (opis zdarzenia w zakodowanym adresie URL / szczegóły)
  • lokalizacja (lokalizacja wydarzenia zakodowana w adresie URL - upewnij się, że jest to adres, który mapy google łatwo odczytać)

Aktualizacja luty 2018:

Oto nowa struktura linków, która wydaje się obsługiwać nową wersję Google Kalendarza Google bez konieczności interakcji z interfejsem API:

https://calendar.google.com/calendar/r/eventedit?text=My+Custom+Event&dates=20180512T230000Z/20180513T030000Z&details=For+details,+link+here:+https://example.com/tickets-43251101208&location=Garage+Boston+-+20+Linden+Street+-+Allston,+MA+02134

Nowy podstawowy adres URL: https://calendar.google.com/calendar/r/eventedit

Nowe parametry:

  • tekst (nazwa wydarzenia)
  • daty (format daty ISO, data początkowa / data końcowa - musi mieć zarówno godzinę rozpoczęcia, jak i zakończenia)
    • wydarzenie z godzinami rozpoczęcia / zakończenia: 20131208T160000 / 20131208T180000
    • wydarzenia całodniowe, możesz użyć 20131208/20131209 - data zakończenia musi być równa +1 dzień do dowolnej daty zakończenia .
  • ctz (strefa czasowa taka jak America / New_York - pozostaw puste, aby użyć domyślnej strefy czasowej użytkownika. Bardzo zalecane jest uwzględnienie tego w prawie wszystkich sytuacjach. Na przykład przypomnienie o wideokonferencji: jeśli trzy osoby w różnych kliknęły ten link i ustawiły przypomnienie o ich „własnym” wtorku o 10:00, to nie zadziała).
  • szczegóły (opis zdarzenia w zakodowanym adresie URL / szczegóły)
  • lokalizacja (lokalizacja wydarzenia zakodowana w adresie URL - upewnij się, że jest to adres, który mapy google łatwo odczytać)
  • dodaj (lista e-maili oddzielona przecinkami - dodaje gości do nowego wydarzenia)

Uwagi:

  • stara struktura adresu URL powyżej przekierowuje teraz tutaj
  • obsługuje https
  • lepiej radzi sobie ze strefami czasowymi
  • akceptuje +miejsce oprócz %20( urlencodevs rawurlencodew php - oba działają)
squarecandy
źródło
2
Jeśli ktoś jest zainteresowany, stworzyłem funkcję php, która zbuduje tego typu link do kalendarza google: gist.github.com/squarecandy/26611bbcfc63f9c7e3a7dc45e9145133
squarecandy
2
Warto również zauważyć, że strefa czasowa nie jest dla mnie ustawiana, chyba że określę daty strefy czasowej ORAZ parametr ctz. Więcej informacji tutaj: zaclee.net/php/…
Zachary Schuessler
@squarecandy masz jakiś pomysł, jak to zrobić, aby ustawić wiele dat jednocześnie? Na przykład, jeśli masz zakres, taki jak wtorek - czwartek, ale chcesz pokazać go w kalendarzu jako 3 oddzielne wydarzenia?
garek007
@ garek007 Nie sądzę, żeby to było możliwe. To musiałyby być 3 różne wydarzenia. Jeśli jest zadanie, którego nie możesz wykonać na ekranie „dodaj wydarzenie” Kalendarza Google w trybie online, nie możesz użyć do tego tej techniki. Prawdopodobnie możesz dowiedzieć się, jak dodać 3 wydarzenia naraz za pomocą interfejsu API Kalendarza Google, ale to tylko link do „Dodaj wydarzenie” dla pojedynczego wydarzenia.
squarecandy
@squarecandy Chcę również zaktualizować organizatora, czy jest jakiś sposób, w jaki mogę dodać również szczegóły organizatora, w tym linku do tworzenia wydarzenia?
Nikunj Undhad
12

Aby dodać do kalendarza google squarecandy, tutaj nowy

Format KALENDARZA OUTLOOK (bez potrzeby tworzenia .ics) !!

<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&dtstart=20151119T140000Z&dtend=20151119T160000Z&summary=Summary+of+the+event&location=Location+of+the+event&description=example+text.&allday=false&uid=">add to Outlook calendar</a>

Sprawdź to

Najlepiej byłoby zakodować podsumowanie, lokalizację i opis wartości zmiennej url_encode.

Ze względu na wiedzę

Format KALENDARZA YAHOO

<a href="https://calendar.yahoo.com/?v=60&view=d&type=20&title=Summary+of+the+event&st=20151119T090000&et=20151119T110000&desc=example+text.%0A%0AThis+is+the+text+entered+in+the+event+description+field.&in_loc=Location+of+the+event&uid=">add to Yahoo calendar</a>

Sprawdź to

Robienie tego bez osoby trzeciej ma wiele zalet, na przykład używanie go w e-mailach.

E-mail
źródło
7
Wygląda na to, że łącze do programu Outlook tak naprawdę już nie działa. Dodaje lokalizację i wyświetla formularz nowego wydarzenia, ale nie wypełnia żadnych innych pól.
Steve
10
Aby rozwinąć komentarz @ Steve, łącze Outlooka nie jest już nawet przekazywane do serwera - pojawia się błąd rozpoznawania DNS.
Owen Blacker
4
Przepraszamy, ta odpowiedź musi zostać zaktualizowana, aby była prawidłowa i poddana ocenie.
webaholik
8

Oto usługa Dodaj do kalendarza , która służy do dodawania wydarzenia

  1. Kalendarz Apple
  2. kalendarz Google
  3. Perspektywy
  4. Outlook Online
  5. Wieśniak! Kalendarz

Przycisk „ Dodaj do kalendarza ” dla wydarzeń w witrynach internetowych i kalendarzach jest łatwy do zainstalowania, niezależny od języka, strefa czasowa i zgodny z czasem letnim. Działa doskonale we wszystkich nowoczesnych przeglądarkach, tabletach i urządzeniach mobilnych, a także z Kalendarzem Apple, Kalendarzem Google, Outlook, Outlook.com i Kalendarzem Yahoo.

<div title="Add to Calendar" class="addeventatc">
    Add to Calendar
    <span class="start">03/01/2018 08:00 AM</span>
    <span class="end">03/01/2018 10:00 AM</span>
    <span class="timezone">America/Los_Angeles</span>
    <span class="title">Summary of the event</span>
    <span class="description">Description of the event</span>
    <span class="location">Location of the event</span>
</div>

wprowadź opis obrazu tutaj

jGupta
źródło
1
Absolutnie super. Całkiem podobny do addevent.com, ale wydaje mi się, że jest jeszcze więcej opcji stylizacji i jest na licencji MIT! Dlatego jest to zdecydowanie mój wybór. Dzięki za ten link.
Arvid,
9
To teraz połączyło się z addevent.com
Separatrix
-4

Możesz poprosić program o utworzenie wersji kalendarza .ics (iCal), a następnie zaimportować ten plik .ics do dowolnego programu kalendarza, który chcesz: Google, Outlook itp.

Wiem, że ten post jest dość stary, więc nie będę zawracał sobie głowy wprowadzaniem żadnego kodu. Ale proszę o komentarz, jeśli mam przedstawić zarys tego, jak to zrobić.

fishcx
źródło
7
Byłbym bardzo wdzięczny za przykład tego kodu, gdybyś mógł, próbując zrobić dokładnie to za pomocą Outlooka, Gmaila i iCal
KidCache