Geeks With Blogs

News

qrcode

Lance Robinson

Create Your Badge

Lance Robinson is a software engineer in Durham, Chapel Hill, Raleigh, and surrounding areas. More about Lance.

 Subscribe


Lance's TextBox » About Me » My Resume »Twitter

This post is the tenth and last in a series of postings, containing examples of SharePoint WebParts that anybody can build all by themselves.  To read all posts in this series, or to get started with the RSSBus WebPart, go here.

#10 - Keep Your SharePoint Calendar Synced with Google

The following is one way you can use to keep your SharePoint Calendar(s) synced up with your Google Calendar.  This particular example only syncs in one direction:  from Google to SharePoint.  It could go the opposite direction, or both, but that's not what I need so that's not what I did.  :)  As usual, this solution requires that you have the RSSBus Web Part installed.  See here for instructions.  You'll also need the GoogleOps Connector, which is automatically included with the RSSBus Web Part.

google.GcalSharePointSync

Step one:  Logon to SharePoint and browse to your calendar.  Under Site Actions, click Edit Page.

Step two:  Now, click on "Add a Web Part", and add the RSSBus Web Part to the page.  I prefer to drag the Calendar up so that it is on top, and this RSSBus Web Part is just below it.  On its edit menu, click Modify Shared Web Part and open the Source Editor.

Step three:  Paste in the following RSSBus Web Part template, and click "Apply".

 
 
 
 
 
<rsb:info title="Google Calendar Sync" description="This template Syncs your SharePoint Calendar events with those in a Google Calendar account.">
  <input name="email" description="The email used to authenticate with Google." required="true"/>
  <input name="password" description="The password used to authenticate with Google." required="true" style="password"/>
  <input name="calendar" description="The SharePoint calendar to sync to." default="Calendar"/>
  <input name="days" description="The number of days to import events for." default="30"/>
</rsb:info>

<rsb:import lib="RSSBus.GoogleOps"/>

<!-- get all the events in the SharePoint calendar -->
<rsb:set attr="list" value="[[calendar]]"/>
<rsb:call op="spListItems" out="myitemout" save="myspitems" >
    <rsb:call op="spGetItem?itemid=[[sp:id]]" >
      <rsb:set attr="myitemout.title" value="[[sp:title]]"/>
      <rsb:set attr="myitemout.location" value="[[sp:location | def('')]]"/>
      <rsb:set attr="myitemout.start_time" value="[[sp:start_time]]"/>
      <rsb:set attr="myitemout.end_time" value="[[sp:end_time]]"/>
      <rsb:set attr="myitemout.description" value="[[sp:description | def('')]]" />
    </rsb:call>
</rsb:call>

<!--get all the events in the Google calendar in the specified range -->
<rsb:set attr="fromdate" value="[[null | date('d')]]"/>
<rsb:set attr="todate" value="[[fromdate | dateadd(day, [[days]]) | todate('d') ]]"/>
<rsb:call op="googleCalSearch" out="mygcalout" save="mygitems">
  <rsb:set attr="mygcalout.title" value="[[ggl:title]]"/>
  <rsb:set attr="mygcalout.location" value="[[ggl:where | def('')]]"/>
  <rsb:set attr="mygcalout.start_time" value="[[ggl:starttime | todate]]"/>
  <rsb:set attr="mygcalout.end_time" value="[[ggl:endtime | todate]]"/>
  <rsb:set attr="mygcalout.description" value="[[ggl:description | def('')]]"/>
</rsb:call>

<!-- now find out what is in google calendar that is not in the sharepoint list, using title and start time as the filter -->
<rsb:set attr="diff.base" value="[[_feeds.myspitems]]"/>
<rsb:set attr="diff.feed" value="[[_feeds.mygitems]]"/>
<rsb:set attr="diff.filter" value="title,start_time"/>
<rsb:set attr="diff.list" value="[[list]]"/>
<rsb:call op="feedDiff" in="diff">
  <!-- for everything not in the sp list, add it!  -->
  <rsb:set attr="name#" value="Title"/>
  <rsb:set attr="name#" value="Location"/>
  <rsb:set attr="name#" value="Start Time"/>
  <rsb:set attr="name#" value="End Time"/>
  <rsb:set attr="name#" value="Description"/>
  <rsb:set attr="value#" value="[[title]]"/>
  <rsb:set attr="value#" value="[[location | def('')]]"/>
  <rsb:set attr="value#" value="[[start_time]]"/>
  <rsb:set attr="value#" value="[[end_time]]"/>
  <rsb:set attr="value#" value="[[description | def('')]]"/>
  <rsb:call op="spAddItem"/>
  <b>[[title]]</b> Successfully imported from Google Calendar.<br>
