【问题标题】:How can I retrieve an extended property for a Google Calendar event?如何检索 Google 日历活动的扩展属性?
【发布时间】:2015-10-03 02:37:05
【问题描述】:

我有几个使用 PHP 添加到各种事件的扩展属性。现在我想使用 Google 表格中的 Google Apps 脚本检索它们。我可以像这样访问日历、所有事件和标准数据元素:

 var mycal = "... my calendar id ....";
 var cal = CalendarApp.getCalendarById(mycal);

 var events = cal.getEvents(new Date("January 12, 2015 00:00:00 CST"), new Date("January 18, 2017 23:59:59 CST"))

 for (var i=0; i < events.length; i++) {

      var myStart = events[i].getStartTime();
      var myTitle = events[i].getTitle();
      var myDesc = events[i].getDescription();
      var myTalkNo = ??

 }

如何在每个事件上查询名为“talk-number”的私有扩展属性?

【问题讨论】:

    标签: javascript google-apps-script google-sheets google-calendar-api extended-properties


    【解决方案1】:

    在 Google Apps 脚本中,您可以通过两种方式与 Google 日历交互; Calendar ServiceAdvanced Calendar Service(又名日历 API)必须通过高级 Google 服务启用。

    ACS 使用来自Google Calendar API 的资源表示,因此extendedProperties 可作为您可以通过API 获取的事件对象的一部分使用。

    这是 ACS 文档中示例的简单修改,它将记录每个事件的“通话号码”。

    function listNext10Events() {
      var calendarId = 'primary';
      var now = new Date();
      var events = Calendar.Events.list(calendarId, {
        timeMin: now.toISOString(),
        singleEvents: true,
        orderBy: 'startTime',
        maxResults: 10
      });
      if (events.items && events.items.length > 0) {
        for (var i = 0; i < events.items.length; i++) {
          var event = events.items[i];
          if (event.start.date) {
            // All-day event.
            var start = parseDate(event.start.date);
            Logger.log('%s (%s)', event.summary, start.toLocaleDateString());
          } else {
            var start = parseDate(event.start.dateTime);
            Logger.log('%s (%s)', event.summary, start.toLocaleString());
          }
          /********************************************************************/
          if (event.hasOwnProperty("talk-number"))
            Logger.log(event.extendedProperties.private["talk-number"]);
          /********************************************************************/
        }
      } else {
        Logger.log('No events found.');
      }
    }
    

    你可以用这个来更新你的函数:

    var eventId = events[i].getId().replace(/@.*/,'');  // Remove @google.com from eventId
    var event = Calendar.Events.get(calendarId, eventId)
    myTalkNo = event.extendedProperties.private["talk-number"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多