Google Calendar API:获取指定日期的免费广告位列表

编程入门 行业动态 更新时间:2024-10-05 13:21:42
本文介绍了Google Calendar API:获取指定日期的免费广告位列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我需要获取谷歌日历中的免费插槽列表。现在我只是获取事件列表。我现在正在使用谷歌日历。

I need to get list of free slots in my google calendar. Now I am just getting list of events. I am using google calendar npm.

google_calendar.events.list(calObj.name,{ timeMin: "2018-03-02T08:00:00.000Z", timeMax: "2018-03-02T16:00:00.000Z", singleEvents: true, orderBy: "startTime" }, function (err, eventList) { // handle to get output like // freeSlots -> [{ // "startDate": "2018-03-02T08:00:00.000Z", // "endDate": "2018-03-02T09:00:00.000Z" // },{ // "startDate": "2018-03-02T07:00:00.000Z", // "endDate": "2018-03-02T08:00:00.000Z" // }] // if at this day are events between 10:00 and 16:00 (so calendar is busy) })

推荐答案

你可以得到谷歌日历的免费插槽分两步。使用 npm google-calendar

You can get free slots from google calendar in two steps. Using npm google-calendar

1,你必须在你的日历中获得所有空闲/忙碌时间

1st you have to get all free/busy times in your calendar

var startDate = new Date(), endDate = new Date(); var rootStart = startDate, rootEnd = endDate; gcal(<accessToken>).freebusy.query({ "items":[{ "id": calObj.name }], "timeMin": startDate.toISOString(), "timeMax": endDate.toISOString(), "timeZone": "GMT+0100" },{ fields: "calendars,groups,kind,timeMax,timeMin", alt:"json" }, function(err, data) { if(err) return console.log(err) // then calculate free slots return slotsFromEvents(startDate, data.calendars[<calName>].busy) }) var interval = 2, // how big single slot should be (in this case 2 hrs) freeSlots = []; function slotsFromEvents(date,events) { events.forEach(function (event, index) { //calculate free from busy times if (index == 0 && startDate < event.start) { freeSlots.push({startDate: startDate, endDate: event.start}); } else if (index == 0) { startDate = event.end; } else if (events[index - 1].end < event.start) { freeSlots.push({startDate: events[index - 1].end, endDate: event.start}); } if (events.length == (index + 1) && event.end < endDate) { freeSlots.push({startDate: event.end, endDate: endDate}); } }); if (events.length == 0) { freeSlots.push({startDate: startDate, endDate: endDate}); } var temp = {}, hourSlots = []; freeSlots.forEach(function(free, index) { var freeHours = new Date(free.endDate).getHours() - new Date(free.startDate).getHours(), freeStart = new Date(free.startDate), freeEnd = new Date(free.endDate); while(freeStart.getHours()+freeHours+interval>=0) { // 11 + 4 + 2 >= 0 if(freeHours>=interval) { temp.e = new Date(free.startDate); temp.e.setHours(temp.e.getHours()+freeHours); temp.s = new Date(free.startDate); temp.s.setHours(temp.s.getHours()+freeHours-interval); if(temp.s.getHours() >= rootStart.getHours() && temp.e.getHours() <= rootEnd.getHours()) { hourSlots.push({calName: calObj.name, startDate:temp.s, endDate:temp.e}); temp = {}; } } freeHours--; } }) // callBack(freeSlots, hourSlots); }

更多推荐

Google Calendar API:获取指定日期的免费广告位列表

本文发布于:2023-11-28 03:28:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1640779.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:广告位   日期   列表   Google   Calendar

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!