Feedzon Calendar v1 READ...

36
Feedzon Calendar v 1 Integrating FileMaker® Solutions with Google CalendarService version: 1 Read Me revision: 1.4 Last updated: 19 March 2015 Written by: Chaim Bacon Copyright: Feedzon Limited 2015. All rights reserved.

Transcript of Feedzon Calendar v1 READ...

!

!

!

Feedzon'Calendar'v'1'!!

Integrating'FileMaker®'Solutions'with'Google'Calendar™!!

!

!

Service!version:! 1!

!

Read!Me!revision:! 1.4!

!

Last!updated:! 19!March!2015!

!

Written!by:! ! Chaim!Bacon!

!

Copyright:! ! Feedzon!Limited!2015.!All!rights!reserved.!

!

!

!

!

!

! !

Page!2! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!2!

Changes'Log'

Version:'1.4'Updated:!19!March!2015!

!

• Improved!the!section!‘Troubleshooting!Google!Calendar!Sharing!Issues’!on!page!10.!

'

Version:'1.3'Updated:!16!March!2015!

!

• Corrected!a!typo!in!the!GetEventList!function!summary!on!page!6.!

!

Version:'1.2'Updated:!12!March!2015!

!

• Added!a!U1!error!code!to!identify!when!the!function!name!has!been!incorrectly!spelled.!

• Increased!the!number!of!Google!accounts!and!calendars!available!in!the!Business!

service!level!from!20!to!30.!

• Added!a!new!section!to!deal!with!!‘Troubleshooting!Google!Calendar!Sharing!Issues’.!

!

Version:'1.1'Updated:!10!March!2015!

!

• Please!download!the!updated!example!files:!

http://download.feedzon.com/sample_files/fmp/Calendar_Examples_v1.1.zip!

• Improved!error!codes.!Introduced!additional!30xx!codes!to!better!identify!errors!

returned!by!Google.!Also!added!4000!for!unknown!error!codes!returned!by!Google.!

Made!clarifications!to!descriptions!of!other!error!codes.!

• Explained!that!if!a!subscription!‘auto!renewal’!is!cancelled,!the!current!subscription!will!

continue!until!its!expiry!date.!

• Made!changes!to!the!‘Sharing!your!Google!Calendars’!section!to!address!problems!

reported!by!a!few!users!during!initial!setUup!

• Updated!appendices!to!reflect!Google’s!increase!in!the!calendar!service!limit!from!

100,000!to!1,000,000!queries!per!day.!!

!

Version'1.0'Released!6!March!2015!

!

' '

Page!3! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!3!

Contents'Start!Here!..................................................................................................................................!4!

Introduction!..........................................................................................................................!4!Update!for!Beta!Testers!........................................................................................................!4!Compatibility!.........................................................................................................................!5!Integration!Services!..............................................................................................................!5!Feedback!&!Support!..............................................................................................................!5!Subscription!Required!...........................................................................................................!5!HTTPS!Security!......................................................................................................................!5!Google!Data!Stored!by!Feedzon!............................................................................................!5!Features!................................................................................................................................!6!

Initial!Set!Up!..............................................................................................................................!7!Google!Apps!Accounts!..........................................................................................................!7!Google!Authorisation!............................................................................................................!8!Sharing!Your!Google!Calendars!.............................................................................................!8!Feedzon!Service!Configuration!.............................................................................................!9!Troubleshooting!Google!Calendar!Sharing!Issues!...............................................................!10!

Tips,!Date!&!Time!Formats!&!Terminology!.............................................................................!11!Important!Tip!with!‘Insert!From!URL’!.................................................................................!11!Code!for!Errors!....................................................................................................................!11!Supported!Date!&!Time!Formats!........................................................................................!12!Terminology!........................................................................................................................!12!

Syntax!......................................................................................................................................!13!Syntax!for!HTTPS!Post!in!FileMaker!13!...............................................................................!13!

Functions!&!Examples!.............................................................................................................!15!Calendars!............................................................................................................................!15!GetCalendarList!...................................................................................................................!15!InsertEvent!and!UpdateEvent!.............................................................................................!16!GetEvent!.............................................................................................................................!19!GetEventList!........................................................................................................................!20!GetInstanceList!....................................................................................................................!22!UpdateInstance!...................................................................................................................!23!RemoveInstance!..................................................................................................................!24!GetAttendeeList!..................................................................................................................!25!InsertAttendee!&!UpdateAttendee!.....................................................................................!26!RemoveAttendee!................................................................................................................!27!RemoveEvent!......................................................................................................................!28!MoveEvent!..........................................................................................................................!29!

Appendices!..............................................................................................................................!30!Time!Zones!Information!......................................................................................................!30!Time!Zone!Regions!..............................................................................................................!30!Success!&!Error!Codes!.........................................................................................................!33!Google!Calendar!Service!Limits!...........................................................................................!35!Note!about!Repeating!Events!in!FileMaker!........................................................................!35!RepeatByDay!for!Weekly!Repetitions!.................................................................................!35!Modification!Count!.............................................................................................................!35!Google!Event!Creator!Name!...............................................................................................!35!Future!Improvements!.........................................................................................................!36!

Page!4! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!4!

Start'Here!!

Introduction'Feedzon!Calendar!is!a!web!service!to!replace!and!enhance!our!previous!FMgCal!plugUin!for!

FileMaker!Pro,!enabling!you!to!integrate!your!FileMaker!solutions!with!Google!Calendar!really!

easily.!As!a!web!service!it!will!also!work!with!all!other!technologies!that!can!perform!an!HTTPS!

POST,!not!just!FileMaker.!

!

Feedzon!Calendar!is!an!easyUtoUuse!API!that!sits!between!your!FileMaker!solution!and!Google!

Calendar.!You!can!add!Feedzon!Calendar!to!your!solutions!with!as!little!as!a!single!script!step!in!a!

matter!of!minutes.!!

!

!

!

For!example,!to!add!an!all!day!event!to!your!Google!calendar,!all!you!need!is!the!following:!

!

