node-red-web-nodes icon indicating copy to clipboard operation
node-red-web-nodes copied to clipboard

Google Calendar Node

Open hindessm opened this issue 11 years ago • 20 comments

Input Nodes

  • New events added to a calendar

Query Nodes

  • Get next event
    • node options
      • calendar - calendar to lookup events in
    • msg.options
      • calendar - calendar to lookup events in
      • payload - text search used to select relevant events (optional)
    • output msg properties
      • title - the summary string from the calendar entry
      • description - the description from the calendar entry
      • location.description - the location string from the calendar entry
      • data - the raw event from the google calendar query
      • payload object containing:
        • title - the summary string from the calendar entry
        • description - the description from the calendar entry
        • location.description - the location string from the calendar entry
        • start - Javascript Date of start time - midnight for all day event
        • end - Javascript Date of end time - midnight for all day event
        • allDayEvent - true if event is an all day event
        • creator - object containing name and email properties
        • attendees - list of objects containing name and email properties

Output Nodes

  • Add event to a calendar
    • node options
      • calendar - calender to add events to
    • msg.options
      • calendar - calendar to add events to
      • payload - string describing the event in quick add format

Calendars

The calendar option should be able to specified as the id string of the calendar, name of the calendar, or the string primary to use the users primary calendar. The default will be primary.

hindessm avatar Sep 18 '14 13:09 hindessm

@hindessm In the output node, will there also be an option to specify time of event etc? And am I right in assuming the initial pass would add an event to my calendar but not handle invitations to others? Just trying to understand initial scope

ly685-zz avatar Sep 24 '14 21:09 ly685-zz

The syntax of the quick add text field supports "what", "when", "where" and "who". So you could set msg.payload = "coffee at 8am in hursley with [email protected]" and it should work as you'd expect. It doesn't send invitations by default but the api does support this.

In general, with the first pass at a node, we've tended to limit the scope to a minimum useful behaviour while, at the same time, giving some thought to extending functionality in future. In this case, my intention is to add a msg.sendNotifications option to match the sendNotications query parameter on the api and if the msg.payload is an object use that to populate the body of an insert request.

hindessm avatar Sep 24 '14 22:09 hindessm

I'm happy with the initial implementation in #18. Items that I still intend to work on are:

  • [x] Support rich insert requests
  • [x] Support sendNotification - via. msg and node properties
  • [ ] Provide UI feature to re-authenticate if crediential refreshing fails

I'm still not sure how to handle the issue of extending the scope when other nodes - such as tasks, drive, etc. - are added using the same credentials but I'll worry about that when I/we come to write another Google node.

It turns out the quick add syntax doesn't support "with" so inviting other people will require the full insert functionality.

hindessm avatar Sep 25 '14 22:09 hindessm

@knolleary, @hbeeken I've updated the description of the query node. I'm struggling to decide what should be in the payload. I'm also not sure what to do with the string location (but I wrote an intial guess.)

Comments/thoughts welcome.

hindessm avatar Nov 05 '14 15:11 hindessm

Would it be possible to modify the node so that we also get the current event ? The way I would see it, it could have 2 outputs. The first output would send the current event and the second one the next event. Seems like it would be quite useful...

natcl avatar Feb 05 '15 23:02 natcl

@natcl it is worth pointing out, all of these web nodes are minimal implementations to get some basic functionality in place. There are lots of different queries that could be included - the challenge is working out how best to expose them to the user. Having multiple outputs for different events doesn't scale well... what if you want the next 5 events.. is that 5 outputs? It would be better offered as an option to emit the next n events from the single output, where n starts either with the current or next event.

knolleary avatar Feb 05 '15 23:02 knolleary

I agree. I just updated to the latest version and noticed there is now an input node for Google calendar, that's actually exactly what I was looking for. I wasn't able to make it work yet though, is it working or still a work in progress ?

natcl avatar Feb 05 '15 23:02 natcl

All of the nodes in this repo should be working - any questions on this node, @hindessm may be able to help.

