Where you define EVENT_FEED_URL, change "public" to "private".
The public feed does does not contain the edit links. Private feeds do. Otherwise the two feed types contain similar data. See http://code.google.com/apis/calendar/reference.html#Visibility Ray On Aug 25, 2008, at 6:25 AM, Bharathi wrote: > > Thank you for your reply. > > But if I don't use public calendar feed, I could not get the list of > all calendar feeds displayed in the page. > I want to update/insert events on my own calendars. For that reason I > should get the events of all calendars displayed in my page. > > Best regards, > Bharathi > > > > On Aug 23, 12:10 am, Ray Baxter <[EMAIL PROTECTED]> wrote: >> You are retrieving events from a public feed (see your >> EVENT_FEED_URL). Public feeds don't have edit links for the events >> that they contain. That's why you are receiving the "entry has no >> edit >> link" error. >> >> Ray >> -- >> Ray Baxter >> [EMAIL PROTECTED] >> >> On Aug 22, 2008, at 5:24 AM, Bharathi wrote: >> >> >> >> >> >>> What steps will reproduce the problem? >>> 1. please access the web page "http://www.sahrudaya.com/DC.html" >> >>> 2. I used javascript to communicate with my calendarservices. >>> In my page I tried to list all my calendars and the respective >>> events. >>> Till that point it is working fine. >>> I tried to do some changes to the existing event and save it to the >>> calendar. But it is giving error as "entry has no edit link". >> >>> Then I added an update event code in my program and I was able to >>> update >>> only my private events. >>> // Create a CalendarEventQuery, and specify that this query is >>> // applied toward the "private/full" feed >>> Here the CalendarEventQuery is not allowing me to give >>> "allcalendars/ >>> full" >>> feed. >> >>> What is the expected output? What do you see instead? >> >>> Can any one help me to resolve this. I would like to save/modify >>> events to >>> my private as well as public and other calendars(who has given me >>> permissions to update their events) programatically. >> >>> Thank you, >> >>> Bharathi >> >>> My program goes like this: >> >>> <html> >>> <head> >>> <script type="text/javascript" >>> src="http://www.google.com/jsapi?key=mykey"> >>> </script> >>> <script type="text/javascript"> >> >>> var DEFAULT_PANE = "default-pane"; >>> var AUTHENTICATED_PANE = "authenticated-pane"; >>> var AUTH_BUTTON = "auth-button"; >>> var LOGOUT_BUTTON = "logout-button"; >>> var SAVE_BUTTON = "save-button"; >>> var CAL_SELECT = "cal-select"; >>> var EVENT_SELECT = "event-select"; >>> var TITLE_FIELD = "title-field"; >>> var TITLE_CHANGE="title-change"; >>> var DATE_FIELD = "date-field"; >>> var LOCATION_FIELD = "location-field"; >>> var ATTENDEES_FIELD = "attendees-field"; >>> var NOTES_FIELD = "notes-field"; >>> var STATUS_AREA = "status-area"; >> >>> var CAL_FEED_URL = "http://www.google.com/calendar/feeds/default/ >>> allcalendars/full"; >>> var myService; >>> var EVENT_FEED_URL; >>> var myEventsFeed; >>> var myCalFeed; >> >>> google.load("gdata", "1"); >> >>> function init() >>> { >>> google.gdata.client.init(handleError); >> >>> var token = google.accounts.user.checkLogin(CAL_FEED_URL); >> >>> myService = >>> new google.gdata.calendar.CalendarService("GoogleInc- >>> jsguide-1.0"); >> >>> var authButton = document.getElementById(AUTH_BUTTON); >> >>> if (google.accounts.user.checkLogin(CAL_FEED_URL)) >>> { >>> document.getElementById(DEFAULT_PANE).style.display = >>> "none"; >>> >>> document.getElementById(AUTHENTICATED_PANE).style.display = >>> "inline"; >>> getCalendars(); >>> } >>> else >>> { >>> document.getElementById(DEFAULT_PANE).style.display = >>> "inline"; >>> >>> document.getElementById(AUTHENTICATED_PANE).style.display = "none"; >>> } >> >>> reset(); >>> }; >> >>> google.setOnLoadCallback(init); >> >>> function login() >>> { >>> var token = google.accounts.user.login(CAL_FEED_URL); >>> }; >> >>> function logout() >>> { >>> google.accounts.user.logout(); >>> init(); >>> }; >> >>> function getCalendars() >>> { >>> myService.getAllCalendarsFeed(CAL_FEED_URL, >>> handleCalendarFeeds, >>> handleError); >>> }; >> >>> function handleCalendarFeeds(myCalFeedResults) >>> { >>> var calList = document.getElementById(CAL_SELECT); >>> calList.onchange = loadCalEvent; >>> calList.disabled = false; >>> calList.options[calList.selectedIndex].disabled = true; >>> calList.options[calList.selectedIndex].text = "Select..."; >> >>> myCalFeed = myCalFeedResults.feed; >>> events = myCalFeed.getEntries(); >> >>> for (var i = 0; i < events.length; i++) >>> { >>> var option = document.createElement("option"); >>> eventTitle = events[i].getTitle().getText(); >>> option.value = i; >>> option.appendChild(document.createTextNode(eventTitle)); >>> calList.appendChild(option); >>> } >>> }; >> >>> function loadCalEvent() >>> { >>> var calList = document.getElementById(CAL_SELECT); >>> var eventList = document.getElementById(EVENT_SELECT); >>> var calIndex = calList.options[calList.selectedIndex].value; >>> var entries = myCalFeed.getEntries(); >>> var calendarEntry = myCalFeed.getEntries()[calIndex]; >>> var calendarTitle = calendarEntry.getTitle().getText(); >>> if (calendarEntry.getAuthors()[0].getEmail() !=null) >>> { >>> var calendarTitle1 = (calendarEntry.getAuthors().length >>> > 0) ? >>> calendarEntry.getAuthors()[0].getEmail().getValue(): undefined; >>> EVENT_FEED_URL = "http://www.google.com/calendar/ >>> feeds/" + >>> calendarTitle1 + "/public/full"; >>> } >>> getEvents(); >>> }; >> >>> function getEvents() >>> { >>> var query = new >>> google.gdata.calendar.CalendarEventQuery(EVENT_FEED_URL); >>> alert(EVENT_FEED_URL); >> >>> // Set the start-min parameter to the beginning of today. >>> var todayDate = new Date(); >>> todayDate.setHours(0); >>> todayDate.setMinutes(0); >>> todayDate.setSeconds(0); >>> todayDate.setMilliseconds(0); >>> var today = new google.gdata.DateTime(todayDate, false); >>> query.setMinimumStartTime(google.gdata.DateTime.toIso8601(today)); >> >>> // Set the start-max parameter to the beginning of tomorrow. >>> var tomorrowDate = new Date(); >>> tomorrowDate.setDate(todayDate.getDate() + 1); >>> tomorrowDate.setHours(0); >>> tomorrowDate.setMinutes(0); >>> tomorrowDate.setSeconds(0); >>> tomorrowDate.setMilliseconds(0); >>> var tomorrow = new google.gdata.DateTime(tomorrowDate, false); >> >>> query >>> .setMaximumStartTime(google.gdata.DateTime.toIso8601(tomorrow)); >> >>> myService.getEventsFeed(query, handleEventsFeed, handleError); >>> } >> >>> function handleEventsFeed(myResultsFeedRoot1) >>> { >>> var eventList = document.getElementById(EVENT_SELECT); >>> eventList.onchange = loadEvent; >>> eventList.disabled = false; >>> eventList.options[eventList.selectedIndex].disabled = true; >>> eventList.options[eventList.selectedIndex].text = "Select..."; >>> eventList.options.length = 1; >> >>> myEventsFeed = myResultsFeedRoot1.feed; >>> events = myEventsFeed.getEntries(); >> >>> for (var i = 0; i < events.length; i++) >>> { >>> var option = document.createElement("option"); >>> eventTitle = events[i].getTitle().getText(); >>> option.value = i; >>> option.appendChild(document.createTextNode(eventTitle)); >>> eventList.appendChild(option); >>> } >>> }; >> >>> function loadEvent() >>> { >>> setStatus(); >>> var saveButton = document.getElementById(SAVE_BUTTON); >>> saveButton.disabled = false; >>> var eventList = document.getElementById(EVENT_SELECT); >> >>> // If the first option (Select...) is selected, dont do anything >>> if (eventList.selectedIndex == 0) { return; } >> >>> var eventIndex = eventList.options[eventList.selectedIndex].value; >>> var event = myEventsFeed.getEntries()[eventIndex]; >> >>> var title = document.getElementById(TITLE_FIELD); >>> title.value = event.getTitle().getText(); >> >>> var date = document.getElementById(DATE_FIELD); >>> date.value = event.getTimes()[0].getStartTime().getDate(); >> >>> var theLocation = document.getElementById(LOCATION_FIELD); >>> theLocation.value = event.getLocations()[0].getValueString(); >> >>> if (theLocation.value == "undefined") { theLocation.value = ""; } >> >>> var attendeesDiv = document.getElementById(ATTENDEES_FIELD); >>> attendeesDiv.innerHTML = ""; >> >>> var participants = event.getParticipants(); >>> for (var i = 0; i < participants.length; i++) >>> { >>> var element = document.createElement("div"); >>> element.innerHTML = participants[i].getEmail(); >>> attendeesDiv.appendChild(element); >>> } >> >>> var notes = document.getElementById(NOTES_FIELD); >>> notes.value = event.getContent().getText(); >>> if (notes.value == "undefined") { notes.value = ""; } >>> }; >> >>> /* >>> * Update an event >>> */ >> >>> function update_Event() >>> { >> >>> var searchText= document.getElementById(TITLE_FIELD).value; >> >>> // Create a CalendarEventQuery, and specify that this query is >>> // applied toward the "private/full" feed >> >>> var Cal="http://www.google.com/calendar/feeds/default/private/full"; >>> var token = google.accounts.user.login(Cal); >>> var query = new google.gdata.calendar.CalendarEventQuery(Cal); >> >>> alert('Calendar URL is:'+Cal); >> >>> // Set the query with the query text >>> query.setFullTextQuery(searchText); >> >>> // Flag to indicate whether a match is found >>> var eventFound = false; >> >>> // The first matched event entry will have its title updated to this >>> string >> >>> var newTitle= document.getElementById(TITLE_CHANGE).value; >> >>> // This callback method that will be called when getEventsFeed() >>> returns feed data >>> var callback = function(result) { >> >>> // Obtain the array of matched CalendarEventEntry >> >>> var entries = result.feed.entry; >> >>> // If there is matches for the full text query >>> alert('The length'+ entries.length); >> >>> if (entries.length > 0) >>> { >>> // update the first matched event title >> >>> var event = entries[0]; >> >>> alert(event.getHtmlLink().getHref()); >>> alert('Edit Link is:'+ >>> event.getEditLink().getHref()); >> >>> >>> event.setTitle(google.gdata.Text.create(newTitle)); >> >>> event.updateEntry( >>> function(result) { >>> alert('event updated'); >>> },handleError >>> ); >> >>> } >>> else >>> { >>> // No match is found for the full text query >>> alert('Cannot find event(s) with text: ' + >>> searchText); >>> } >>> } >> >>> // Error handler to be invoked when getEventsFeed() or updateEntry() >>> // produces an error >> >>> var handleError = function(error) { >>> alert('handleerror'+error); >>> } >> >>> // Submit the request using the calendar service object >>> myService.getEventsFeed(query, callback, handleError); >> >>> }; >> >>> function saveEvent() { >> >>> var eventList = document.getElementById(EVENT_SELECT); >>> var eventIndex = eventList.options[eventList.selectedIndex].value; >>> var event = myEventsFeed.getEntries()[eventIndex]; >>> var title = document.getElementById(TITLE_FIELD).value; >> >>> var date = new Date(document.getElementById(DATE_FIELD).value); >>> event.setTimes(null); >>> var when = new google.gdata.When(); >> >> ... >> >> read more ยป- Hide quoted text - >> >> - Show quoted text - > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Calendar Data API" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-calendar-help-dataapi?hl=en -~----------~----~----~----~------~----~------~--~---