InsertFromURL![!fieldname!;!"httpspost://api.feedzon.com/calendar/v1/InsertEvent.fz?”!&!!

“ServiceKey="!&!ServiceKey!&!!

"&CalendarId="!&!CalendarID!&!

"&StartDate="!&!StartDate!&!

"&EndDate="!&!EndDate!&!

"&Summary="!&!Summary!!

!

It’s!that!easy!!

!

Feedzon!Calendar!works!with!the!entire!FileMaker!13!product!family!including!Go,!Pro,!Server,!

WebDirect,!CWP!and!Runtime!solutions.!

!

Feedzon!Calendar!does!not!use!any!plugUins!and!does!not!require!Java!to!be!installed.!Although!

you!can!use!Feedzon!Calendar!with!FileMaker!Server!(serverUside!scripts),!you!do!not!need!FileMaker!Server.!For!example,!if!you!have!a!standalone!solution!that!uses!FileMaker!Go,!Pro!or!a!

standalone!Runtime!solution,!it!will!still!work.!The!only!thing!you!need!is!an!internet!connection.!

!

Update'for'Beta'Testers'If!you!were!involved!in!the!beta!testing!program,!please!note!that!many!changes!have!been!

implemented!since!then.!Please!update!all!your!code!to!be!compatible!with!this!release!version.!

!

Your!FileMaker!Solution!

Go,!Pro,!Server,!WebDirect,!

CWP!or!Runtime!

Google!Calendar!

Free!or!Google!Apps!Feedzon!

Calendar!

Page!5! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!5!

Compatibility'FileMaker'13:'In!FileMaker!13!we!make!use!of!the!native!‘Insert!from!URL’!script!step!using!

HTTPS!POST!(SSL).!Since!this!command!is!built!into!the!FileMaker!13!product,!Feedzon!Calendar!

is!compatible!with!the!entire!FileMaker!13!product!family.!

!

FileMaker'12'&'Earlier:'The!‘Insert!From!URL’!command!in!FileMaker!12!does!not!support!HTTPS!

(SSL)!or!‘POST’!(it!only!supports!‘GET’),!so!Feedzon!Calendar!is!not!compatible!with!FileMaker!

12’s!native!command!set.!However!FileMaker!12!and!earlier!versions!can!use!Feedzon!Calendar!

with!a!plugUin!that!supports!https!post,!including!this!free!one:!

http://www.goya.com.au/baseelements/plugin!!

'

Integration'Services'Feedzon!Calendar!is!very!easy!to!add!to!your!own!solutions,!but!we!do!offer!an!integration!

service!for!those!who!need!assistance.!Please!contact!us!for!more!information!and!a!quotation.!

!

Feedback'&'Support'We!would!love!to!hear!from!you!about!how!you’ve!used!Feedzon!Calendar.!Should!you!require!

support,[email protected].!Along!with!your!support!request,!please!

specify!whether!you’re!using!a!free!Google!account!or!a!Google!Apps!account.!

!

If!you!notice!any!errors,!inconsistencies!or!other!mistakes!in!the!service!or!this!manual,!we!would!

be!grateful!if!you!could!please!email!full!details!to!the!above!address.!

!

Subscription'Required'Feedzon!Calendar!is!a!subscription!service.!Please!visit!www.feedzon.com!for!more!details!and!

pricing.!You!can!subscribe!in!the!‘My!Subscriptions!&!Credits’!page.!Please!note!that!you!can!

cancel!your!subscription!at!any!time!by!disabling!the!‘Auto!Renew’!option.!Should!you!disable!the!

autoUrenew!option,!your!current!subscription!will!remain!live!until!the!expiry!date.!

!

HTTPS'Security'All!communication!between!your!FileMaker!solution!and!the!Feedzon!web!servers!are!encrypted,!

as!are!all!communications!between!the!Feedzon!web!servers!and!Google.!

!

Google'Data'Stored'by'Feedzon'With!the!sole!exception!of!the!items!identified!in!this!paragraph,!we!do!not!store!any!of!your!

Google!Calendar!data!on!our!servers.!All!your!data!is!provided!on!a!live!basis!by!Google!and!

requires!the!Google!Calendar!service!to!be!available!at!the!point!of!query.!The!items!we!do!store!

are:!Your!Google!developers!console!email!address,!the!p12!security!certificate!and!a!list!of!

calendar!IDs!that!you!have!enabled!in!your!Feedzon!service(s).!

! '

Page!6! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!6!

Features'The!following!features!are!supported!by!Feedzon!Calendar!v1.0!

!

GetCalendarList! Get!a!list!of!available!calendars.!

InsertEvent!Create!a!new!event.!Supports!single!and!repeating!events!

as!well!as!exceptions!from!repeating!events.!

UpdateEvent!Update!an!existing!event.!Supports!single!and!repeating!

events.!

GetEvent! Get!the!details!of!an!event.!

GetEventList!

Powerful!search!functions:!Get!a!list!of!all!events!in!the!

specified!calendar;!Get!a!list!of!events!that!match!one!or!

more!of!the!following!search!criteria:!A!text!string;!

everything!that!was!created,!updated!or!removed!since!a!

specified!date;!all!events!between!specified!dates;!Any!

combination!of!the!above.!

GetInstanceList! Get!the!list!of!instances!for!a!repeating!event.!

UpdateInstance! Update!a!specific!instance!for!a!repeating!event.!

RemoveInstance! Remove!a!specific!instance!from!a!repeating!event!

GetAttendeeList! Get!a!list!of!attendees!for!an!event.!

UpdateAttendee! Update!a!specific!attendee!for!an!event.!

InsertAttendee! Add!an!additional!attendee!to!an!event.!

RemoveAttendee! Remove!a!specific!attendee!from!an!event.!

RemoveEvent! Remove!an!entire!event.!

MoveEvent! Move!an!event!from!one!Google!Calendar!to!another.!

! '

Page!7! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!7!

Initial'Set'Up'Customers!integrating!with!a!Google!Apps!account!should!first!follow!the!instructions!below.!All!

other!customers!can!skip!to!the!Google!Authorisation!section!on!the!following!page.!

!

Not!sure!whether!you’re!using!a!Google!Apps!account!or!not?!Check!this!out:!

https://support.google.com/accounts/answer/72709?hl=en!

!

Google'Apps'Accounts'In!addition!to!support!for!free!Google!accounts,!Feedzon!Calendar!is!also!compatible!with!Google!

Apps!accounts!but!you!will!need!your!Google!Apps!account!administrator!to!allow!sharing!of!the!

calendar!with!an!email!address!that!is!not!in!your!domain.!Our!experience!shows!that!you!need!

to!do!this!prior!to!the!steps!below.!

!

Google!Apps!customers!should!first!follow!these!steps:!

!

1. See!here:!https://support.google.com/a/answer/60765?hl=en!

2. Follow!the!description!for!‘Set!calendar!sharing!options!for!new!calendars!in!your!

organisation’!

!

Please!contact!us!if!you!experience!any!issues!setting!up!Feedzon!Calendar!with!your!Google!

Apps!account.!

!

! '

Page!8! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!8!

Google!free!customers!start!here.!Google!Apps!customers!continue!here…!

!

Google'Authorisation'You’ll!need!to!authorise!your!Google!Calendar!to!communicate!with!the!Feedzon!Calendar!web!

service.!Please!watch!this!video!and!follow!the!instructions:!http://youtu.be/ZlDrO1mNO0w.!

Note!that!you!can!update,!enable!and!disable!your!security!certificate!in!the!Google!Developers!

Console!at!any!time.!If!a!current!security!certificate!is!disabled,!all!Feedzon!services!that!use!that!

certificate!will!immediately!cease!to!operate.!If!you!update!or!replace!your!certificate,!please!

remember!to!upload!the!new!certificate!to!your!Feedzon!Calendar!Service!page(s).!

!

Sharing'Your'Google'Calendars'Now!you!need!to!share!each!Google!calendar!that!you!want!to!access!

from!your!FileMaker!solutions.!You!do!not!need!to!share!all!the!

calendars!in!your!Google!account,!only!the!ones!you!want!to!make!

visible!to!your!FileMaker!solution.!Furthermore!you!can!enable!or!

disable!access!to!individual!calendars!in!the!Feedzon!Service!page,!thus!

providing!you!complete!control!over!which!users!have!access!to!which!

calendars.!For!example,!if!you!have!one!Google!account!with!10!staff!

calendars!but!you!only!want!each!staff!member!to!have!access!to!their!

own!calendar,!then!you!would!create!10!Calendar!Services!in!your!

Feedzon!account!U!each!with!it’s!own!unique!Service!Key!U!and!enable!

only!the!appropriate!staff!calendar!for!each!Service!(details!on!the!next!

page).!In!the!logUin!script!of!your!FileMaker!solution!you!would!then!

identify!the!unique!Service!Key!to!be!used!based!on!the!user!who!has!

logged!in,!automatically!limiting!access!and!providing!the!security!required.!

!

Log!into!Google!Calendar!in!your!browser,!

right!click!the!calendar!that!you!want!to!be!

available!to!your!FileMaker!solution!and!

click!‘Share!this!Calendar’.!In!the!calendar!

details!page,!paste!the!developers!console!

email!address!(A),!select!‘Make!changes!to!

events’!(B),!click!‘Add!Person’!(C)!and!

finally!click!‘Save’!(D).!!

!

!

Google!Apps!users!will!see!this!additional!

security!dialog.!

!

Some!users!have!reported!that!Google!is!

not!always!saving!the!setting,!so!we!recommend!that!you!go!back!into!the!sharing!page!and!

confirm!your!settings!were!saved.!Some!users!have!reported!that!only!‘Make!changes!AND!

manage!sharing’!works!for!them.!!

!

Finally,!repeat!these!steps!for!each!calendar!that!you!want!to!share.! '

Chaim Bacon
Chaim Bacon
Updated link (October 2015): https://youtu.be/vjuSBo8EiuQ

Page!9! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!9!

Feedzon'Service'Configuration'Next!you!need!to!set!up!a!Feedzon!Calendar!service!and!tell!it!about!your!Google!authorisation.!

!

1. Sign!Up!or!log!into!your!Feedzon!account!at!www.feedzon.com.!

2. If!you!don’t!have!a!current!subscription!to!the!Feedzon!Calendar!service!please!subscribe!in!

the!‘My!Subscriptions!&!Credits’!page.!You!can!check!out!the!subscription!options!and!prices!

here:!https://feedzon.com/products/webservices/prices/!

3. In!your!Feedzon!account,!go!to!My!Services.!Click!New!Service!to!create!a!new!Calendar!

service!or!click!Edit!to!edit!an!existing!one,!as!appropriate.!The!steps!that!follow!are!for!

creating!a!new!service.!

4. Select!Service!Type!‘Calendar’.!

5. Personalise!the!Service!Name,!e.g.!‘MyCompany!Calendar’.!

6. Leave!the!Service!Status!with!the!default!setting!‘Enable!service!and!include!Service!Key’.!

7. Select!the!date!format!to!be!used.!This!must!be!the!format!used!for!dates!provided!from!your!

FileMaker!solution!to!the!API!and!will!also!be!the!format!for!returned!date!values.!If!your!

solution!is!used!internationally!with!multiple!date!formats,!you!will!need!to!create!a!separate!

service!linked!to!the!same!Google!account!with!the!appropriate!date!format!for!each!service.!

8. In!Email!Address,!paste!the!long!email!address!provided!to!you!by!the!Google!Developers!

Console.!Ensure!to!remove!any!superfluous!tab!or!space!characters!from!both!ends.!

9. Click!the!Browse!button!and!select!your!.p12!certificate!downloaded!earlier.!

10. Click!Add!Service.!11. You!now!need!to!select!which!calendars!

this!service!can!access.!Click!Edit!to!edit!

the!Calendar!service!and!in!the!lower!

section,!select!the!Enabled!check!box!for!

each!calendar!you!wish!to!use!this!service.!

Click!Save!Service!when!completed.!!

12. Please!note!that!all!subscriptions!except!the!‘Unlimited’!subscription!are!limited!to!

a!maximum!number!of!calendars!that!can!

be!enabled.!If!you!enable!more!calendars!

than!your!subscription!allows,!you!will!get!an!error!message!when!trying!to!access!the!service!

through!the!API.!!

13. Note!that!if!you!later!share!or!unshare!any!Google!calendars!and!already!have!the!Feedzon!Calendar!Service!window!open,!you!will!need!to!Save!or!Dismiss!the!Calendar!Service!window!

and!then!click!Edit!to!reopne!the!Service!window.!This!allows!the!service!to!update!the!list!of!

calendars!that!can!be!enabled!or!disabled.!

14. Copy!the!Service!Key!so!you!can!paste!it!into!your!FileMaker!solution.!

15. Click!Save!Service.!!

If!you!do!not!see!any!of!your!Google!calendars!listed!please!follow!the!troubleshooting!steps!on!

the!following!page.!

! '

Page!10! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!10!

Troubleshooting'Google'Calendar'Sharing'Issues'If!you’re!not!seeing!any!of!your!Google!calendars!listed,!try!following!these!steps.!Follow!each!

step!individually!and!then!check!the!results.!As!soon!as!you!can!see!your!Google!Calendars!listed!

in!the!Feedzon!Calendar!Service!window,!stop!following!any!further!steps.!!

1. Check!the!email!address!you’ve!used!for!the!service!is!the!

correct!Google!Developers!Console!email!address.!! !

2. Check!your!have!correctly!uploaded!your!.p12!security!

certificate.!Does!your!service!page!say!‘Certificate!is!missing’!or!‘Certificate!uploaded’?!!

3. If!the!calendar!list!shows!‘Error’!then!the!email!address!or!certificate!is!incorrect.!!

4. If!the!calendar!list!shows!‘No!calendars!available’,!then!the!connection!was!successfully!

authorised!by!Google!but!no!calendars!have!been!shared!(see!page!8).!

!

5. Close!the!Calendar!Service!window!by!clicking!Save!Service!or!Dismiss,!as!appropriate,!and!

then!click!the!Edit!button!from!the!list!of!services.!If!the!Calendar!Service!window!was!open!

whilst!you!made!changes!to!Google,!they!will!not!be!reflected!in!the!Calendar!Service!window!

until!it!is!reloaded.!!

!

6. If!you!are!still!not!seeing!any!calendars!listed,!check!whether!you’re!using!Google!Apps!and!if!

so,!that!you!followed!the!steps!shown!on!page!7.!

!

7. Temporarily!rename!your!calendar.!

!

8. Create!a!new!‘Test’!calendar!in!your!Google!account.!Share!this!with!the!Google!Developers!

Console!email!address!as!per!the!instructions!on!page!8.!Close!and!reUedit!the!Feedzon!

Calendar!Service!window!to!force!it!to!refresh.!Is!the!test!calendar!displayed?!If!so,!now!go!

and!share!one!of!your!other!calendars.!Refresh!the!Feedzon!Calendar!Service!window!again!

to!check.!If!this!works!you!can!now!delete!the!test!calendar!from!your!Google!account.!

!

9. Try!removing!the!Google!Developers!Console!email!address!from!the!sharing!page,!saving!

your!changes,!then!going!back!and!adding!it!again.!!

10. Repeat!step!8!but!without!having!deleted!the!email!address.!When!adding!the!email!address!

again!Google!will!appear!to!do!nothing!because!it!is!already!sharing!with!that!email!address.!

However!in!the!background!this!has!fixed!the!problem!in!a!few!cases.!Save!your!changes.!!

11. If!creating!a!test!account!worked!but!you!still!are!unable!to!share!your!preUexisting!calendar,!then!try!exporting!your!calendar!and!importing!the!appropriate!calendar(s)!into!new!

calendars.!Google’s!export!and!import!options!are!on!the!My!Calendars!>!!Settings!page.!!

12. Check!out!this!article:!https://support.google.com/calendar/answer/37082?hl=en!!

13. Log!out!of!Google.!Log!out!out!of!Feedzon.!Clear!your!browser!cache.!Quit!and!restart!your!browser!and!try!again.!Alternatively!try!some!of!thee!steps!in!another!browser.!

!

14. If!you’re!still!experiencing!problem,!please!call!us.!We!would!like!to!apologise!on!behalf!of!

Google!for!their!occasionally!buggy!sharing!interface!!:)!

Page!11! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!11!

Tips,'Date'&'Time'Formats'&'Terminology'!

Important'Tip'with'‘Insert'From'URL’'As!explained!below,!in!FileMaker!13!

you!will!use!the!‘Insert!From!URL’!

script!step!to!integrate!with!Feedzon!

Calendar.!This!script!step!requires!

you!to!specify!a!field!into!which!the!

results!will!go!and!that!field!must)be)on)the)current)layout!or!FileMaker!

will!return!an!error.!However,!to!

keep!your!layouts!tidy,!you!can!

position!it!beyond!the!edge!of!the!

page!that!is!visible!to!users!in!

browse!mode,!as!shown!here.!

!

The!Insert!From!URL!command!can!cause!the!script!to!lose!context!if!you!are!in!a!portal!row!or!a!

popUover!menu!when!the!command!is!run.!See!the!‘Update!Instance’!and!‘Remove!Instance’!

scripts!in!the!Get!Event!sample!file!to!see!how!to!design!your!script!to!avoid!potential!problem!

that!result!from!this!behaviour.!

!

Code'for'Errors'We!recommend!that!you!program!your!solution!to!correctly!catch!occasional!unexpected!results!

or!errors.!For!example!a!required!parameter!is!missing,!there!may!be!an!issue!with!your!service!

or!subscription!settings!or!maybe!or!if!you!have!no!internet!connection!U!then!you!may!get!an!

error!code!and!should!branch!your!code!appropriately.!Error!codes!are!listed!in!the!appendices.!

!

!

! '

Page!12! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!12!

Supported'Date'Formats'Feedzon!Calendar!supports!the!following!date!formats!for!dates!uploaded!to!the!service:!

!

dd!mm!yyyy!

mm!dd!yyyy!

yyyy!mm!dd!

!

The!separator!character!can!be!a!slash,!hyphen!or!dot,!e.g.!

!

dd/mm/yyyy,!ddUmmUyyyy!or!dd.mm.yyyy!

!

In!the!Feedzon!Calendar!service!page!you!must!specify!a!date!format!and!this!format!must!be!

used!for!all!dates!uploaded!to!the!service.!When!uploading!dates,!it!actually!doesn’t!matter!

which!separator!character!is!used!since!it!is!ignored,!e.g.!if!you!upload!a!StartDate!of!22/03/2015!

and!an!EndDate!of!23.03.2015!U!it!will!work!fine!as!long!as!dd!mm!yyyy!is!the!format!selected.!

This!allows!for!flexibility!if!some!users!manually!type!dates!with!one!separator!character!and!

other!users!use!a!different!separator!character.!Results!will!always!be!returned!in!the!selected!

format!with!the!separator!character!selected!in!the!service!page.!

!

In!our!example!files,!all!date!and!timestamp!fields!are!defined!as!text!fields!to!allow!all!our!

international!customers!to!work!with!dates!in!their!local!format!and!for!users!to!test!the!

different!date!format!settings.!

!

Supported'Time'Formats'Time!values!must!always!be!supplied!in!either!HH:MM!format!or!HH:MM:SS.!The!seconds!value!is!

ignored!when!viewing!an!event!in!your!browser!since!Google!events!do!not!support!seconds,!so!

if!you!upload!22:30:50,!it!will!be!displayed!as!22:30.!

!

Note!that!seconds!are!supported!and!required!for!search!functions!like!GetEventList!and!all!

timestamp!values.!

!

Terminology'Some!terms!are!explained!below.!

!

Summary:!Google!uses!the!name!‘summary’!for!‘title’,!so!an!Event!Summary!is!it’s!title.!

!

Etag:!Google!uses!the!terms!‘Etag’!to!refer!to!a!numeric!timestamp!conforming!to!RFC3339!

standard!U!https://www.ietf.org/rfc/rfc3339.txt.!When!an!event!is!created,!edited!or!removed,!

the!Etag!timestamp!is!updated!automatically.!If!comparing!events,!e.g.!an!event!that!was!moved!

from!one!calendar!to!another!and!you!want!to!identify!which!is!the!newer!event!having!

downloaded!both!with!the!GetEventList!function,!just!compare!the!numeric!Etag!values!U!the!

higher!value!is!the!newer!one.!

!

Page!13! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!13!

Syntax'!

Syntax'for'HTTPS'Post'in'FileMaker'13'If!you!haven’t!used!FileMaker’s!‘Insert!From!URL’!command!or!don’t!have!any!experience!

formulating!an!https!post!request,!then!you!might!find!the!syntax!slightly!unusual,!but!like!most!

things!in!FileMaker,!it’s!actually!very!easy!to!learn.!

!

Note:!Unlike!FileMaker,!all!Calendar!functions!and!parameter!names!are!Case!Sensitive,!e.g.!

GetEventList!is!correct,!whereas!geteventlist!or!GeteventList!are!incorrect!and!will!not!work.!!!

Predefined!parameter!values!such!as!‘default’,!‘private’,!‘public’,!‘free’!and!‘busy’!are!not!case!

sensitive.!!

!

In!FileMaker!a!semiUcolon!separates!calculations!parameters,!e.g.!

!

FunctionName![!parameter1!;!parameter!2!{!;!optional!parameters!}!]!

!

FileMaker’s!‘Insert!From!URL’!command!uses!the!following!URL!syntax!for!https!post,!

!

httpspost://api.feedzon.com/calendar/FunctionName?parameter1=value1&parameter2=value2!

!

These!are!also!commonly!known!as!‘value!pairs’.)All!Feedzon!functions!have!one!or!more!

required!parameters!and!some!have!optional!parameters.!If!you!don’t!wish!to!specify!a!value!for!

a!parameter,!you!can!leave!it!out!altogether!or!just!provide!the!parameter!without!a!value.!!

!

Unlike!FileMaker!functions,!parameters!can!be!specified!in!any!order,!e.g.!

!

&parameter1=value1&parameter2=value2!

is)exactly)the)same)as)&parameter2=value2&parameter1=value1!

!

Examples:!!!

These!examples!use!the!GetEventList!function.!!

• With!values!hardcoded!into!the!string:!

!

Insert!From!URL![!

"httpspost://api.feedzon.com/calendar/v1/GetEventList.fz?ServiceKey=123456789

&[email protected]”!]!

!

• With!values!stored!in!local!variables!the!above!string!would!look!like!this:!

!

Insert!From!URL![!

"httpspost://api.feedzon.com/calendar/v1/GetEventList.fz?ServiceKey="!&!

$ServiceKey!&!"&CalendarId="!&!$CalendarId!]!

Page!14! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!14!

!

• The!above!string!only!specifies!the!minimum!required!parameters!and!as!a!result!this!

command!would!download!all!events!in!the!specified!calendar.!However,!if!you!wanted!

to!only!download!events!that!had!changed!since!a!specific!time,!then!you!would!add!the!

optional!UpdateDateTime)parameter,!like!this:!

!

