-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpull_calendar_to_spreadsheet.gs
102 lines (85 loc) · 3.77 KB
/
pull_calendar_to_spreadsheet.gs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Partner Meetings')
.addItem('Sync with Calendar', 'getEvents')
.addToUi();
}
function getEvents() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
let calendar;
const calendarId = '[email protected]';
const now = new Date();
now.setHours(08);
var startDate = SpreadsheetApp.getActiveSheet().getActiveCell().getValue();
if (startDate == null && startDate == '') {
//SpreadsheetApp.getUi().alert("Default start date to pull partner meetings is " + now);
startDate = now;
}
var cal = CalendarApp.getCalendarById(calendarId);
console.log("Obtained Calendar=" + cal.getDescription());
var today = new Date();
console.log('today=' + today.toDateString());
var events = cal.getEvents(new Date(startDate), new Date());
var eventsCount = events.length;
var nextRow = getFirstEmptyRowByColumnArray();
var n = 0;
for (var i = 0; i <= eventsCount - 1; i++) {
var myEvent = events[i];
var myDescription = myEvent.getDescription();
var myStartTime = myEvent.getStartTime();
var myEndTime = myEvent.getEndTime();
var title = myEvent.getTitle();
var sheetMeetings = ss.getSheetByName("Meetings");
var guests = myEvent.getGuestList();
var guestCount = guests.length;
if (guestCount > 0) {
console.log("Guest:" + guests[0].getEmail() + "Guest Name: " + guests[0].getName());
if (guests[0].getEmail().indexOf("google.com") > -1) {
sheetMeetings.getRange(nextRow + n, 1).setValue(myStartTime);
sheetMeetings.getRange(nextRow + n, 2).setValue("GCP");
sheetMeetings.getRange(nextRow + n, 3).setValue(title);
sheetMeetings.getRange(nextRow + n, 4).setValue(guests[0].getName());
sheetMeetings.getRange(nextRow + n, 5).setValue(guests[0].getEmail());
if (guestCount > 1 && guests[1].getEmail().indexOf("google.com") > -1) {
sheetMeetings.getRange(nextRow + n, 6).setValue(guests[1].getName());
sheetMeetings.getRange(nextRow + n, 7).setValue(guests[1].getEmail());
}
n++;
}
else if (guests[0].getEmail().indexOf("amazon.com") > -1) {
sheetMeetings.getRange(nextRow + n, 1).setValue(myStartTime);
sheetMeetings.getRange(nextRow + n, 2).setValue("AWS");
sheetMeetings.getRange(nextRow + n, 3).setValue(title);
sheetMeetings.getRange(nextRow + n, 4).setValue(guests[0].getName());
sheetMeetings.getRange(nextRow + n, 5).setValue(guests[0].getEmail());
if (guestCount > 1 && guests[1].getEmail().indexOf("amazon.com") > -1) {
sheetMeetings.getRange(nextRow + n, 6).setValue(guests[1].getName());
sheetMeetings.getRange(nextRow + n, 7).setValue(guests[1].getEmail());
}
n++;
}
else if (guests[0].getEmail().indexOf("microsoft.com") > -1) {
sheetMeetings.getRange(nextRow + n, 1).setValue(myStartTime);
sheetMeetings.getRange(nextRow + n, 2).setValue("Azure");
sheetMeetings.getRange(nextRow + n, 3).setValue(title);
sheetMeetings.getRange(nextRow + n, 4).setValue(guests[0].getName());
sheetMeetings.getRange(nextRow + n, 5).setValue(guests[0].getEmail());
if (guestCount > 1 && guests[1].getEmail().indexOf("microsoft.com") > -1) {
sheetMeetings.getRange(nextRow + n, 6).setValue(guests[1].getName());
sheetMeetings.getRange(nextRow + n, 7).setValue(guests[1].getEmail());
}
n++;
}
}
}
function getFirstEmptyRowByColumnArray() {
var spr = SpreadsheetApp.getActiveSpreadsheet();
var column = spr.getRange('A:A');
var values = column.getValues(); // get all data in one call
var ct = 0;
while (values[ct] && values[ct][0] != "") {
ct++;
}
return (ct + 1);
}
}