获取Google日历事件的eventID [英] Get eventID for Google Calendar Event
问题描述
我想借助google脚本从特定事件中获取eventID。我现在使用这个变量: 但是好像getId是一个不同于事件ID,因为当我将ID插入此链接时: https:// www .google.com / calendar / event?eid = {event-id}& ctz = {timezone} 我收到错误。另外,当我手动分享我的活动时,我看到的ID不同于我从脚本中获得的ID。 希望有人能帮我解决问题。
$ b $ pre $ function export_gcal_to_gsheet(){
,您可以使用Calendar API的
//参考网站:
// https://developers.google.com/apps-script/reference/calendar/calendar
// https://developers.google.com/apps-script/reference/calendar/calendar -event
//
var mycal =info@neugier.schule;
var cal = CalendarApp.getCalendarById(mycal);
var today = new Date()
var thisweek = new Date(today.getTime())
var oneWeekfromNow = new Date(today.getTime()+(7 * 3600000 * 24) );
//
var events = cal.getEvents(thisweek,oneWeekfromNow,{search:'stammtisch'});
var sheet = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName(Termine);
//如果您想要在运行之前始终清除电子表格内容,请取消注释此下一行 - 请注意,人们可能会在数据上添加额外的列,但会丢失数据
//sheet.clearContents();
//在单元格A1:N1中的当前电子表格中创建一个标题记录A1 - 将header =中的条目数量与下面getRange条目的最后一个参数
//匹配
var header = [[Event Title,Event Start,Thema,LinkZoom,EventID]]
var range = sheet.getRange(1,1,1,5 );
range.setValues(header);
//循环查找所有日历事件并将它们写出,从开始于被调用的ROW 2(i + 2)
(var i = 0; i< events.length ; i ++){
var row = i + 2;
var myformula_placeholder ='';
//匹配上面的header =条目,这是详细的行条目details =,并且必须与
下面的GetRange条目的条目匹配//注意:我已经一些较旧的事件的getVisibility问题没有值,所以我已经添加了一些NULL文本以确保它没有错误
var details = [[events [i] .getTitle(),Utilities .formatDate(events [i] .getStartTime(),'Europe / Berlin','dd.MM.yyyy,\\''''HH:mm'''Uhr''),events [i]。 getDescription(),events [i] .getLocation(),events [i] .getId()]];
var range = sheet.getRange(row,1,1,5);
range.setValues(details);
$ b $ / code>
event-id
来使用 https://www.google.com/calendar/event?eid= {event-id}& CTZ = {时区}
。我的理解是否正确?如果我的理解是正确的,那么这种修改如何?
修改点:
https://www.google.com/calendar/event?eid= {event-id}&的
; ctz = {timezone} Calendar.Events.list()
来检索它。
$ h $准备使用这个修改过的示例脚本:
当你使用这个修改后的脚本时,请启用日历在高级Google服务和API控制台上的API。
在高级Google服务中启用日历API v3
- 开启脚本编辑器
- 资源 - >高级Google服务
- 开启Calendar API v3
在API控制台中启用日历API
- 在脚本编辑器中
- 资源 - > Cloud Platform项目
- 查看API控制台 >
- 在入门指南中,单击启用API并获取密钥等凭据。
- 在左侧,单击库。在搜索APIs&服务,输入日历。然后点击日历API。
- 点击启用按钮。
- 如果API已经启用,请不要关闭。 b $ b
- 当您运行此脚本时,如果发生错误,您可能需要等待几分钟直到启用API。
修改后的脚本:
函数export_gcal_to_gsheet(){
var mycal =info@neugier.schule;
var cal = CalendarApp.getCalendarById(mycal);
var today = new Date()
var thisweek = new Date(today.getTime())
var oneWeekfromNow = new Date(today.getTime()+(7 * 3600000 * 24) );
var events = cal.getEvents(thisweek,oneWeekfromNow,{search:'stammtisch'});
var sheet = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName(Termine);
var header = [[Event Title,Event Start,Thema,LinkZoom,EventID]]
var range = sheet.getRange(1,1,1,5 );
range.setValues(header);
//增加
var items = Calendar.Events.list(mycal,{
timeMin:thisweek.toISOString(),
timeMax:oneWeekfromNow.toISOString() ,
q:'stammtisch'
})。items;
for(var i = 0; i< events.length; i ++){
var row = i + 2;
var myformula_placeholder ='';
var details = [[events [i] .getTitle(),Utilities.formatDate(events [i] .getStartTime(),'Europe / Berlin','dd.MM.yyyy,\\''''' 'HH:mm'''Uhr''),events [i] .getDescription(),events [i] .getLocation(),items [i] .htmlLink.split(=)[1]]] ; //修改
var range = sheet.getRange(row,1,1,5);
range.setValues(details);
$ / code $ / pre>
注意:
- 这个修改后的脚本从
Calendar.Events.list()$ c $中检索 htmlLink
C>。该链接是 https://www.google.com/calendar/event?eid= {event-id}
。现在我从链接中检索 event-id
,以便使用项目[i] .htmlLink.split(=)[1]
。如果您想要链接,请将其修改为项目[i] .htmlLink
。
参考文献:
如果我误解了您的问题,我很抱歉。
I would like to get the eventID from a specific event with the help of google script. I'm using currently this variable:
function export_gcal_to_gsheet(){
// Reference Websites:
// https://developers.google.com/apps-script/reference/calendar/calendar
// https://developers.google.com/apps-script/reference/calendar/calendar-event
//
var mycal = "info@neugier.schule";
var cal = CalendarApp.getCalendarById(mycal);
var today = new Date()
var thisweek = new Date (today.getTime())
var oneWeekfromNow = new Date(today.getTime() + (7*3600000*24));
//
var events = cal.getEvents(thisweek, oneWeekfromNow, {search: 'stammtisch'});
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Termine");
// Uncomment this next line if you want to always clear the spreadsheet content before running - Note people could have added extra columns on the data though that would be lost
//sheet.clearContents();
// Create a header record on the current spreadsheet in cells A1:N1 - Match the number of entries in the "header=" to the last parameter
// of the getRange entry below
var header = [["Event Title", "Event Start", "Thema", "LinkZoom", "EventID"]]
var range = sheet.getRange(1,1,1,5);
range.setValues(header);
// Loop through all calendar events found and write them out starting on calulated ROW 2 (i+2)
for (var i=0;i<events.length;i++) {
var row=i+2;
var myformula_placeholder = '';
// Matching the "header=" entry above, this is the detailed row entry "details=", and must match the number of entries of the GetRange entry below
// NOTE: I've had problems with the getVisibility for some older events not having a value, so I've had do add in some NULL text to make sure it does not error
var details=[[events[i].getTitle(), Utilities.formatDate(events[i].getStartTime(),'Europe/Berlin', 'dd.MM.yyyy,\' um\' HH:mm\'Uhr\''), events[i].getDescription(), events[i].getLocation(), events[i].getId()]];
var range=sheet.getRange(row,1,1,5);
range.setValues(details);
}
}
But it seems that getId is a different than the event ID, because when I insert the ID into this link: https://www.google.com/calendar/event?eid={event-id}&ctz={timezone}
I get an error. Also when I share my event manually I see a different ID, than the ID I get from my script.
Hope that someone can help me out.
解决方案 I understand that you want event-id
for using https://www.google.com/calendar/event?eid={event-id}&ctz={timezone}
. Is my understanding correct? If my understanding is correct, how about this modification?
Modification point :
- In order to retrieve
event-id
of https://www.google.com/calendar/event?eid={event-id}&ctz={timezone}
, you can retrieve it by using Calendar.Events.list()
of Calendar API.
Preparation to use this modified sample script :
When you use this modified script, please enable Calendar API at Advanced Google Services and API console.
Enable Calendar API v3 at Advanced Google Services
- On script editor
- Resources -> Advanced Google Services
- Turn on Calendar API v3
Enable Calendar API at API console
- On script editor
- Resources -> Cloud Platform project
- View API console
- At Getting started, click Enable APIs and get credentials like keys.
- At left side, click Library.
- At Search for APIs & services, input "Calendar". And click Calendar API.
- Click Enable button.
- If API has already been enabled, please don't turn off.
- When you run this script, if an error occurs, you might be required to wait few minutes until the API is enabled.
Modified script :
function export_gcal_to_gsheet(){
var mycal = "info@neugier.schule";
var cal = CalendarApp.getCalendarById(mycal);
var today = new Date()
var thisweek = new Date (today.getTime())
var oneWeekfromNow = new Date(today.getTime() + (7*3600000*24));
var events = cal.getEvents(thisweek, oneWeekfromNow, {search: 'stammtisch'});
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Termine");
var header = [["Event Title", "Event Start", "Thema", "LinkZoom", "EventID"]]
var range = sheet.getRange(1,1,1,5);
range.setValues(header);
// Added
var items = Calendar.Events.list(mycal, {
timeMin: thisweek.toISOString(),
timeMax: oneWeekfromNow.toISOString(),
q: 'stammtisch'
}).items;
for (var i=0;i<events.length;i++) {
var row=i+2;
var myformula_placeholder = '';
var details=[[events[i].getTitle(), Utilities.formatDate(events[i].getStartTime(),'Europe/Berlin', 'dd.MM.yyyy,\' um\' HH:mm\'Uhr\''), events[i].getDescription(), events[i].getLocation(), items[i].htmlLink.split("=")[1]]]; // Modified
var range=sheet.getRange(row,1,1,5);
range.setValues(details);
}
}
Note :
- This modified script retrieves
htmlLink
from Calendar.Events.list()
. The link is https://www.google.com/calendar/event?eid={event-id}
. Now I retrieved event-id
from the link for matching your script using items[i].htmlLink.split("=")[1]
. If you want the link, please modify it to items[i].htmlLink
.
References :
If I misunderstand your question, I'm sorry.
这篇关于获取Google日历事件的eventID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!