Google takvim API: takvimler oluşturma / seçilmesi?

2 Cevap php

Yani zamanlama yöneticisi mesaj / programları güncellemeleri bizim çalışma takvimi otomatik olarak her çalışanın Google Calendar ile senkronize etmek istiyorum. Kullanıcılar, başlangıçta AuthSub belirteci kullanarak-tercih olur, ama bundan sonra otomatik olmalıdır. Onlar planlanan diğer etkinlikler ile çatışmaları önlemek için, ben "Work App" veya oldukça benzersiz başka bir şey denir yeni bir takvim oluşturmak istiyorum. Daha sonra güncellemeleri için, sadece yeni olayları oluşturmadan önce bu mesafeden bir etkinlik silmek istiyorsunuz. Bu yüzden bazı sorularım var ...

  1. Nasıl ben API kullanarak istediğiniz belirli takvimi seçerim? (Bu Zend Framework kullanarak arada PHP, hepsi). Ben takvim listesi için sorgu nerede olduğumu görüyorum, ama belgeleri belirli takvime eklemek için nasıl görünmüyor.

  2. Ben takvimler oluşturabilirsiniz? Ben sadece tercih kullanıcıların böyle bir takvim oluşturmak olması gerekiyor? Eğer öyleyse, olayları eklemek için var gibi onları bir tane oluşturmak için ben üretebilecek bir URL var mı? (Anything doğru şeyleri basit ve tutarlı hale getirmek için?)

  3. Kullanıcıların belli ki, kendi kimlik bilgilerini saklamak istemiyorum, ama ben de her güncelleştirme için erişim isteğinde istemiyorum. Ben kalıcı erişim için bir OAuth belirteç gerekir mi? Ben URL simge bir kez kullanım olduğunu biliyorum, ama belirteç oturumu saklamak ve bir hafta sonra yenkimliken kullanabileceğiniz?

  4. Çoğaltmaları önlemek için her olay için sorgulama başka bir yolu var mı? Dün gece bu test edildi ve şimdi aynı 50 7 Olaylara örneği var. Ben her add önce kontrol ile sunucu saati eklemek istemiyorum.

  5. Finally, is there a way to add several events, or even to simply push the ics file to the calendar. Right now I have the script do a SQL query ve add each event as it loops through the results. It seems to take much longer than expected, so just building either the ics file or adding all of the events to one object ve adding them all at once would be better. Thanks!

2 Cevap

Kimse cevap beri Eh, ben özellikle. NET malzeme ve ham protokolünde sadece biraz az, Google Takvim API olmayan PHP belgelerine burnunu sokmaya karar verdi. Ve bunu bilemeyiz ...

Eğer. NET belgelerine giderseniz o serin bahseder new doğrulanmış kullanıcılar ve nasıl birincil olmayan takvimler olayları eklemek için yeni birincil olmayan takvim oluşturmak için özellikle nasıl özellikleri.

Tabii ki, bu belgeler PHP alanında hiçbir yerde gösterir, ve bir-bir ilişki var gibi görünmüyor. Yeni takvim oluşturmak için, ben çalıştım çok da belirgin olmayan bir şey denedim, kırdı için gidiyor, sonra, ilk olarak bazı bariz şeyler denedim. Ben radyo sessizlik neden kimse cevap biliyordu ama emin istiyorum olmasıydı durumda paylaşmak düşündüm.

To create a new calendar:

Bu iki anahtar vardır:

  1. Sen bir insertEvent() takvim olaylarını, ekleme için aynı yöntemi kullanmak zorunda

  2. Aksi takdirde varsayılan besleme URL'ye gider yöntemi de sonrası URL'yi ayarlamak zorunda.

Bu örnek App Takvim zaten var ve değilse, bunu oluşturur olmadığını görmek için denetler:

 //Standard creation of the HTTP client
 $gdataCal = new Zend_Gdata_Calendar($client);

 //Get list of existing calendars
 $calFeed = $gdataCal->getCalendarListFeed();

 //Set this to true by default, only gets set to false if calendar is found
 $noAppCal = true;

 //Loop through calendars and check name which is ->title->text
 foreach ($calFeed as $calendar) {
  if($calendar -> title -> text == "App Calendar") {
   $noAppCal = false;
  }
 }

 //If name not found, create the calendar
 if($noAppCal) {

  // I actually had to guess this method based on Google API's "magic" factory
  $appCal = $gdataCal -> newListEntry();
  // I only set the title, other options like color are available.
  $appCal -> title = $gdataCal-> newTitle("App Calendar"); 

  //This is the right URL to post to for new calendars...
  //Notice that the user's info is nowhere in there
  $own_cal = "http://www.google.com/calendar/feeds/default/owncalendars/full";

  //And here's the payoff. 
  //Use the insertEvent method, set the second optional var to the right URL
  $gdataCal->insertEvent($appCal, $own_cal);
 }

Ve orada o var. Sonraki hedefimiz değil varsayılan takvime, bu takvime etkinlik eklemek olduğunu.

Adding events to non-primary calendar

Muhtemelen tahmin kolay kısmı gibi gibi, tekrar isteğe bağlı URL'yi ayarlamak gerekir ki: insertEvent($newEvent, $calURL), zor kısmı takvimin URL'sini oluyor. "Ait takvimler" yolunda aksine, belirli bir takvim içinde kullanıcı specifc bilgi yok, sadece, onlar da, karma-bakıyorsun orada 'kimliği bir tür var.

İşte kod:

 //Set up  that loop again to find the new calendar:
 $calFeed = $gdataCal->getCalendarListFeed();
 foreach ($calFeed as $calendar) {
  if($calendar->title->text == "App Calendar")
   //This is the money, you need to use '->content-src'
   //Anything else and you have to manipulate it to get it right. 
   $appCalUrl = $calendar->content->src;
 }

 //.......... Some Assumed MySQL query and results .............

      while ($event = $result->fetch_assoc()) {
   $title = $event['description'];

   //Quick heads up
   //This is a handy way of getting the date/time in one expression.
   $eventStart = date('Y-m-d\TH:i:sP', strtotime($event['start']));
   $eventEnd = date('Y-m-d\TH:i:sP', strtotime($event['end']));

   $newEvent = $gdataCal->newEventEntry();
   $newEvent->title = $gdataCal->newTitle($title);
   $when = $gdataCal->newWhen();
   $when->startTime = $eventStart;
   $when->endTime = $eventEnd;

   $newEvent->when = array($when);

   //And at last, the insert is set to the calendar URL found above
   $createdEvent = $gdataCal->insertEvent($newEvent, $appCalUrl);
  }
  echo "<p>".$result->num_rows." added to your Google calendar.</p>";

Sorumu okumak ve üzerinde herhangi bir düşünce yaptım herkese teşekkürler. Herkes Yukarıdaki kod kadar sıkmak için bir yol bilen varsa (belki iki döngüler ihtiyacım yok?) Ben geri bildirim almak isterim.

I believe Anthony is referring to either the v1 docs or the v2 docs on the Google Calendar APIs site. I managed this pretty easily in Perl, by following the v2 protocol guide.

Tuşu için gönderiyorsunuz URL'yi değiştirmek için. Bunun yerine varsayılan "/ takvim / / default / Özel / tam besler", ilk kullanılabilir takvimlerin listesini getir, sonra istediğiniz takvimden içerik / @ src değerini almak, ve örneğin, o göndermek / Calendar/feeds/1234567890abcdefeg% 40group.calendar.google.com/private/full