Insert!From!URL![!

"httpspost://api.feedzon.com/calendar/v1/GetEventList.fz?ServiceKey=123456789

&[email protected]&UpdateDateTime=23/11/2014!16:52:00"!]!

!

!

• It’s!also!perfectly!acceptable!to!provide!a!parameter!followed!by!an!empty!value,!in!which!

case!those!parameters!will!simply!be!ignored.!The!following!example!provides!the!same!

results!as!the!first!example!above!since!all!optional!parameters!have!empty!values.!

!

Insert!From!URL![!

"httpspost://api.feedzon.com/calendar/v1/GetEventList.fz?ServiceKey=123456789

&[email protected]&Find=&StartDateTime=&EndDateTime=&Sho

wCancelled="!!

!

• The!ability!to!provide!parameters!with!empty!values!enables!you!to!keep!your!scripting!

simple.!If!you!provide!for!all!parameters!in!your!scripts,!then!they!will!be!used!where!the!

parameter!has!a!value!and!ignored!where!it!doesn’t.!The!following!code!will!have!

different!values!depending!on!which!local!variables!have!values!and!doesn’t!require!you!

to!write!different!scripts!for!every!combination!of!values.!

!

Insert!From!URL![!

"httpspost://api.feedzon.com/calendar/v1/GetEventList.fz?ServiceKey="!&!

$ServiceKey!&!"&CalendarId="!&!$CalendarId!&!“&Find="!&!$Find!&!!

"&UpdateDateTime="!&!$UpdateDateTime!!&!"&StartDateTime=”!&!

$StartDateTime!&!"&EndDateTime="!&!$EndDateTime!&!"&!ShowCancelled="!&!

$ShowCancelled]!

!

Note!that!in!some!cases!you!may!need!to!provide!additional!logic!in!your!solution!to!trap!for!

user!errors.!For!example!in!the!above!script!step,!you!will!get!an!error!if!you!provide!values!

for!$UpdateDateTime!as!well!as!$StartDateTime!and!$EndDateTime.!

!

!

!

! '

Page!15! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!15!

Functions'&'Examples'

'

Calendars'You!can!download!details!of!calendars,!but!you!cannot!create,!edit!or!remove!calendars!through!

the!Feedzon!Calendar!web!service!at!this!time.!

!

GetCalendarList'Returns!a!list!of!calendars!in!this!Google!account.!

!

Function!name! GetCalendarList.fz!

Required!parameters! ServiceKey!

!

Example:!!!

Insert!From!URL![!"httpspost://api.feedzon.com/calendar/v1/GetCalendarList.fz?ServiceKey="!&!

“123456789”!]!

!

Result:!!

"0"!!

"[email protected]","1416789821562000","Work","","","Europe/London"!!

"[email protected]","1416789833639000","Personal","",

"","Europe/London"!

!

The!first!line!will!be!"0"!if!successful,!otherwise!an!error!code.!If!successful!then!each!subsequent!

line!will!contain!the!data!for!that!calendar!in!a!comma!separated!quoted!format.!!

!

The!values!represent:!

"CalenderId","CalendarEtag!","CalendarSummary","CalendarLocation","CalendarDescription",!

"CalendarTimeZone"!

!

!

!

! '

Page!16! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!16!

InsertEvent'and'UpdateEvent'Create!a!new!event!or!update!the!specified!event.'!

Function!name! InsertEvent.fz! UpdateEvent.fz!

Required!parameters! ServiceKey,!CalendarId,!StartDate,!

EndDate,!Summary!

ServiceKey,!CalendarId,!EventId,!

StartDate,!EndDate,!Summary!

Optional!parameters! StartTime,!StartTimeZone,!

EndTime,!EndTimeZone,!Location,!

Description,!Repeat,!RepeatByDay,!

RepeatEvery,!RepeatCount,!

RepeatUntil,!FreeBusy,!Visibility,!

AttendeeList!

StartTime,!StartTimeZone,!

EndTime,!EndTimeZone,!Location,!

Description,!Repeat,!RepeatByDay,!

RepeatEvery,!RepeatCount,!

RepeatUntil,!FreeBusy,!Visibility,!

Status!

!

Parameters:!

• StartDate!&!EndDate*!

• StartTime!&!EndTime,!in!HH:MM!or!HH:MM:SS!format.!

• An!‘All!Day’!event!can!be!defined!by!leaving!the!start!and!end!times!empty,!i.e.!there!is!

no!specific!parameter!to!set!as!‘all!day’.!

• StartTimeZone!&!EndTimeZone,!if!used!must!be!from!the!list!U!please!refer!to!the!

appendices.!If!not!specified,!the!default!calendar!time!zone!will!be!provided.!

• Summary!is!the!event!title,!max!1024!characters.!!

• Location,!max!1024!characters.!

• Description,!max!8192!characters.!

• Repeat!should!be!empty!for!nonUrepeating!events.!Otherwise!specify!‘daily’,!‘weekly’,!

‘monthly’!or!‘yearly’.!If!used!you!must!also!supply!additional!values!to!describe!the!

repetition.!

• RepeatByDay!is!only!used!for!weekly!repetitions!and!defines!on!which!days!of!the!week!

the!repetition!occurs.!The!format!is!x,x,x,x,x,x,x!where!x!should!be!a!1!or!a!0!and!the!

values!are!for!Sunday,!Monday,!Tuesday,!Wednesday,!Thursday,!Friday!and!Saturday!

respectively.!For!example!the!value!0,1,0,1,0,1,0!will!repeat!on!Monday,!Wednesday!

and!Friday.!Please!refer!to!the!appendices!for!additional!information.)• RepeatEvery!defines!how!often!the!repetition!occurs.!A!Daily!repeating!event!with!a!

value!of!1!will!repeat!every!day;!a!value!of!2!will!repeat!every!other!day.!If!no!value!is!

defined!for!a!repeating!event!then!a!default!of!1!is!applied.!Values!from!1!to!30.)• RepeatCount**!defines!the!number!of!times!this!event!repeats,!e.g.!10.)• RepeatUntil*)/)**!defines!the!date!until!which!this!event!repeats.)• FreeBusy!(labelled!‘ShowMeAs’!in!the!browser)!can!be!‘free’!or!‘busy’.!The!default!

‘busy’!is!used!if!unspecified.!This!parameter!is!optional!for!InsertEvent!and!required!for!

UpdateEvent.!

• Visibility!can!be!‘default’,!‘private’!or!‘public’.!If!unspecified!then!the!calendar!default!setting!will!be!applied.!

• AttendeeList)defines!one!or!more!attendees!to!be!invited!to!this!event.!Each!attendee!is!

specified!by!their!email!address.!Use!a!comma!to!separate!multiple!attendees.!Note!

that!this!parameter!only!works!with!InsertEvent!but!does!not!work!with!UpdateEvent!U!see!separate!commands!for!updating!attendees.!Note!that!emails!are!not!automatically!

sent!to!attendees,!so!you!should!do!this!through!your!own!solution.!

Page!17! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!17!

• Status!can!be!‘confirmed’!or!‘cancelled’!and!can!only!be!set!with!UpdateEvent!(logically,!

the!default!status!is!‘confirmed’!for!the!InsertEvent!command).!Changing!an!event!

status!to!‘cancelled’!is!essentially!the!same!as!using!the!RemoveEvent!command.!

!

*!All!dates!must!be!in!the!format!selected!in!the!calendar!service!page,!e.g.!dd/mm/yyyy!

**!To!create!a!perpetual!(never!ending)!event,!leave!both!RepeatCount!and!RepeatUntil!values!blank.!Where!a!value!is!used,!only!specify!one!of!these!values,!not!both.!

!

Note!that!if!you!use!the!UpdateEvent!function!with!a!blank!parameter!value,!then!any!previous!

value!will!be!overwritten,!so!although!some!parameters,!like!StartTimeZone!and!EndTimeZone,!

you!must!include!them!if!they!have!a!value.!However!the!parameters!FreeBusy,!Visibility!and!Status!will!always!retain!their!current!values!if!not!specified!in!an!UpdateEvent!function.!!

Example:'!

Insert!From!URL![!

“httpspost://api.feedzon.com/calendar/v1/InsertEvent.fz?ServiceKey=123456789&CalendarId=p

etersmith@gmailcom&StartTime=12:00:00&StartDate=26/11/2014&StartTimeZone=Europe/Lon

don&EndTime=13:00:00&EndDate=26/11/2014&EndTimeZone=Europe/London&FreeBusy=busy

&Visibility=private&Summary=Team!Meeting&Location=Meeting!Room!A&Description=Discuss!

project!progress&Repeat=&RepeatByDay=&RepeatEvery=&RepeatCount=&RepeatUntil=!

&[email protected],[email protected],[email protected]”!]!!

Note!that!the!command!lines!above!and!below!will!have!exactly!the!same!effect,!assuming!the!

default!calendar!time!zone!applies!and!considering!the!‘repeat’!values!are!all!blank:!!

Insert!From!URL![!

“httpspost://api.feedzon.com/calendar/v1/InsertEvent.fz?ServiceKey=123456789&CalendarId=p

etersmith@gmailcom&StartTime=12:00:00&StartDate=26/11/2014&EndTime=13:00:00&EndDat

e=26/11/2014&FreeBusy=busy&Visibility=private&Summary=Team!Meeting&Location=Meeting!

Room!A!&Description=Discuss!project!progress!&AttendeeList=!

[email protected],[email protected],[email protected]”!]!!

' '

Page!18! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!18!

Result:!!

"0"!

"[email protected]","ujq86q4ka8pciqhtfi5cnrp0rg","2833583979180000",!

"https://www.google.com/calendar/event?eid=YnVhZHUzNDQ3dGNlMjI4N2Vza2RxMDEycmMgY