knolleary avatar Feb 05 '15 23:02 knolleary

@knolleary Hi Nick, any update on multiple event queries? We use a Google Calendar-based scheduler and I'd like to be able to get everything for the upcoming day for a display in our office... And/or the current event as it's happening, so I can show that with extra emphasis too - so both features would be fantastic if possible Thanks!

Gerw88 avatar Mar 22 '16 23:03 Gerw88

Hi @hindessm ! Any news on credentials re-authentication? Also wanted to mention that on every NR restart the Google calendar nodes complain that the google credentials are missing, even if the nodes are connecting fine... Thanks!

Hugobox avatar Nov 28 '16 17:11 Hugobox

@knolleary Can we hope for a google-cal credentials re-auth fix in the near future?

Hugobox avatar Mar 03 '17 19:03 Hugobox

We would be very happy if anyone volunteered to help look after this/these nodes. PR would be kindly looked upon.

dceejay avatar Mar 05 '17 15:03 dceejay

Can someone please provide an example flow that i can use to enter some strings in to google calendar?

Rider123456 avatar Apr 28 '17 06:04 Rider123456

The following is the payload that enters the Google Calendar Out Node

msg.payload = { description: "Great picnic with friends", location: "hyde Park, London",
  start: {
    dateTime: startDateTime 
  },
  end: {
    dateTime: endDateTime 
  },
  attendees: [{email: "[email protected]", displayName: "Jane Doe"},{email: "[email protected]", displayName: "John Smith"}],
  summary: "Welcome 2018 Picninc"
};

startDateTime and endDateTime are in ISO Format (you can set a Date object and then use the "toISOString" method)

I hope this helps

LacerdaPT avatar Jan 17 '18 10:01 LacerdaPT

Hey

Basically I'm creating events on a calendar using the Google Calendar Out node. The payload that goes on to that node is something like this:

msg.payload = { description: "Great picnic with friends", location: "hyde Park, London", start: { dateTime: startDateTime }, end: { dateTime: endDateTime }, attendees: [{email: "[email protected]", displayName: "Jane Doe"},{email: "[email protected]", displayName: "John Smith"}], summary: "Welcome 2018 Picninc" };

startDateTime and endDateTime are in ISO Format.

Now, I want the attendees to be notified, and therefore along with this msg.payload I make msg.sendNotifications = true; but it has no effect. I tried with false as well as and it is pretty much the same.

I tried this out here: https://developers.google.com/google-apps/calendar/v3/reference/events/insert with the sendNotifications sent to true and it worked.

Everything else works well. Am I doing something wrong? Is is a known bug? Is there a workaround?

Cheers

LacerdaPT avatar Jan 17 '18 10:01 LacerdaPT

Hello

Can you guys check the post just before this one? It's mine and about the msg.sendNotifications flag to the Google Calendar Out. I just updated the node-red-node-google package and still can't send notifications for the attendees.

Cheers

LacerdaPT avatar Mar 13 '18 09:03 LacerdaPT

you may want to ask on the mailing list or slack channel as there are more users out there who may be able to help.

dceejay avatar Mar 13 '18 09:03 dceejay

Ok. I'll give it a try.

Thanks!

LacerdaPT avatar Mar 14 '18 09:03 LacerdaPT

Is there any way to retrieve more than one event with Calendar Query? For instance if I would like to display my complete schedule for a full day or a week?

thucar avatar Jul 17 '18 06:07 thucar

The redirect uri in the Google credentials node is documented as "http://node-red.example.com:1880/google-credentials/auth/callback". Does this need to be changed to https? I got an email from Google saying that the project will be removed if the uri is not compliant.

I changed the uri on my Google developer site to https://. However, the authentication fails with "Error 400: redirect_uri_mismatch - The redirect URI in the request, http://node-red.example.com:1880/google-credentials/auth/callback, does not match the ones authorized for the OAuth client. ". Any chance that will be fixed or is there a workaround?

rakgupta avatar Jun 04 '21 00:06 rakgupta