2012-05-11 34 views
5

Tengo un Calendar Event en Google Apps Script y quiero permitir que el usuario lo abra haciendo clic en un ancla. Creo que la URL tiene que verse así: http://www.google.com/calendar/event?eid=SOMEID&ctz=Etc/GMT. Sin embargo, parece que no puedo obtener la identificación requerida del evento de calendario. La ID que obtengo de Event.getId() no funciona en esas URL y no hay ningún evento.getUrl().Obtener enlace (url) a un evento de calendario en la secuencia de comandos de google apps

¿Alguien sabe si esto es posible con el script de aplicaciones?

Respuesta

12

Por dada event objeto de tipo CalendarEvent y dada calendarId, la forma más sencilla y trabajando para construir una URL para ver/editar evento en Google Calendar aplicación correspondiente es la siguiente:

var splitEventId = event.getId().split('@'); 
var eventURL = "https://www.google.com/calendar/event?eid=" + Utilities.base64Encode(splitEventId[0] + " " + calendarId); 

Lo mejor es que no se necesita invocación, autenticación, ... ¡API de Google!

+2

¡Esto es tan útil! ¡Gracias! La URL probablemente debería ser 'https: //calendar.google.com/calendar/event? Eid =' now though :) – xd1936

+1

Consejo: use [getOriginalCalendarId()] (https://developers.google.com/apps-script/reference/calendar/calendar-event # getOriginalCalendarId()) para obtener el ID del calendario –

0

De hecho, no es posible. Hay una solicitud de mejora en el rastreador de problemas de script de aplicaciones que menciona esta característica incorrecta. Es posible que desee iniciarlo para realizar un seguimiento de las actualizaciones y tipo de voto por ello.

Issue 627: GAS for Appointments

+0

Esta respuesta es obsoleta. Consulte la siguiente [respuesta] (http://stackoverflow.com/a/33302612/1595451) –

1

La nueva versión de Google Calendar ha roto esto. Aquí se explica cómo solucionarlo:

var mycal = '[email protected]' 
var splitEventId = event.getId().split('@'); 
var eventUrl = "https://www.google.com/calendar/event?eid=" + 
Utilities.base64Encode(splitEventId[0] + " " + mycal).toString().replace('=',''); 
Cuestiones relacionadas