api key 생성방법으로 등록 사용 소스
===================================================
<script type="text/javascript" src="http://www.google.com/jsapi?key=YOUR_KEY_HERE"></script><script type="text/javascript"><!--/* Loads the Google data JavaScript client library */
google.load("gdata","2.x");functioninit(){// init the Google data JS client library with an error handler
google.gdata.client.init(handleGDError);// load the code.google.com developer calendarloadDeveloperCalendar();}/**
* Loads the Google Developers Event Calendar
*/functionloadDeveloperCalendar(){}/**
* Adds a leading zero to a single-digit number. Used for displaying dates.
*/functionpadNumber(num){if(num <=9){return"0"+ num;}return num;}/**
* Determines the full calendarUrl based upon the calendarAddress
* argument and calls loadCalendar with the calendarUrl value.
*
* @param {string} calendarAddress is the email-style address for the calendar
*/functionloadCalendarByAddress(calendarAddress){var calendarUrl ='https://www.google.com/calendar/feeds/'+
calendarAddress +'/public/full';loadCalendar(calendarUrl);}/**
* Uses Google data JS client library to retrieve a calendar feed from the specified
* URL. The feed is controlled by several query parameters and a callback
* function is called to process the feed results.
*
* @param {string} calendarUrl is the URL for a public calendar feed
*/functionloadCalendar(calendarUrl){var service =newgoogle.gdata.calendar.CalendarService('gdata-js-client-samples-simple');var query =newgoogle.gdata.calendar.CalendarEventQuery('https://www.google.com/calendar/feeds/n5r6def5n1l3omunjsap8bvj9c%40group.calendar.google.com/public/full');
query.setOrderBy('starttime');
query.setSortOrder('ascending');
query.setFutureEvents(true);
query.setSingleEvents(true);
query.setMaxResults(10);
service.getEventsFeed(query, listEvents, handleGDError);}/**
* Callback function for the Google data JS client library to call when an error
* occurs during the retrieval of the feed. Details available depend partly
* on the web browser, but this shows a few basic examples. In the case of
* a privileged environment using ClientLogin authentication, there may also
* be an e.type attribute in some cases.
*
* @param {Error} e is an instance of an Error
*/functionhandleGDError(e){
document.getElementById('jsSourceFinal').setAttribute('style','display:none');if(e instanceofError){/* alert with the error line number, file and message */alert('Error at line '+ e.lineNumber +' in '+ e.fileName +'n'+'Message: '+ e.message);/* if available, output HTTP error code and status text */if(e.cause){var status = e.cause.status;var statusText = e.cause.statusText;alert('Root cause: HTTP error '+ status +' with status text of: '+
statusText);}}else{alert(e.toString());}}/**
* Callback function for the Google data JS client library to call with a feed
* of events retrieved.
*
* Creates an unordered list of events in a human-readable form. This list of
* events is added into a div called 'events'. The title for the calendar is
* placed in a div called 'calendarTitle'
*
* @param {json} feedRoot is the root of the feed, containing all entries
*/functionlistEvents(feedRoot){var entries = feedRoot.feed.getEntries();var eventDiv = document.getElementById('events');if(eventDiv.childNodes.length >0){
eventDiv.removeChild(eventDiv.childNodes[0]);}/* create a new unordered list */var ul = document.createElement('ul');/* set the calendarTitle div with the name of the calendar */
document.getElementById('calendarTitle').innerHTML ="Calendar: "+ feedRoot.feed.title.$t;/* loop through each event in the feed */var len = entries.length;for(var i =0; i < len; i++){var entry = entries[i];var title = entry.getTitle().getText();var startDateTime =null;var startJSDate =null;var times = entry.getTimes();if(times.length >0){
startDateTime = times[0].getStartTime();
startJSDate = startDateTime.getDate();}var entryLinkHref =null;if(entry.getHtmlLink()!=null){
entryLinkHref = entry.getHtmlLink().getHref();}var dateString =(startJSDate.getMonth()+1)+"/"+ startJSDate.getDate();if(!startDateTime.isDateOnly()){
dateString +=" "+ startJSDate.getHours()+":"+padNumber(startJSDate.getMinutes());}var li = document.createElement('li');/* if we have a link to the event, create an 'a' element */if(entryLinkHref !=null){
entryLink = document.createElement('a');
entryLink.setAttribute('href', entryLinkHref);
entryLink.appendChild(document.createTextNode(title));
li.appendChild(entryLink);
li.appendChild(document.createTextNode(' - '+ dateString));}else{
li.appendChild(document.createTextNode(title +' - '+ dateString));}/* append the list item onto the unordered list */
ul.appendChild(li);}
eventDiv.appendChild(ul);}
google.setOnLoadCallback(init);//--></script><div id="calendarTitle"></div><div id="events"></div><script type="text/javascript">loadCalendar('');</script>