-
Notifications
You must be signed in to change notification settings - Fork 2
/
strava-fetch.gs
46 lines (43 loc) · 1.61 KB
/
strava-fetch.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
// helper functino to work with the time zones
function getDateFromCell(cellData){
try {
var timeZone = cellData.getTimezoneOffset()/-60;
timeZone = timeZone > 0 ? "GMT+" + timeZone : "GMT" + timeZone;
return Utilities.formatDate(new Date(cellData), timeZone, "MMMMM d, yyyy");
} catch(err) {
return "" + cellData;
}
}
// this is the function called from the sheet
function getDataFromLambda() {
// get data from strava
var optGet ={
"method":"get"
};
var lambdaURL = "https://***.execute-api.eu-west-1.amazonaws.com/default/***";
var records = UrlFetchApp.fetch(lambdaURL, optGet).getContentText();
var recordsArray = JSON.parse(records.replace(new RegExp('\\[.*\\]\s'),'')).content;
// get data from the sheet
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newRecords = [];
for (var iindex = 0; iindex < recordsArray.length; iindex++) {
// iterate over records from strava
var toBeAdded = true;
for (var jindex = 1; jindex < data.length && toBeAdded; jindex++) {
if (data[jindex][0] == recordsArray[iindex][0] && getDateFromCell(data[jindex][1]) == recordsArray[iindex][1] && Utilities.formatDate(new Date(data[jindex][2]), "GMT+2:03", "h:mm a") == recordsArray[iindex][2]) {
Logger.log("match found for " + data[jindex] + " " +recordsArray[iindex]);
toBeAdded = false;
}
}
if(toBeAdded){
Logger.log("adding " + recordsArray[iindex])
newRecords.push(recordsArray[iindex]);
}
}
// add new to the sheet
for(r of newRecords){
Logger.log(r);
sheet.appendRow(r);
}
}