Google Calendar uitlezen
Een hele tijd geleden heb ik een scriptje voor een site gemaakt om een Google Calendar uit te lezen en in de layout van de website weer te geven. Dat werkte via XML perfect... totdat Google besloot dit niet meer toe te staan, ze zeggen omdat er te weinig gebruikt van werd gemaakt.
Jammer, want het was voor de beheerder eenvoudig bij te houden. Is heel handig te synchroniseren met telefoons en andere devices.
Google biedt nu de Google Calendar API aan. https://developers.google.com/google-apps/calendar/quickstart/php
Maar ik kom hier niet echt aan uit.
Het is een openbare agenda dus d.m.v. een iframe het op een website laten zien moet geen probleem zijn.
Met de Google API kom ik op pagina's met uitleg over OAuth 2.0 etc.
Weet iemand of er gewoon een simpele methode is om enkele de agenda uit te lezen?
Waar loop je precies op vast?
http://www.google.com/calendar/ical/{OWNER}/public/basic.ics kan een ics bestand opgevraagd worden. Dan is het enkel het ics bestand omzetten naar variabelen... eens proberen
Toevoeging op 12/07/2016 16:44:57:
Hoi Ariën, op het feit dat het van een scriptje van slechts enkele regels (alleen XML uitlezen) nu opeens naar een hele libary gaat. Daarmee kunnen ook agendapunten etc toegevoegd worden.
Het komt op mij over alsof het veel te moeilijk is voor wat ik wil en het dus veel beknopter/simpeler moet kunnen.
Ik denk al iets gevonden te hebben.... via Toevoeging op 12/07/2016 16:44:57:
- Ariën - op 12/07/2016 16:42:59:
Waar loop je precies op vast?
Hoi Ariën, op het feit dat het van een scriptje van slechts enkele regels (alleen XML uitlezen) nu opeens naar een hele libary gaat. Daarmee kunnen ook agendapunten etc toegevoegd worden.
Het komt op mij over alsof het veel te moeilijk is voor wat ik wil en het dus veel beknopter/simpeler moet kunnen.
Google doet er alles eraan om de veiligheid te verbeteren. Ik weet niet hoe het eerst werkte, maar voorheen was het bij API's vaak een kwestie van een veiligheidscode in een URL meegeven. Dit idee is inmiddels zo achterhaald dat er nu gebruik wordt gemaakt van oAuth, en daar zitten nu eenmaal een hoop stappen in die gevolgd moeten worden om een goede, veilige en betrouwbare inlog mogelijk te maken. Gelukkig zijn daar weer libraries voor in het leven geroepen. Die zorgen ervoor dat je je op een juiste manier autenticeert net zoals je bij Google inlogt voor Youtube, Gmail etc...
Het ging mij gewoon om een openbare agenda uitlezen.
Heb het nu op deze manier gedaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$ical = file('http://www.google.com/calendar/ical/******@gmail.com/public/basic.ics');
$i = 0;
$agenda = array();
foreach($ical AS $line){
if(trim($line) == 'BEGIN:VEVENT'){
$i++;
}
if(substr($line,0,8) == 'DTSTART:'){
$agenda[$i]['begin'] = substr($line,8,4).'-'.substr($line,12,2).'-'.substr($line,14,2).' '.substr($line,17,2).':'.substr($line,19,2).':00';
}
if(substr($line,0,6) == 'DTEND:'){
$agenda[$i]['einde'] = substr($line,6,4).'-'.substr($line,10,2).'-'.substr($line,12,2).' '.substr($line,15,2).':'.substr($line,17,2).':00';
}
if(substr($line,0,9) == 'LOCATION:'){
$agenda[$i]['locatie'] = str_replace('\\', '',trim(str_replace('LOCATION:','',$line)));
}
if(substr($line,0,8) == 'SUMMARY:'){
$agenda[$i]['naam'] = trim(str_replace('SUMMARY:','',$line));
}
}
?>
$ical = file('http://www.google.com/calendar/ical/******@gmail.com/public/basic.ics');
$i = 0;
$agenda = array();
foreach($ical AS $line){
if(trim($line) == 'BEGIN:VEVENT'){
$i++;
}
if(substr($line,0,8) == 'DTSTART:'){
$agenda[$i]['begin'] = substr($line,8,4).'-'.substr($line,12,2).'-'.substr($line,14,2).' '.substr($line,17,2).':'.substr($line,19,2).':00';
}
if(substr($line,0,6) == 'DTEND:'){
$agenda[$i]['einde'] = substr($line,6,4).'-'.substr($line,10,2).'-'.substr($line,12,2).' '.substr($line,15,2).':'.substr($line,17,2).':00';
}
if(substr($line,0,9) == 'LOCATION:'){
$agenda[$i]['locatie'] = str_replace('\\', '',trim(str_replace('LOCATION:','',$line)));
}
if(substr($line,0,8) == 'SUMMARY:'){
$agenda[$i]['naam'] = trim(str_replace('SUMMARY:','',$line));
}
}
?>
In $agenda staat nu alles wat ik nodig heb!
Toevoeging op 12/07/2016 17:32:53:
Correctie, met deze code wordt ook rekening gehouden met de tijdzones:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$ical = file('http://www.google.com/calendar/ical/*****@gmail.com/public/basic.ics');
$i = 0;
$agenda = array();
foreach($ical AS $line){
if(trim($line) == 'BEGIN:VEVENT'){
$i++;
}
if(substr($line,0,8) == 'DTSTART:'){
$agenda[$i]['begin'] = strtotime(str_replace('DTSTART:','',$line));
date_default_timezone_set('Europe/Amsterdam');
$agenda[$i]['begin'] = date('Y-m-d H:i:s', $agenda[$i]['begin']);
}
if(substr($line,0,6) == 'DTEND:'){
$agenda[$i]['eind'] = strtotime(str_replace('DTEND:','',$line));
date_default_timezone_set('Europe/Amsterdam');
$agenda[$i]['eind'] = date('Y-m-d H:i:s', $agenda[$i]['eind']);
}
if(substr($line,0,9) == 'LOCATION:'){
$agenda[$i]['locatie'] = str_replace('\\', '',trim(str_replace('LOCATION:','',$line)));
}
if(substr($line,0,8) == 'SUMMARY:'){
$agenda[$i]['naam'] = trim(str_replace('SUMMARY:','',$line));
}
}
?>
$ical = file('http://www.google.com/calendar/ical/*****@gmail.com/public/basic.ics');
$i = 0;
$agenda = array();
foreach($ical AS $line){
if(trim($line) == 'BEGIN:VEVENT'){
$i++;
}
if(substr($line,0,8) == 'DTSTART:'){
$agenda[$i]['begin'] = strtotime(str_replace('DTSTART:','',$line));
date_default_timezone_set('Europe/Amsterdam');
$agenda[$i]['begin'] = date('Y-m-d H:i:s', $agenda[$i]['begin']);
}
if(substr($line,0,6) == 'DTEND:'){
$agenda[$i]['eind'] = strtotime(str_replace('DTEND:','',$line));
date_default_timezone_set('Europe/Amsterdam');
$agenda[$i]['eind'] = date('Y-m-d H:i:s', $agenda[$i]['eind']);
}
if(substr($line,0,9) == 'LOCATION:'){
$agenda[$i]['locatie'] = str_replace('\\', '',trim(str_replace('LOCATION:','',$line)));
}
if(substr($line,0,8) == 'SUMMARY:'){
$agenda[$i]['naam'] = trim(str_replace('SUMMARY:','',$line));
}
}
?>
Gewijzigd op 12/07/2016 17:33:28 door Ramon van Dongen