8

Google Apps Scriptにカレンダーイベントがあり、ユーザーがアンカーをクリックしてカレンダーイベントを開くことができるようにしたい。URLは次のようにする必要があると思います:http ://www.google.com/calendar/event?eid = SOMEID&ctz = Etc/GMT 。ただし、カレンダーイベントから必要なIDを取得できないようです。Event.getId()から取得したIDは、これらのURLでは機能せず、event.getUrl()もありません。

これがappsscriptで可能かどうか誰かが知っていますか?

4

6 に答える 6

17

タイプCalendarEventの特定eventのオブジェクトと特定の場合、Googleカレンダーアプリで対応するイベントを表示/編集するためのURLを作成する最も簡単で実用的な方法は次のとおりです。calendarId

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

最良のことは、Google APIの呼び出し、認証、...が必要ないことです。

于 2015-10-23T12:42:34.610 に答える
3

Googleカレンダーの新しいバージョンはこれを壊しました。修正方法は次のとおりです。

var mycal = 'username@m'
var splitEventId = event.getId().split('@');
var eventUrl = "https://www.google.com/calendar/event?eid=" + 
Utilities.base64Encode(splitEventId[0] + " " + mycal).toString().replace('=','');
于 2017-11-24T23:25:11.713 に答える
3

わかりました...2020年に、誰かがまだこれに苦労している場合に備えて、これはこれの動作バージョンです...

var calendarID = "somec@lend.ar";
var event = CalendarApp.getCalendarById(calendarID).createEvent(/*SOME OPTIONS HERE*/);

var splitEventId = event.getId().split('@');

// Open the "edit event" dialog in Calendar using this URL:
var event_EDIT_URL = "https://calendar.google.com/calendar/r/eventedit/" + Utilities.base64Encode(splitEventId[0] + " " + calendarID).replace("==",'');

// Open the "view this event in a Calendar" using this URL:
var event_VIEW_IN_CAL_URL = "https://www.google.com/calendar/event?eid=" + Utilities.base64Encode(splitEventId[0] + " " + calendarID).replace("==",'');


return event_EDIT_URL; // OR return event_VIEW_IN_CAL_URL;   
于 2020-05-07T09:47:10.457 に答える
0

それは確かに不可能です。この誤動作について言及しているAppsScriptIssueTrackerの拡張リクエストがあります。更新と投票の種類を追跡するために開始することをお勧めします。

問題627:予定のガス

于 2012-05-11T15:23:58.657 に答える
0

Googleカレンダーのウェブインターフェースを使用してGoogleカレンダーのイベントを作成すると、eventIdは次のようになります。

7ik7jal8upcnqu30koq3ctj4tn@google.com

そして、次のようにイベントのURLを取得することができます。

var calendarId = 'domain.ac.uk_6l495bdvjmo1felggasrvclkc4@group.calendar.google.com';
var eventId = '7ik7jal8upcnqu30koq3ctj4tn@google.com';
var splitEventId = eventId.split('@');
var eventURL = 'https://calendar.google.com/calendar/r/eventedit/' + Utilities.base64Encode(splitEventId[0] + ' ' + calendarId);

//Or for a recurring event
var event = CalendarApp.getCalendarById(calendarId).getEventById(eventId);
var moment = Moment.moment;
var startTime = moment(event.getStartTime()).utc().format('YMMDDTHHmmss')+'Z';
var eventURL = 'https://calendar.google.com/calendar/r/eventedit/' + Utilities.base64Encode(splitEventId[0] + '_' +startTime+ ' ' + calendarId);

残念ながら、同じメソッドはOutlookデスクトップ内で作成された同じカレンダーのイベントでは機能せず、代わりに次のようなeventIdが生成されます。

040000008200E00074C5B7101A82E00800000000D0E138AFF4C6D501000000000000000010000000C70DD9E87FE9EB46BCE437A98E9CC5BF

そのため、ソリューションは不完全ですが、最近はOutlookデスクトップを使用する人が少なくなっています。

于 2020-06-12T22:21:28.293 に答える
0

このコードを使用してIDを取得します

var ati = cal.getId().indexOf("@");
var splitEventId = event.getId().split('@');
var eventUrl = "https://www.google.com/calendar/event?eid=" + Utilities.base64Encode(splitEventId[0] + " " + cal.getId().substring(0,ati+2)).replace(/=/gi,'');
于 2021-10-05T10:33:39.863 に答える