获取Google日历事件的eventID [英] Get eventID for Google Calendar Event

查看:274
本文介绍了获取Google日历事件的eventID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想借助google脚本从特定事件中获取eventID。我现在使用这个变量:
$ b $ pre $ function export_gcal_to_gsheet(){

//参考网站:
// 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>

但是好像getId是一个不同于事件ID,因为当我将ID插入此链接时: https:// www .google.com / calendar / event?eid = {event-id}& ctz = {timezone}



我收到错误。另外,当我手动分享我的活动时,我看到的ID不同于我从脚本中获得的ID。



希望有人能帮我解决问题。

您需要 event-id 来使用 https://www.google.com/calendar/event?eid= {event-id}& CTZ = {时区} 。我的理解是否正确?如果我的理解是正确的,那么这种修改如何?

修改点:




  • 为了检索 https://www.google.com/calendar/event?eid= {event-id}&的 event-id ; ctz = {timezone} ,您可以使用Calendar API的 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() 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