</rsb:call>
 
 
 

Step four:  After you click Apply, you'll need to specify your Google Calendar email and password, the name of the calendar to sync with (ie, "Calendar"), and the number of days you want it to keep synced at a time.  Optionally, you can embed these inputs into the script if you want, instead of leaving them as web part properties.  To do that, change the rsb:info section of code to this:

<rsb:set attr="email" value="YOUREMAIL" />
<rsb:set attr="password" value="YOURPASSWORD" />
<rsb:set attr="calendar" value="YOURCALENDARNAME" />
<rsb:set attr="days" value="30" />

Now, everytime you view your Calendar page it will automatically be updated with the lastest items from Google Calendar.

See all posts in this series:  10 DIY SharePoint Web Parts.
Browse RSSBus Connectors.
Basic RSSBus Scripting Cheat Sheet.

Posted on Wednesday, January 13, 2010 1:19 PM | Back to top


Comments on this post: 10 DIY SharePoint Web Parts #10

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Could you please post how to make this sync both ways between the sharepoint and google calendar?
Left by Marius on Feb 05, 2010 4:30 PM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Marius,

On my own SharePoint Calendar page, I actually have two web parts (1 for each direction of the sync). You could do it in one, but I have two just because. :)

I'll do another post soon about going the other direction. Until then I will email you a that template.

Also, a template for both directions will be published on the rssbus web part gallery soon.

If anybody else needs this, feel free to email me.
Left by Lance Robinson on Feb 05, 2010 4:41 PM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Hi Lance,
I am having problem in displaying code in my blog. Can you tell me how to add the scroll area that you have added in this blog?
Left by Dipesh on May 13, 2010 1:20 PM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Has the additional code on how to make this sync both ways between the sharepoint and google calendars been posted? If so, where, if not, or whatever, could you email it to me?
Thanks, JT
Left by Doc on Oct 05, 2010 11:53 AM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
I've really enjoyed reading your top 10 webparts list. Have you visited the directory of webparts www.sharepointwebpart.co.uk I just came across it searching for a fileshare webpart.
Left by Andrew on Oct 14, 2010 3:58 PM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Hi, I'm looking for the code to go the other way, sync from SharePoint to Google, did you ever get chance to post it? I couldn't find it. If you could share, that would be awesome!

Thanks,

Dan

Left by Dan on Dec 08, 2010 7:49 AM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
I'd also love to see the code to go from SharePoint to Google.
Left by Joseph Manzetti on Sep 22, 2011 10:20 AM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
If it is at all possible, I would also like to see the code to go from Sharepoint to Google.
Left by Katie on Oct 04, 2011 12:21 PM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Hi,
I'm very new to all this, but would love a way to sync Google Calendar to my group's Sharepoint. However, I'm concerned with the password bit.... could other administrators potentially see the password once I've typed it in the script?
Left by Emma on Oct 20, 2011 4:34 AM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Hi Lance Robinson
I would like to know how to sync from SharePoint calendar to Google calendar can you please help me to solve this. can you kindly email me at rithunithu0@gmail.com. Thanks




Left by Rithu on Dec 14, 2012 1:43 AM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Hello,

I obtain an error message :
could not find the library 'RSSBus.GoogleOps'

CAn you help me?
Left by Dominique Belge on Oct 03, 2013 8:39 AM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
Hi, I'm looking for the code from ShrePoint to Google. If you could share, that would be awesome.Plese share the code to : laxmi.pasupuleti@gmail.com

Please share as soon as possible, waiting for your reply.

Thanks
Left by Laxmi on Jul 15, 2014 4:16 AM

# re: 10 DIY SharePoint Web Parts #10
Requesting Gravatar...
I would like the code for both directions if at all possible - cfontaine@palmerfoundry.com
Left by cfontaine on Dec 05, 2014 10:15 AM

Your comment:
 (will show your gravatar)


Copyright © Lance Robinson | Powered by: GeeksWithBlogs.net | Join free