2hhaW1iYWNvbkBt","24/11/2014!01:19:49","24/11/2014!

01:19:49","0","busy","private","confirmed"!!

The!first!line!will!be!"0"!if!successful,!otherwise!an!error!code.!If!successful!then!the!second!line!

will!contain!the!data!in!a!comma!separated!quoted!format.!!

The!values!represent:!

"CalendarId",!"EventId",”EventEtag","Event_HTML_Link","EventCreated","EventUpdated",!

"EventModificationCount","EventFreeBusy","EventVisibility","EventStatus"!!

EventStatus:!!

All!events!have!a!default!status!of!‘confirmed’!unless!they!have!been!‘cancelled’.!If!an!event!is!

removed!it’s!status!is!actually!updated!to!‘Cancelled’.!!

!

!

Change'Cancelled'back'to'Confirmed:!You!can!change!the!status!of!a!‘cancelled’!event!back!to!‘confirmed’!using!the!UpdateEvent!

command!as!long!as!you!still!have!the!original!EventId.!

! '

Page!19! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!19!

GetEvent'Returns!details!of!the!specified!event.'!

Function!name! GetEvent.fz!

Required!parameters! ServiceKey,!CalendarId,!EventId!

!

Note!that!this!command!converts!any!downloaded!new!line!or!paragraph!return!characters!to!

"\n"!to!avoid!complications!with!the!GetValue!function,!as!demonstrated!in!our!example!files.!

You!will!need!to!substitute!"\n"!back!to!"¶"!to!retain!the!original!formatting!of!your!data.!This!

only!affects!the!‘Summary’,!‘Location’!and!‘Description’!and!attendee!‘comment’!values.!

!

Example:!!!

Insert!From!URL![!"httpspost://api.feedzon.com/calendar/v1/GetEvent.fz?ServiceKey="!&!

“123456789”!&!"&CalendarId="!&!“[email protected]”!&!

"&EventId="!&!62243g9l8grjab9n8orjab9p6h130ba16d236ba56t2j4dq46cq3ec236s!]!

!

Result:!!

"0"!

"[email protected]","62243g9l8grjab9n8orjab9p","2850634037070000","https://www.goo

gle.com/calendar/event?eid=OXFvdDFmZG9hdWtvZHRmo4dXRwbTBfMjAxNTAzMDJUMDgxNTA

wWiBnMzBnZDhn","Weekly!Team!Meeting","Office","Brief!Projects!

Update","02.03.2015","10:00:00","Asia/Bangkok","02.03.2015","10:30:00","Asia/Bangkok","Wee

kly","1","1,0,1,0,1,0,1","","31.12.2015","3","01.01.2015!17:05:26","01.01.2015!

17:23:38","2","busy","private","cancelled"!

!

The!first!line!will!be!"0"!if!successful,!otherwise!an!error!code.!If!successful!then!the!second!line!

will!contain!the!data!in!a!comma!separated!quoted!format.!

!

The!values!represent:!

"CalendarId","EventId","EventEtag","HTML_Link","EventSummary","EventLocation","EventDescri

ption","EventStartDate","!EventStartTime","!EventStartTimeZone","!EventEndDate","!

EventEndTime","EventEndTimeZone","EventRepeat","EventRepeatEvery","EventRepeatByDay",!

"EventRepeatCount","EventRepeatUntil","EventAttendeeCount","EventCreated",!

"EventUpdated","EventModificationCount","EventFreeBusy","EventVisibility","EventStatus"!

! '

Page!20! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!20!

GetEventList'Returns!a!list!of!events!in!the!specified!calendar.!If!you!do!not!specify!any!of!the!optional!

parameters!then!all!events!in!the!calendar!will!be!returned.'!

Function!name! GetEventList.fz!

Required!parameters! ServiceKey,!CalendarId!

Optional!parameters! Find!(text!string),!UpdateDateTime,!StartDateTime,!

EndDateTime,!ShowCancelled!

!

Note!that!this!command!converts!any!downloaded!new!line!or!paragraph!return!characters!to!

"\n"!to!avoid!complications!with!the!GetValue!function,!as!demonstrated!in!our!example!files.!

You!will!need!to!substitute!"\n"!back!to!"¶"!to!retain!the!original!formatting!of!your!data.!This!

only!affects!the!‘Summary’,!‘Location’!and!‘Description’!and!attendee!‘comment’!values.!

!

Parameters:!

• Find!is!a!text!string!that!you!wish!to!search!for!matching!events.!Where!specified!only!

matching!events!will!be!returned.!Searches!summary!(event!title),!location!and!

description!fields.!

• UpdateDateTime*)specifies!a!timestamp!from!which!you!want!to!download!all!changes!

that!occurred!in!Google.!When!used,!all!changes!in!the!calendar!since!the!

UpdateDateTime!will!be!returned!including!events!that!were!created,!edited!and!removed!(if!the!ShowCancelled!option!is!set).!Note!that!this!may!also!include!events!

that!were!created,!edited!or!removed!in!FileMaker!and!uploaded!to!Google.!When!

using!this!parameter!do!not!specify!StartDateTime!or!EndDateTime.!Use!this!parameter!

to!synchronise!your!FileMaker!database!with!Google!Calendar!and!save!the!timestamp!

when!it!was!last!synchronised.!Download!the!changes!into!a!temporary!table!that’s!

related!to!your!event!data!by!EventId,!compare!records!and!adjust!them!accordingly.!

This!parameter!is!accurate!to!the!second.!The!UpdateDateTime!value!should!be!specified!in!the!calendars!default!time!zone.!!!

NOTE:!Google!says!that!it!limits!the!number!of!days!that!you!can!query!

UpdateDateTime!to!a!maximum!20!days!(although!our!testing!has!managed!slightly!

more).!If!you!specify!a!date!too!far!in!the!past!you!will!get!a!3030!error.!!

• StartDateTime*!and!EndDateTime*!specify!the!date!range!of!the!search.!Where!

specified!only!events!in!the!specified!date!range!will!be!returned.!

• ShowCancelled!uses!the!value!1!to!include!cancelled!(removed)!events,!e.g.!

&ShowCancelled=1.!

!

*!The!date!element!of!all!timestamps!must!be!in!the!format!selected!in!the!calendar!service!

page,!e.g.!dd/mm/yyyy!and!the!time!elements!require!seconds,!e.g.!HH:MM:SS.!

!

Feedzon'Service'Selected'Format' Timestamp'Value'Examples'

dd/mm/yyyy! 21/02/2015!11:36:15!

mmUddUyyyy! 02U21U2015!11:36:15!

yyyy.mm.dd! 2015.02.21!11:36:15!

Page!21! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!21!

Example:!!

