Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
node-google-calendar
Advanced tools
Readme
Simple node module that supports Google Calendar API
This module does server to server authentication with Google APIs without any users being involved. When using Google APIs from the server (or any non-browser based application), authentication is performed through a Service Account, which is a special account representing your application.
Find out more about preparations needed to setting up the service account, grant calendar access, auth key to google and the configurations needed to start using node-google-calendar.
First, install the npm package with: npm i node-google-calendar --save
.
Provide in a settings.js
config file with serviceAcctId, calendarIds, timezone & keyfile location.
Check out preparations needed if you have trouble supplying these configurations. Sample config file here.
Your config file should look something like this:
const KEYFILE = '<yourpem.pem>';
const SERVICE_ACCT_ID = '<service_account>@<project_name>.iam.gserviceaccount.com';
const CALENDAR_ID = {
'primary': '<main-calendar-id>@gmail.com',
'calendar-1': 'calendar1@group.calendar.google.com',
'calendar-2': 'calendar2@group.calendar.google.com'
};
const TIMEZONE = 'UTC+08:00';
module.exports.keyFile = KEYFILE; //or if using json keys - module.exports.key = key;
module.exports.serviceAcctId = SERVICE_ACCT_ID;
module.exports.calendarId = CALENDAR_ID;
module.exports.timezone = TIMEZONE;
To use, require this module in your application and pass in the necessary config file.
const CONFIG = require('./config/Settings');
const CalendarAPI = require('node-google-calendar');
let cal = new CalendarAPI(CONFIG);
You should now be able to query your specified calendar and try out the following examples.
Most Google Calendar APIs v3 are now supported! This includes APIs in resource types of Calendars, CalendarList, Acl, Events, FreeBusy, Settings, Colors & Channels. You can refer to Google's documentation on what parameters to supply, and choose to include or exclude the parameters that you need.
Some examples are as follows:
CalendarList.list - Returns a promise of a CalendarList of calendar entries and their metadata that the service account has visibility to.
let params = {
showHidden: true
};
cal.CalendarList.list(params)
.then(resp => {
console.log(resp);
}).catch(err => {
console.log(err.message);
});
Acl.insert - Granting a user owner
permission of to a calendar. Calendar entry should be automatically added to user's CalendarList after success. (Appear on calendarlist on left side of Google Calendar's WebUI)
let params = {
scope: {
type: 'user',
value: 'your-user@gmail.com'
},
role: 'owner'
};
cal.Acl.insert(calendarId, params)
.then(resp => {
console.log(resp);
}).catch(err => {
console.log(err.message);
});
Events.list - To get a promise of all single events in calendar within a time period.
let params = {
timeMin: '2017-05-20T06:00:00+08:00',
timeMax: '2017-05-25T22:00:00+08:00',
q: 'query term',
singleEvents: true,
orderBy: 'startTime'
}; //Optional query parameters referencing google APIs
cal.Events.list(calendarId, params)
.then(json => {
//Success
console.log('List of events on calendar within time-range:');
console.log(json);
}).catch(err => {
//Error
console.log('Error: listSingleEvents -' + err.message);
});
Events.insert - Insert an event on a specified calendar. Returns promise of details of new event.
let params = {
'start': { 'dateTime': '2017-05-20T07:00:00+08:00' },
'end': { 'dateTime': '2017-05-20T08:00:00+08:00' },
'location': 'Coffeeshop',
'summary': 'Breakfast',
'status': 'confirmed',
'description': '',
'colorId': 1
};
cal.Events.insert(calendarId, params)
.then(resp => {
console.log('inserted event:');
console.log(resp);
})
.catch(err => {
console.log('Error: insertEvent-' + err.message);
});
Events.delete - Deletes an Event on a specified Calendar with EventId. Returns promise of results.
let params = {
sendNotifications: true
};
cal.Events.delete(calendarId, eventId, params)
.then(results => {
console.log('delete Event:' + JSON.stringify(results));
}).catch(err => {
console.log('Error deleteEvent:' + JSON.stringify(err.message));
});
FreeBusy.query - Checks if queried calendar slot is busy during selected period. Returns promise of list of events at specified slot.
let params = {
"timeMin": '2017-05-20T08:00:00+08:00',
"timeMax": '2017-05-20T09:00:00+08:00',
"items": [{ "id": calendarId }]
};
cal.FreeBusy.query(calendarId, params)
.then(resp => {
console.log('List of busy timings with events within defined time range: ');
console.log(resp);
})
.catch(err => {
console.log('Error: checkBusy -' + err.message);
});
Settings.list - List user settings
let params = {};
cal.Settings.list(params)
.then(resp => {
console.log('List settings: ');
console.log(resp);
})
.catch(err => {
console.log('Error: listSettings -' + err.message);
});
More code examples of the various APIs here.
FAQs
Simple node module that supports Google Calendar APIs
The npm package node-google-calendar receives a total of 263 weekly downloads. As such, node-google-calendar popularity was classified as not popular.
We found that node-google-calendar demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.