2017-02-11 6 views
0

J'essaie d'obtenir une liste des événements de la semaine en cours à partir d'un Google Agenda public en utilisant le Google Api. Toutes mes configurations sont bonnes, je peux faire n'importe quels essais, énumérer et montrer des événements dans une page Web, mais j'ai recherché n'importe quel genre de requête pour obtenir les événements de la semaine courante utilisant la date de serveur sans succès.Google Agenda Api obtenir des événements sur la semaine en cours

Je pense que c'est possible en utilisant l'option "q" indiquée dans le Google Api documentation, mais je ne sais pas qui je peux indiquer la semaine en cours.

EDIT: J'ai trouvé une solution et posté comme réponse.

Répondre

1

Je suis de poster ici la solution que je trouve pour ma question: j'ai calculé la plage de dates souhaitée avec strtotime, dans mon cas, tous les jours entre le dimanche précédent et lundi prochain. Alors je passe ces paramètres à ma demande:

function getEvents($service, $calendarId){ 
//De un Domingo al otro 
$date_inicio = date('c',strtotime("previous sunday")); 
$date_fin = date('c',strtotime("next monday")); 
$optParams = array(
    'orderBy' => 'startTime', 
    'singleEvents' => TRUE, 
    'timeMin' => $date_inicio, 
    'timeMax' => $date_fin 
); 
    $results = $service->events->listEvents($calendarId, $optParams); 

if (count($results->getItems()) == 0) { 
    print "Ningún evento encontrado.\n"; 
} else { 
    foreach ($results->getItems() as $event) { 
     $start = $event->start->dateTime; 
     if (empty($start)) { 
      $start = $event->start->date; 
     } 
     printf("%s (%s)\n", $event->getSummary(), $start); 
     echo $start.'<br>'.$event->getSummary().'<br>'.$event->getDescription().'<hr>'; 
     printf("%s (%s)\n<br><br>", $event->getDescription(), $start); 
    } 
} 
} 
1

Supposons que j'ai 50 événements sur la semaine du 12/02/2017 à 18/02/2017. Le premier événement commence à 5am le 02-12 et le dernier événement commence à 20h00 le 02-18. Utilisation de l'heure normale du Centre (CST), voici comment je l'ai fait:

$service = new Google_Service_Calendar($client); 

    $optParams = array(
    "timeMin" => "2017-02-12T05:00:00-06:00", 
    "timeMax" => "2017-02-18T20:00:01-06:00" 
); 

    $events = $service->events->listEvents('[email protected]', $optParams); 

    foreach ($events->getItems() as $event) {  

    print $eventnum . " - Event Name: ". $event->summary . "<br>"; 

    } 

Je ne sais pas si le q aidera à atteindre cet objectif. J'ai essayé mais cela ne fonctionnait qu'avec les noms et la description des événements, pas avec les heures de début ou de fin. J'espère que cette information aide.

+0

Merci. J'ai parlé de l'option q pensant que Google Agenda a la possibilité de définir une semaine par numéro. En calculant par php la semaine en cours, j'ai pensé la possibilité d'une requête comme "q = weeknumber is 12" Lecture dans les forums, il est dit que pour les numéros de semaine de spectacle dans les calendriers Google nous devons utiliser un autre calendrier! Ensuite, mon approche sera calculée par php la première et la dernière date de la semaine en cours et passera ces deux valeurs en tant que paramètres timeMin, timeMax. –