Insert!From!URL!["httpspost://api.feedzon.com/calendar/v1/GetEventList.fz?ServiceKey="!&!

"123456789”!&!"&CalendarId="!&!"[email protected]"!]!

!

The!above!code!would!return!all!events!in!the!calendar.!Alternatively!specify!a!modification!date,!!

a!date!range!and!/!or!a!text!value!to!limit!the!search!by!appending!these!values,!for!example:!

!

"&UpdateDateTime=”!&!"01/01/2015!11:22:33”!

"&ShowCancelled!="!&!1!!

!

or!

!

"&Find="!&!“Meeting"!&!

"&StartDateTime="!&!"01/11/2014!00:00:00"!&!

"&EndDateTime="!&!"30/11/2014!23:59:59"!&!

'Result:!!

"0"!!

"[email protected]","62243g9l8grjab9n8orjab9p","2833581899948000",!

"https://www.google.com/calendar/event?eid=OXFvdDFmZG9hdWtvZHRmo4dXRwbTBfMjAxNX"

,"Staff!Meeting!Management","Boardroom","Weekly!

management!meeting","25/11/2014","10:00:00","Europe/London","25/11/2014","11:00:00","Eu

rope/London","","","","","","0","24/11/2014!01:02:29","24/11/2014!

01:02:29","3","busy","private","confirmed"!!

"[email protected]","01dpuafpven7ker0nep9en36ms","","2833582068154000","!

https://www.google.com/calendar/event?eid=hhgvdDFmZG9hdWtvZHRmo4dXRwbTBABCDE55",

"Accounts!Meeting","Accounts!Office","Discuss!

forthcoming!annual!report","27/11/2014","13:00:00","Europe/London","27/11/2014","14:00:00

","Europe/London","","","","","","7","24/11/2014!01:03:53","24/11/2014!

01:03:53","11","busy","private","confirmed"!!

!

The!first!line!will!be!"0"!if!successful,!otherwise!an!error!code.!If!successful!then!each!subsequent!

line!will!contain!the!data!for!that!event!in!a!comma!separated!quoted!format.!!

!

If!the!ShowCancelled!option!is!set!to!download!cancelled!(removed)!events,!these!events!will!

have!an!EventStatus!value!of!‘cancelled’.!

!

The!values!represent:!

"CalendarId","EventId","EventEtag","HTML_Link","EventSummary","EventLocation","EventDescri

ption","EventStartDate","!EventStartTime","!EventStartTimeZone","!EventEndDate","!

EventEndTime","EventEndTimeZone","EventRepeat","EventRepeatEvery","EventRepeatByDay",!

"EventRepeatCount","EventRepeatUntil","EventAttendeeCount","EventCreated",!

"EventUpdated","EventModificationCount","EventFreeBusy","EventVisibility","EventStatus"!

!

Page!22! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!22!

GetInstanceList'Returns!a!list!of!instances!(repetition!dates)!for!the!specified!repeating!event.!This!can!be!used!if!

you!wish!to!have!one!related!record!in!FileMaker!for!each!event!and!saves!you!from!having!to!

calculate!the!individual!dates!in!FileMaker.'!

Function!name! GetInstanceList.fz!

Required!parameters! ServiceKey,!CalendarId,!EventId!

!

Example:!!

Insert!From!URL!["httpspost://api.feedzon.com/calendar/v1/GetInstanceList.fz?ServiceKey="!&!

"123456789”!&!"&CalendarId="!&!"[email protected]"!"&EventId="!&!

"01dpuafpven7ker0nep9en36ms"!]!

!

Result:!!

"0"!!

"[email protected]","1rbnbl5ckjea043j1r6r8f3u81","2832031445150000","https://www.go

ogle.com/calendar/event?eid=MXJibmJsNWNramVhMDQzajFyNnI4ZjNsN3NfMjAxNTAzMTZUM",

"Title","Loc","Desc","16/03/2015","20:00:00","Europe/London","16/03/2015","21:00:00","Europe/London","04/03/2015!23:57:34","05/03/2015!00:35:22","10","busy","default","confirmed"!!

"[email protected]","1rbnbl5ckjea043j1r6r8f3u81","2832031445150000","https://www.go

ogle.com/calendar/event?eid=MXJibmJsNWNramVhMDQzajFyNnI4ZjNsN3NfMjAxNTAzMjBUM",

"Title","Loc","Desc","20/03/2015","20:00:00","Europe/London","20/03/2015","21:00:00","Europe/London","04/03/2015!23:57:34","05/03/2015!00:35:22","10","busy","default","confirmed"!!

"[email protected]","1rbnbl5ckjea043j1r6r8f3u81","2832031445150000","https://www.go

ogle.com/calendar/event?eid=MXJibmJsNWNramVhMDQzajFyNnI4ZjNsN3NfMjAxNTAzMjNUM",

"Title","Loc","Desc","23/03/2015","20:00:00","Europe/London","23/03/2015","21:00:00","Europe/London","04/03/2015!23:57:34","05/03/2015!00:35:22","10","busy","default","confirmed"!

!

The!first!line!will!be!"0"!if!successful,!otherwise!an!error!code.!If!successful!then!each!subsequent!

line!will!contain!the!data!for!that!calendar!in!a!comma!separated!quoted!format.!!

!

If!none!of!the!repeating!instances!have!been!edited!they!will!all!contain!identical!values!except!

for!the!start!and!end!dates,!highlighted!above!in!bold.!

!

The!values!represent:!

"CalendarId","EventId","EventEtag","HTML_Link","EventSummary","EventLocation","EventDescri

ption","EventStartDate","!EventStartTime","!EventStartTimeZone","!EventEndDate",!

"EventEndTime","EventEndTimeZone","EventCreated","EventUpdated",!

"EventModificationCount","EventFreeBusy","EventVisibility","EventStatus"!

!!

! '

Page!23! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!23!

UpdateInstance'Update!an!individual!instance!of!a!repeating!event.'!

Function!name! GetInstanceList.fz!

Required!parameters! ServiceKey,!CalendarId,!EventId,!EventDate,!

StartDate,!EndDate,!Summary!

Optional!parameters! Location,!Description,!StartTime,!StartTimeZone,!

EndTime,!EndTimeZone,!FreeBusy,!Visibility!

!

Parameters:!

All!parameters!listed!here!are!identical!to!those!used!in!InsertEvent!with!the!exception!of!

EventDate.!The!date!of!the!specific!instance!being!edited!is!used!to!identify!which!instance!is!

being!updated.!It's!the!ID,!so!to!speak.!If!you!wish!to!actually!change!the!date!of!this!instance,!

then!you!must!retain!the!original!instance!date!for!the!purpose!of!identification!in!the!EventDate!

parameter.!Then!place!the!new!start!date!of!this!instance!in!the!StartDate!parameter.!If!your!

users!are!permitted!to!edit!the!actual!instance!date!then!you!will!need!to!script!your!solution!to!

record!the!original!instance!date,!e.g.!in!a!variable!or!by!only!allowing!them!to!edit!the!data!in!

temporary!global!fields.!If!the!date!is!not!being!changed!then!provide!the!same!value!for!

EventDate!and!StartDate.!

'Example:!!

Insert!From!URL!["httpspost://api.feedzon.com/calendar/v1/UpdateInstanceList.fz?ServiceKey="!

&!"123456789”!&!"&CalendarId="!&!"[email protected]"!"&EventId="!&!

"01dpuafpven7ker0nep9en36ms"!]!

!

Result:!!

"0"!!

"[email protected]","1rbnbl5ckjea043j1r6r8f3u81","2832031445150000","https://www.go

ogle.com/calendar/event?eid=MXJibmJsNWNramVhMDQzajFyNnI4ZjNsN3NfMjAxNTAzMTZUM",

"Title","Loc","Desc","16/03/2015","20:00:00","Europe/London","16/03/2015","21:00:00","Europ

e/London","04/03/2015!23:57:34","05/03/2015!00:35:22","10","busy","default","confirmed"!

!

The!first!line!will!be!"0"!if!successful,!otherwise!an!error!code.!If!successful!then!the!second!line!

will!contain!the!data!in!a!comma!separated!quoted!format.!

!

The!values!represent:!

"CalendarId","EventId","EventEtag","HTML_Link","EventSummary","EventLocation",!

"EventDescription","EventStartDate","!EventStartTime","!EventStartTimeZone","!EventEndDate",!

"EventEndTime","EventEndTimeZone","EventCreated","EventUpdated",!

"EventModificationCount","EventFreeBusy","EventVisibility","EventStatus"!

!

! '

Page!24! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!24!

RemoveInstance'Remove!the!specified!instance!of!a!repeating!event!from!Google!Calendar.'!

Function!name! RemoveEvent.fz!

Required!parameters! ServiceKey,!CalendarId,!EventId!

!

Example:!!!

Insert!From!URL![!"httpspost://api.feedzon.com/calendar/v1/RemoveInstance.fz?ServiceKey="!&!

"123456789"!&!"&CalendarId="!&!“[email protected]"!&!

"&EventId="!&!62243g9l8grjab9n8orjab9p6h130ba16d236ba56t2j4dq46cq3ec236s!]!&!!

"&EventDate="!&!"16/03/2015"!

!

Result:!!

“0”!

!

The!result!will!be!"0"!if!successful,!otherwise!an!error!code.!Once!an!event!instance!has!been!

removed!from!Google!it!cannot!be!reinstated!just!by!updating!the!parent!event.!To!reinstate!all!

removed!instances!you!would!need!to!recreate!the!parent!event!as!a!completely!new!repeating!

event.!Or!alternatively!just!create!individual!nonUrepeating!events!for!the!now!removed!

instances.!

Page!25! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!25!

GetAttendeeList'Returns!a!list!of!attendees!for!the!specified!event.!

!

Function!name! GetAttendeeList.fz!

Required!parameters! ServiceKey,!CalendarId,!EventId!

!

Example:!!!

Insert!From!URL![!

“httpspost://api.feedzon.com/calendar/v1/GetAttendeeList.fz?ServiceKey=123456789&Calendar

[email protected]&EventId=tnhkcfju93t023bkgg8157f814g”!]!

!

Result:!!

"0"!!

"[email protected]","tnhkcfju93t023bkgg8157f814g","[email protected]",!

"needsAction","0","Disabled!access!required"!!

"[email protected]","tnhkcfju93t023bkgg8157f814g","[email protected]",!

"acepted","0","May!arrive!late"!

!

The!first!line!will!be!"0"!if!successful,!otherwise!an!error!code.!If!successful!then!the!second!line!

and!subsequent!lines!will!contain!the!data!in!a!comma!separated!quoted!format.!

!

The!values!represent:!

"CalendarId","EventId","AttendeeEmailAddress","AttendeeResponseStatus","AttendeeOptional",

"AttendeeComment"!

!

Note!that!this!command!converts!any!downloaded!new!line!or!paragraph!return!characters!in!

the!AttendeeComment!!to!"\n"!to!avoid!complications!with!the!GetValue!function,!as!

demonstrated!in!our!example!files.!You!will!need!to!substitute!"\n"!back!to!"¶"!to!retain!the!

original!formatting!of!your!data.!!

!

Note!that!an!event!created!with!no!additional!attendees,!e.g.!just!the!calendar!owner,!is!

considered!by!Google!to!have!no!attendees!since!attendees!are!additional!people!invited!to!the!

event.!Therefore!the!GetAttendeeList!functions!will!return!no!attendee!details!if!only!the!calendar!owner!is!attending.!If!additional!attendees!are!added!through!this!service,!then!only!

those!attendees!will!be!listed,!however!if!you!add!an!attendee!in!the!web!browser,!Google!

automatically!adds!the!calendar!owner!as!an!attendee!as!well,!who!will!then!be!included!in!the!

result!of!this!function.!

!

! !

Page!26! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!26!

InsertAttendee'&'UpdateAttendee'Add!or!update!an!individual!attendee!for!a!specified!event.!Repeat!the!command!for!each!

attendee!that!you!need!to!add!or!update!for!the!event.!This!function!is!for!adding!attendees!

after!the!event!has!been!created!or!when!you!need!to!specify!the!additional!values!that!cannot!

be!specified!when!using!the!InsertEvent!function!with!the!AttendeeList!parameter.!!

!

Function!name! InsertAttendee.fz! UpdateAttendee.fz!

Required!parameters! ServiceKey,!CalendarId,!EventId,!EmailAddress!

Optional!Parameters! ResponseStatus,!Optional,!Comment!

!

Parameters:!• EmailAddress!is!a!single!email!address.!

• ResponseStatus!can!be!one!of!the!following:!needsAction,!declined,!tentative,!accepted.!FYI,!when!viewing!the!list!of!attendees!in!your!web!browser,!‘needsAction’!has!no!icon,!

declined!=!⊘,!tentative!=!?!and!accepted!=!✓.!If!undefined!the!value!‘needsAction’!will!be!

applied.!

• Optional!defines!whether!this!attendee’s!attendance!is!optional!or!compulsory.!If!

attendance!is!optional!set!Optional=true.!If!attendance!is!compulsory!set!Optional=false.!

If!undefined!the!value!‘true’!will!be!applied.!

• Comment!is!an!optional!text!entry!that!refers!to!this!attendee,!e.g.!‘Disabled!access!required’!or!‘May!be!late’!or!the!date!they!confirmed!attendance.!This!value!can!be!seen!

in!the!browser!view.!

!

Example:!!!

Insert!From!URL![!

“httpspost://api.feedzon.com/calendar/v1/InsertAttendee.fz?ServiceKey=123456789&!

[email protected]&EventId=tnhkcfju93t023bkgg8157f814g&EmailAddress=!

[email protected]&ResponseStatus=needsAction&Optional=true&!

Comment=Disabled!access!required"!]!

!

Result:!!

"0"!!

"[email protected]","tnhkcfju93t023bkgg8157f814g",!

"[email protected]","needsAction"","0","Disabled!access!required"!

!

The!first!line!will!be!"0"!if!successful,!otherwise!an!error!code.!If!successful!then!the!second!line!

will!contain!the!data!in!a!comma!separated!quoted!format.!

!

The!values!represent:!

"CalnedarId","EventId","EmailAddress","ResponseStatus","Optional","Comment”!

!

!

!

Page!27! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!27!

RemoveAttendee'Removes!an!attendee!from!the!specified!event.!

!

Function!name! RemoveAttendee.fz!

Required!parameters! ServiceKey,!CalendarId,!EventId,!EmailAddress!

!

Example:!!!

Insert!From!URL![!

“httpspost://api.feedzon.com/calendar/v1/RemoveAttendee.fz?ServiceKey=123456789&!

[email protected]&EventId=tnhkcfju93t023bkgg8157f814g&EmailAddress=!

[email protected]"!]!

!

Result:!!

"0"!!

!

The!result!will!be!"0"!if!successful,!otherwise!an!error!code.!!

!

!

! !

Page!28! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!28!

RemoveEvent'Remove!the!specified!event,!including!any!repeating!instances,!from!Google!Calendar.'!

Function!name! RemoveEvent.fz!

Required!parameters! ServiceKey,!CalendarId,!EventId!

!

Example:!!!

Insert!From!URL![!"httpspost://api.feedzon.com/calendar/v1/RemoveEvent.fz?ServiceKey="!&!

“123456789”!&!"&CalendarId="!&!“[email protected]”!&!

"&EventId="!&!62243g9l8grjab9n8orjab9p6h130ba16d236ba56t2j4dq46cq3ec236s!]!

!

Result:!!

“0”!

!

The!result!will!be!"0"!if!successful,!otherwise!an!error!code.!!

!

Note!that!removing!an!event!is!essentially!the!same!as!using!the!UpdateEvent!command!and!

changing!the!status!to!‘cancelled’.!Once!an!event!has!been!removed,!it!can!be!reinstated!if!you!

still!have!the!EventId!by!changing!the!status!to!‘confirmed’!using!the!UpdateEvent!function.!!If!

you!have!removed!the!record!from!FileMaker,!you!may!still!be!able!retrieve!the!EventId!by!using!

the!GetEventList!function!with!the!UpdateDateTime!and!ShowCancelled!parameters.!

! '

Page!29! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!29!

MoveEvent'Move!a!specified!event!from!one!Google!Calendar!to!another!whilst!retaining!the!same!EventId.'!

Function!name! MoveEvent.fz!

Required!parameters! ServiceKey,!EventId,!CalendarId,!DestinationCalendarId!

!

Example:!!!

Insert!From!URL![!

“httpspost://api.feedzon.com/calendar/v1/MoveEvent.fz?ServiceKey=123456789&!!

EventId=tnhkcfju93t023bkgg8157f814g&[email protected]&!

[email protected]”!]!

!

Result:!!

"0"!

!

The!result!will!be!"0"!if!successful,!otherwise!an!error!code.!!

!

Note!that!even!though!Google!retains!the!same!EventId,!it!has!actually!changed!the!status!of!the!

original!event!to!‘cancelled’!and!created!a!new!event!in!the!destination!calendar!using!the!same!

EventId.!If!you!subsequently!perform!a!GetEventList!function!using!the!UpdateDateTime!

parameter,!the!original!event!will!download!with!the!status!of!‘cancelled’!when!querying!the!

original!calendar!and!with!the!status!of!‘confirmed’!when!querying!the!new!calendar.!If!you!

implement!full!synchronisation!in!your!solution!then!you!must!use!caution!to!ensure!the!record!

in!your!database!is!updated!with!the!latest!version!of!the!event,!which!can!be!identified!by!the!

Etag!value!(see!Terminology!>!Etag!earlier!in!this!manual).!

!

!

!

! !

Page!30! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!30!

Appendices'

Time'Zones'Information'Google!implements!the!following!rules!for!time!zones.!

!

1. AllUday!events!can!only!be!in!the!calendar’s!default!time!zone.!Do!not!specify!any!time!zone,!

not!event!the!default!time!zone,!when!creating!an!all!day!event,!otherwise!Google!returns!an!

error.!

2. A!single!nonUrepeating!event!can!begin!and!end!in!different!time!zones,!e.g.!a!flight!that!

crosses!time!zones.!!

3. Repeating!events!must!start!and!end!in!the!same!time!zone.!This!does!not!have!to!be!your!

default!calendar!time!zone,!but!the!time!zones!for!the!start!and!end!of!the!event!must!be!the!

same.!If!you!specify!different!time!zones!for!the!start!and!end!of!a!repeating!event,!you!will!

get!a!data!validation!error!message.!

!

If!you!use!multiple!time!zones,!then!problems!can!often!occur!because!time!zones!are!

complicated.!Please!see!this!article!for!more!information!about!how!Google!Calendar!works!with!

time!zones:!https://support.google.com/calendar/answer/2367918?hl=en!

!

If!the!country!required!is!not!on!the!list,!please!choose!the!nearest!major!city!with!the!same!time!

zone.!

!

Time'Zone'Regions'All!Google!time!zone!regions!are!supported.!Where!unspecified,!the!default!time!zone!will!be!

used!for!the!calendar!as!defined!by!your!Google!Calendar!settings.!Where!specified,!you!must!

specify!the!region!name!from!the!list!below.!Remember!that!nonUrepeating!events!can!start!and!

end!in!different!time!zones,!ideal!for!a!flight,!for!example,!but!repeating!events!must!start!and!

end!in!the!same!time!zone!as!each!other,!although!this!doesn’t!have!to!be!your!calendar’s!

default!time!zone!(this!is!a!Google!limitation).!

!

Africa/Abidjan Africa/Accra Africa/Algiers Africa/Bissau Africa/Cairo Africa/Casablanca Africa/Ceuta Africa/El_Aaiun Africa/Johannesburg Africa/Khartoum Africa/Lagos Africa/Maputo Africa/Monrovia Africa/Nairobi Africa/Ndjamena Africa/Tripoli

Africa/Tunis Africa/Windhoek America/Anchorage America/Antigua America/Araguaina America/Argentina/Buenos_Aires America/Asuncion America/Bahia America/Barbados America/Belem America/Belize America/Boa_Vista America/Bogota America/Campo_Grande America/Caracas

Page!31! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!31!

America/Cayenne America/Cayman America/Chicago America/Costa_Rica America/Cuiaba America/Curacao America/Danmarkshavn America/Dawson_Creek America/Denver America/Edmonton America/El_Salvador America/Fortaleza America/Godthab America/Grand_Turk America/Guatemala America/Guayaquil America/Guyana America/Halifax America/Havana America/Hermosillo America/Iqaluit America/Jamaica America/La_Paz America/Lima America/Los_Angeles America/Maceio America/Managua America/Manaus America/Martinique America/Mazatlan America/Mexico_City America/Miquelon America/Montevideo America/Montreal America/Nassau America/New_York America/Noronha America/Panama America/Paramaribo America/Phoenix America/Port_of_Spain America/Port-au-Prince America/Porto_Velho America/Puerto_Rico America/Recife America/Regina America/Rio_Branco America/Santiago

America/Santo_Domingo America/Sao_Paulo America/Scoresbysund America/St_Johns America/Tegucigalpa America/Thule America/Tijuana America/Toronto America/Vancouver America/Whitehorse America/Winnipeg America/Yellowknife Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Vostok Australia/Adelaide Australia/Brisbane Australia/Darwin Australia/Hobart Australia/Perth Australia/Sydney Europe/Amsterdam Europe/Andorra Europe/Athens Europe/Belgrade Europe/Berlin Europe/Brussels Europe/Bucharest Europe/Budapest Europe/Chisinau Europe/Copenhagen Europe/Dublin Europe/Gibraltar Europe/Helsinki Europe/Istanbul Europe/Kaliningrad Europe/Kiev Europe/Lisbon Europe/London Europe/uxembourg

Page!32! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!32!

Europe/Madrid Europe/Malta Europe/Minsk Europe/Monaco Europe/Moscow Europe/Oslo Europe/Paris Europe/Prague Europe/Riga Europe/Rome Europe/Samara Europe/Sofia Europe/Stockholm Europe/Tallinn Europe/Tirane Europe/Vienna Europe/Vilnius Europe/Warsaw Europe/Zurich Indian/Chagos Indian/Christmas Indian/Cocos Indian/Kerguelen Indian/Mahe Indian/Maldives Indian/Mauritius Indian/Reunion Pacific/Apia Pacific/Auckland Pacific/Chuuk Pacific/Easter

Pacific/Efate Pacific/Enderbury Pacific/Fakaofo Pacific/Fiji Pacific/Funafuti Pacific/Galapagos Pacific/Gambier Pacific/Guadalcanal Pacific/Guam Pacific/Honolulu Pacific/Kiritimati Pacific/Kosrae Pacific/Kwajalein Pacific/Majuro Pacific/Marquesas Pacific/Midway Pacific/Nauru Pacific/Niue Pacific/Norfolk Pacific/Noumea Pacific/Pago_Pago Pacific/Palau Pacific/Pitcairn Pacific/Pohnpei Pacific/Port_Moresby Pacific/Rarotonga Pacific/Saipan Pacific/Tahiti Pacific/Tarawa Pacific/Tongatapu Pacific/Wake Pacific/Wallis

!

!

!

!

!

!

!

! '

Page!33! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!33!

Success'&'Error'Codes'Where!successful,!a!function!will!return!“0”!as!the!first!line!of!the!result,!otherwise!an!error!code!

may!be!returned!from!the!following!list.!

!

Code' Code'By' Description'

! U1! Feedzon!

The!function!name!doesn’t!exist!or!has!been!spelled!incorrectly.!Note!that!

function!names!are!case!sensitive,!e.g.!

!

httpspost://api.feedzon.com/calendar/v1/GetEventList.fz!=!correct!

httpspost://api.feedzon.com/calendar/v1/geteventlist.fz!=!incorrect!

! 0! Feedzon! Success,!no!error!has!occurred.!Parse!the!remaining!data!as!appropriate.!

1000! Feedzon! ServiceKey!is!invalid!or!all!your!Feedzon!Calendar!services!are!disabled.!

1010! Feedzon!

Validation!Error!U!Data!format!error!or!required!data!missing!or!field!name!

error.!Common!reasons!include:!

• A!misspelled!a!parameter!name!(they!are!case!sensitive)!

• You!have!specified!only!a!Date!value!where!a!DateTime!value!is!

required,!e.g.!in!GetEventList.!!

• The!event!end!date/time!is!later!than!the!start!date/time!U!especially!

when!using!time!zones,!e.g.!a!threeUhour!event!that!starts!in!New!York,!

USA!at!12:00!and!ends!in!London,!UK!!at!14:00!will!fail!because!of!the!

five!hour!time!!difference.!That!event!would!need!five!hours!time!

difference!plus!three!hours!for!the!event.!!• All!dates!must!be!in!the!format!defined!in!your!Feedzon!service!page,!

e.g.!dd/mm/yyyy,!mm/dd/yyyy,!yyyy/mm/dd!etc.!if!you!change!the!

format!in!the!service!page,!ensure!all!data!matches!the!format.!

• If!you!try!to!add!an!attendee!who!is!already!attending!the!event.!Check!maximum!length!for!Summary,!Location!and!Description!values.!!

!

Note!that!in!the!coming!weeks!we!will!enhance!the!response!to!provide!

details!of!the!specific!items!that!were!missing!or!failed!validation.!These!

details!will!be!provided!on!the!second!line!of!the!response.!

2000! Feedzon!There!is!no!active!subscription!for!the!Feedzon!Calendar!service.!Please!

log!into!your!Feedzon!account!and!purchase!a!subscription.!

2010! Feedzon!

Too!many!calendar!services!are!enabled!for!your!type!of!subscription.!

Please!log!into!your!Feedzon!account!and!check!the!type!of!calendar!

subscription!you!have,!then!check!that!the!number!of!calendar!services!

that!are!enabled!is!not!greater!than!the!maximum!number!of!Google!

accounts!or!Calendar!Services!permitted!for!that!type!of!subscription.!

See!here!for!more!details:!https://www.feedzon.com/prices!

Page!34! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!34!

2020! Feedzon!

Too!many!calendars!are!enabled!for!your!type!of!subscription.!Please!log!

into!your!Feedzon!account!and!check!the!type!of!calendar!subscription!

you!have,!then!check!that!the!total!number!of!enabled!calendars!in!your!

service(s)!page(s).!Check!that!the!number!of!enabled!calendars!does!not!

exceed!the!subscription!maximum.!!See!here!for!more!details:!

https://www.feedzon.com/prices!

2030! Feedzon!The!calendar!is!disabled!in!the!Feedzon!service!page!or!it!doesn’t!exist.!

Please!log!into!your!service!page!and!enable!this!calendar.!

3000! Google!

Google!authorisation!error:!Possible!reasons!are!an!incorrect,!expired,!

corrupt!or!tampered!security!certificate!(.p12),!incorrect!Google!

developers!console!email!address.!!

3010! Google!

Google!permission!error:!Please!check!the!sharing!settings!for!your!

calendar.!The!setting!should!be!either!‘Make!changes!to!events’!or!‘Make!

changes!AND!manage!sharing’.!Some!customers!with!Google!Apps!

accounts!have!reported!that!only!the!latter!setting!works,!whilst!others!

have!had!success!with!the!former.!We!have!also!seen!cases!where!you!

click!‘Save’!in!the!browser!but!the!setting!is!not!saved!and!it!may!take!

multiple!attempts!for!Google!to!accept!the!setting.!

3020! Google!

Google!existence!error:!The!specified!event,!instance!or!attendee!does!

not!exist.!For!example,!if!you!tried!to!update!or!remove!a!specific!event,!

but!the!‘EventId’!doesn’t!exist!in!Google!because!it!was!already!deleted!

from!Google!Calendar.!

3030! Google!UpdateDateTime!value!is!too!far!in!the!past.!Please!see!GetEventList!

function!for!details!of!how!far!back!you!can!specify!this!value.!

4000! Google!Google!returned!a!rare!error!code!that!we!have!not!yet!identified.!Please!

contact!us!if!you!are!unable!to!resolve!the!issue.!

! Google!

An!error!may!also!be!returned!in!the!unlikely!circumstances!that!your!

daily!quota!has!been!reached!or!you!have!made!too!many!requests!in!a!

short!time!period.!

'! '

Page!35! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!35!

Google'Calendar'Service'Limits'The!Google!Calendar!API!has!a!courtesy!limit!of!1,000,000!queries!per!day!per!account.!If!your!

business!is!likely!to!exceed!this!limit!you!will!need!to!contact!Google!to!increase!your!allowance.!

See!this!page!for!more!information:!https://developers.google.com/googleU

apps/calendar/pricing!

'

Note'about'Repeating'Events'in'FileMaker'It’s!probably!worth!noting!that!FileMaker!doesn’t!provide!any!easy!method!to!display!repeating!

events!from!a!rule!defined!in!a!single!record.!We!recommend!that!you!use!the!GetInstanceList!

function!to!download!each!event!from!a!repetition!to!a!related!table.!

!

RepeatByDay'for'Weekly'Repetitions'If!you!create!a!weekly!repetition!and!provide!a!start!date!that!is!prior!to!the!first!instance!of!the!repetition!then!an!additional!instance!will!be!created!on!the!start!date.!For!example:!

!

Start:!! 15!June!2015!

End:! ! 15!June!2015!

Repeat:! Weekly!every!Thursday!

!

The!repeating!instances!will!be!correctly!created!on!Thursday!18!June,!25!June,!2!July!etc.!

However!since!the!event!start!date!was!prior!to!the!first!repeating!instance,!Google!will!also!

create!an!event!on!15!June,!which!is!Monday!(and!therefore!is!incorrect).!

!

If!you!do!this!in!your!browser,!Google!will!actually!change!the!start!date!of!the!event!to!the!first!

repeating!instance!without!providing!any!user!feedback.!Unfortunately!Google’s!API!doesn’t!

support!this!autoUchange!and!there!is!no!way!to!provide!feedback!to!the!user!in!FileMaker!

without!performing!a!subsequent!GetEvent!function!thus!causing!the!date!in!FileMaker!to!be!

different!to!that!in!Google.!Therefore!we!leave!the!extra!instance!as!it!is!since!it!is!not!

appropriate!for!us!to!change!your!data.!

!

Modification'Count'The!ModificationCount!value!returned!by!the!GetEvent!and!GetEventList!functions!is!normally!

incremented!when!an!event!is!updated!by!FileMaker!or!iCal!or!any!other!3rd!party!application.!

Testing!has!shown!that!the!value!is!not!always!incremented!if!the!event!is!updated!in!your!web!

browser!and!so!we!recommend!that!you!not!rely!on!the!absolute!accuracy!of!this!value.!

!

Google'Event'Creator'Name'When!viewed!in!a!browser,!events!created!through!the!

Feedzon!API!service!will!display!with!‘Created!by’!as!your!

unique!Google!Console!developer!account!email!address.!

!

! '

Page!36! Copyright!Feedzon!Limited!2015.!All!rights!reserved.!E&OE!36!

Future'Improvements'We!intend!to!add!the!following!in!future!updates!to!the!Feedzon!Calendar!service:!

!

1. Support!for!notifications!(reminders)!

2. Option!to!have!Google!automatically!send!emails!to!attendees!or!to!download!.ics!file!to!

email!to!people!yourself.!

3. Support!for!custom!colours!(there!is!currently!a!bug!in!Google’s!php!support!libraries!that!

prohibits!this!function!from!working!correctly)!

4. Support!for!custom!fields!

5. A!graphical!calendar!interface!for!use!in!FileMaker!

6. Additional!data!format!option:!JSON!!

7. Additional!data!format!option:!FMPXMLRESULT!(for!easy!bulk!importing!of!calendars!and!

events!into!FileMaker)!!

8. Integration!with!Google!Contacts!

9. Improve!error!codes!to!help!you!identify!the!specific!reason!for!the!error,!e.g.!exactly!which!

parameter!and!value!failed!a!data!validation!check.!

!

We!also!welcome!your!suggestions!for!improvements!and!new!features.!