Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function myFunction() {
- /**
- *
- * Test function for free times on a room.
- *
- */
- function testGetRoomFreeTimes() {
- var roomId = "riotgames.com_53544c2d4e617574696c7573@resource.calendar.google.com";
- // Set the date to check for room free time slots
- var year = 2014;
- var month = 10; // October
- var day = 25;
- freeSlots = getFreeTime(roomId, year, month, day);
- Logger.log(freeSlots); // Returns [08:30-10:00, 11:00-14:00, 15:00-16:30]
- Logger.log('Number of free slots: ' + freeSlots.length); // Number of free slots: 3
- var totalSeconds = getTotalTimeRangeInSeconds(freeSlots);
- Logger.log('Number of free hours: ' + totalSeconds/3600); // Number of free hours: 6
- };
- /**
- * Returns Array of strings of Free time ranges for a given room on a given date.
- *@param{String} ex: roomId = "username@group.calendar.google.com".
- *@param{Nunber} Year of date to look up, ex. 2014.
- *@param{Nunber} Month of date to look up, ex. 10 for October.
- *@param{Nunber} Day of date to look up, ex. 12.
- *@return{Array} Array of free time strings. ex. ["08:30-10:00", "11:00-14:00", "15:00-16:30"].
- */
- function getFreeTime(roomId, year, month, day) {
- var freeSlots = [];
- var calendar = CalendarApp.getCalendarById(roomId);
- // Set the standard start and end times for a room's day
- // example start 8:30, end 5:30.
- var roomStartHour = 8; // 24 hr time
- var roomStartMinute = 30; // 24 hr time
- var roomEndHour = 12+5; // 24 hr time
- var roomEndMinute = 30; // 24 hr time
- var theDate = new Date(year,month-1,day); // month is zero based
- var roomStartTime = new Date(year,month-1,day, roomStartHour, roomStartMinute, 0).getTime()/1000;
- var roomEndTime = new Date(year,month-1,day, roomEndHour, roomEndMinute, 0).getTime()/1000;;
- var lastTime = roomStartTime;
- var freeStr;
- var events = CalendarApp.getDefaultCalendar().getEventsForDay(theDate);
- Logger.log('Number of events: ' + events.length);
- for (var i = 0; i < events.length; i++) {
- var startTime = events[i].getStartTime().getTime()/1000
- //Logger.log(getFreeTimeStr(lastTime, startTime));
- freeStr = getFreeTimeStr(lastTime, startTime);
- if (freeStr) freeSlots.push(freeStr);
- lastTime = events[i].getEndTime().getTime()/1000
- }
- //Logger.log(getFreeTimeStr(lastTime, roomEndTime));
- freeStr = getFreeTimeStr(lastTime, roomEndTime);
- if (freeStr) freeSlots.push(freeStr);
- return freeSlots;
- }
- /**
- * Gets Free time string, or empty string.
- *@param{Nunber} Time elements to compare in unix time format.
- *@param{Nunber} Time elements to compare in unix time format.
- *@return{String} The free time string. ex. 08:00-13:00.
- */
- function getFreeTimeStr(lastTime, thisTime) {
- var date, hours, minutes;
- var str = "";
- if (lastTime < thisTime) {
- date = new Date(lastTime*1000);
- hours = "0" + date.getHours();
- var minutes = "0" + date.getMinutes();
- str = hours.substr(hours.length-2)+":"+minutes.substr(minutes.length-2);
- str += "-";
- date = new Date(thisTime*1000);
- hours = "0" + date.getHours();
- var minutes = "0" + date.getMinutes();
- str += hours.substr(hours.length-2)+":"+minutes.substr(minutes.length-2);
- }
- return str;
- };
- /**
- * Goes through the array of time ranges and calculates total time in seconds.
- *@param{Array} Array of time ranges as strings. ex. ["08:30-10:00", "11:00-14:00", "15:00-16:30"]
- *@return{Number} Total seconds of all ranges.
- */
- function getTotalTimeRangeInSeconds(freeSlotsArray) {
- var seconds = 0;
- for (var i=0; i < freeSlotsArray.length; i++) {
- seconds += getTimeRangeInSeconds(freeSlotsArray[i]);
- }
- return seconds;
- };
- /**
- * Calculates number of seconds in a time range string.
- *@param{String} Expects time range as string of given format. ex. "08:30-10:00".
- *@return{Number} Total seconds of this range.
- */
- function getTimeRangeInSeconds(timeRangeStr) {
- var elems, subElems;
- var startTime, endTime;
- var hours, minutes;
- elems = timeRangeStr.split("-");
- subElems = elems[0].split(":");
- hours = subElems[0];
- minutes = subElems[1];
- startTime = ((hours * 60 * 60) + (minutes * 60));
- subElems = elems[1].split(":");
- hours = subElems[0];
- minutes = subElems[1];
- endTime = ((hours * 60 * 60) + (minutes * 60));
- return(endTime - startTime);
- };}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement