Manage google calendar events.
- Read Events
- Update Event
- Delete Event
- Create Event
- The first step is to obtain credentials to access Google's API. I'm going to assume you already have a Google account and are logged in. Select a project in the Google API console clicking "Select a project."
- Click on ENABLE APIS AND SERVICES
- Search for calendar
- Chose GOOGLE calendar API
- Enable Api
- Go back to dashboard and Click on Credentials
- Click On Create Crendentials and chose Service Account
- Fill up details
- Finish the setup by clicking on done
- Click on newly Create Service Account Note the email for nex step. You have to use this email to manage calendar
- Click on keys
- Click on Add new key
- Chose Json and Download the key
- Go to Google calendar and Create a new calendar or chose a calendar.
- Scroll down to Share with specific people
- Click on add people and Add the Service account email ID which you copied or get it from the JSON File
- Finally Note Down calendar ID
- Install Google App Client via composer:
composer require google/apiclient:^2.11
- Download this library by clicking here
- Extract the library to your project folder.
- Open Application/config/gcalendar.php file
- Add calendar ID and Json File Location (which you downloaded when you were generating Service account in the first step) . (I recomend you to put the JSON file in calendarData Folder)
$config['calendarId'] = "CALENDAR_ID";
$config['calendar_json_path'] = "SERVICE_ACCOUNT_JSON_FILE";//eg calendarData/calendarAPI.json
First Call The Library in Controller
$this->load->library("googlecalendar");
- Load Events
$this->googlecalendar->getAll();
- Load Specific Event
$this->googlecalendar->find("event_id");
- Query Event
$this->googlecalendar->where("key1","value1")->where("key2","value2")->get();
- Update Event
$this->googlecalendar->find("event_id");
$event->setSummary('Appointment at Somewhere');
$event->setLocation('Bangladesh');
$this->googlecalendar->update($event);
- Delete Event
$this->googlecalendar->delete("event_id");
- Create Event
$data = array(
'summary' => 'Google I/O 2015',
'location' => '800 Howard St., San Francisco, CA 94103',
'description' => 'A chance to hear more about Google\'s developer products.',
'start' => array(
'dateTime' => '2015-05-28T09:00:00-07:00',
'timeZone' => 'America/Los_Angeles',
),
'end' => array(
'dateTime' => '2015-05-28T17:00:00-07:00',
'timeZone' => 'America/Los_Angeles',
),
'recurrence' => array(
'RRULE:FREQ=DAILY;COUNT=2'
),
'attendees' => array(
array('email' => 'lpage@example.com'),
array('email' => 'sbrin@example.com'),
),
'reminders' => array(
'useDefault' => FALSE,
'overrides' => array(
array('method' => 'email', 'minutes' => 24 * 60),
array('method' => 'popup', 'minutes' => 10),
),
),
);
$this->googlecalendar->insert($data);
- You can also set some option parameters:
$this->googlecalendar->singleEvents(true)->showDeleted(false)->showHiddenInvitations(false)
->orderBy("startTime")->timeMin(mktime($hour, $minute, $second, $month, $day, $year))
->timeMax(mktime($hour, $minute, $second, $month, $day, $year))
->updatedMin(mktime($hour, $minute, $second, $month, $day, $year))
->maxResults(10)
->getAll();
Some tips:
This command will bring all the gogle services in your vendor folder and creates a lot of unnecessary files. composer require google/apiclient:^2.11
So if you only need some specific services and don't need files for other services like addmob,drive,youtube you can put this in composer and run composer update
"require": {
"php": ">=5.3.7",
"google/apiclient": "2.11"
},
"scripts": {
"post-update-cmd": "Google\\Task\\Composer::cleanup"
},
"extra": {
"google/apiclient-services": [
"Calendar"
]
},
and run composer update
This will remove unnecessary service's files
For more details please checkout Google Calendar Php Docs