-
Notifications
You must be signed in to change notification settings - Fork 0
/
event_config.js
95 lines (81 loc) · 3.23 KB
/
event_config.js
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
function getEventConfig() {
console.time('getEventConfig');
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var metadata = spreadsheet.getDeveloperMetadata();
var config = {};
for (var fieldName in configFieldDefaults) {
if (configFieldDefaults.hasOwnProperty(fieldName)){
var md_val = metadata.find(function (m) {return m.getKey() === fieldName;});
if (md_val) {
config[fieldName] = md_val.getValue();
} else {
config[fieldName] = configFieldDefaults[fieldName];
}
}
}
if (!config.endDate) { config.endDate = config.startDate; }
if (!config.timeZone) {
config.timeZone = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
}
console.timeEnd('getEventConfig');
console.log(config);
return config;
}
function updateEventConfig(config) {
for (var key in config) {
if (config.hasOwnProperty(key) && configFieldDefaults.hasOwnProperty(key)){
updateMetadata(key, config[key]);
}
}
}
var configFieldDefaults = {
title: "",
startDate: "",
startTime: "",
endDate: "",
endTime: "",
locationName: "",
locationURL: "",
summary: "",
details: "",
footnote: "",
invitationGreeting: "",
headerImageURL: "",
hostName: "",
hostEmail: "",
timeZone: "",
hostAddress: "",
}
function preRenderConfigInfo(config) {
// These aren't really Zulu time, but I can't get apps script to be smarter about timezones. Forgive me.
var startDateTime = new Date(config.startDate + "T" + (config.startTime || "00:00") + "Z");
var endDateTime = new Date(config.endDate + "T" + (config.endTime || "00:00") + "Z");
config.startDateTimeISO8601 = Utilities.formatDate(startDateTime, 'GMT', "yyyyMMdd'T'HHmmss");
config.endDateTimeISO8601 = Utilities.formatDate(endDateTime, 'GMT', "yyyyMMdd'T'HHmmss");
if (config.startTime) {
config.prettyTime = Utilities.formatDate(startDateTime, "UTC", "EEEEEEEE, MMMM dd, yyyy 'at' h:mm a");
} else {
config.prettyTime = Utilities.formatDate(startDateTime, "UTC", "EEEEEEEE, MMMM dd");
}
if (config.endDate != config.startDate || config.endTime) { config.prettyTime += ' until ';}
if (config.endDate != config.startDate && config.endTime) {
config.prettyTime += Utilities.formatDate(endDateTime, "UTC", "EEEEEEEE, MMMM dd, yyyy 'at' h:mm a");
} else if (config.endTime) {
config.prettyTime += Utilities.formatDate(endDateTime, "UTC", "h:mm a");
} else if (config.endDate != config.startDate) {
config.prettyTime += Utilities.formatDate(endDateTime, "UTC", "EEEEEEEE, MMMM dd, yyyy");
}
var gcalParams = {text: config.title, ctz: config.timeZone,
dates: config.startDateTimeISO8601 + '/' + config.endDateTimeISO8601,
location: config.locationName, details: config.details + '\n\n' + config.footnote};
var searchStr = ''
for (var param in gcalParams) {
if (gcalParams.hasOwnProperty(param)){
searchStr += encodeURIComponent(param) + "=" + encodeURIComponent(gcalParams[param]) + '&';
}
}
config.gcalLink = "https://calendar.google.com/calendar/r/eventedit?" + searchStr;
config.htmlDetails = marked(config.details, {sanitize: true});
config.htmlFootnote = marked(config.footnote, {sanitize: true});
return config;
}