-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSummary.gs
131 lines (112 loc) · 4.59 KB
/
Summary.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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
function createSummary() {
Logger.log('Creating summary..')
var sheet = SpreadsheetApp.getActive().getSheetByName('Summary');
var values = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn()).getValues();
var currentUTCDate = new Date();
var utcYear = currentUTCDate.getUTCFullYear();
var utcMonth = currentUTCDate.getUTCMonth(); // Note: Months are zero-indexed
var utcDay = currentUTCDate.getUTCDate();
// Normalize the time part of the date to midnight UTC to only compare the date
currentUTCDate.setUTCFullYear(utcYear, utcMonth, utcDay);
currentUTCDate.setUTCHours(0, 0, 0, 0);
var previousDayUTC = new Date(currentUTCDate);
previousDayUTC.setUTCDate(currentUTCDate.getUTCDate() - 1);
var finalValues = []
for (var value of values) {
if (value[0] == '') {
break
}
var dateInSheet = value[0]
var utcDateInSheet = new Date(Date.UTC(dateInSheet.getFullYear(), dateInSheet.getMonth(), dateInSheet.getDate()));
if (utcDateInSheet.getTime() == currentUTCDate.getTime()) {
continue
} else {
finalValues.push(value)
}
}
var data = getDetailedData(currentUTCDate)
var resultArray = [...finalValues, ...data];
Logger.log(resultArray)
sheet.getRange(2, 1, resultArray.length, resultArray[0].length).setValues(resultArray)
Logger.log('Created summary..')
var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
// Sort by second column (ascending), then by first column (descending)
range.sort([
{column: 1, ascending: false},
{column: 6, ascending: false}
]);
}
function getDetailedData(currentUTCDate) {
var sheet = SpreadsheetApp.getActive().getSheetByName('CEX Hourly Average');
var values = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn()).getValues();
var cexMap = new Map();
for (var value of values) {
if (value[0] == '') {
break
}
var dateInSheet = value[0]
var utcDateInSheet = new Date(Date.UTC(dateInSheet.getFullYear(), dateInSheet.getMonth(), dateInSheet.getDate()));
if (utcDateInSheet.getTime() === currentUTCDate.getTime()) {
if (cexMap[value[1]] == null) {
var obj = {}
obj.plus2 = 0
obj.minus2 = 0
obj.spread = 0
obj.volume = 0
obj.len = 0
cexMap[value[1]] = obj
}
cexMap[value[1]].plus2 = cexMap[value[1]].plus2 + value[2]
cexMap[value[1]].minus2 = cexMap[value[1]].minus2 + value[3]
cexMap[value[1]].spread = cexMap[value[1]].spread + value[4]
cexMap[value[1]].volume = cexMap[value[1]].volume + value[5]
cexMap[value[1]].len = cexMap[value[1]].len + 1
}
}
var allData = []
for (var [key, value] of Object.entries(cexMap)) {
var sheetRow = []
sheetRow.push(currentUTCDate)
sheetRow.push(key)
sheetRow.push(value.plus2 / value.len)
sheetRow.push(value.minus2 / value.len)
sheetRow.push(value.spread / value.len)
sheetRow.push(value.volume / value.len)
allData.push(sheetRow)
}
return allData
}
function cleanUpData() {
var sheet = SpreadsheetApp.getActive().getSheetByName('CEX Hourly Average');
var values = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues(); // Get values from row 2 to last row
var currentUTCDate = new Date();
currentUTCDate.setUTCDate(currentUTCDate.getUTCDate() - 2);
var utcYear = currentUTCDate.getUTCFullYear();
var utcMonth = currentUTCDate.getUTCMonth(); // Note: Months are zero-indexed
var utcDay = currentUTCDate.getUTCDate();
// Normalize the time part of the date to midnight UTC to only compare the date
currentUTCDate.setUTCFullYear(utcYear, utcMonth, utcDay);
currentUTCDate.setUTCHours(0, 0, 0, 0);
// Array to store the rows to delete
var rowsToDelete = [];
// Loop through each row in the data
for (var i = 0; i < values.length; i++) {
var value = values[i];
if (value[0] === '') {
break;
}
// Parse the date in the first column
var dateInSheet = new Date(value[0]);
var utcDateInSheet = new Date(Date.UTC(dateInSheet.getFullYear(), dateInSheet.getMonth(), dateInSheet.getDate()));
// Compare the date with the current UTC date
if (utcDateInSheet.getTime() === currentUTCDate.getTime()) {
// If dates don't match, mark this row for deletion (1-indexed row)
rowsToDelete.push(i + 2); // +2 because we start from row 2 (row 1 is headers)
Logger.log('Found matched date, marking row ' + (i + 2) + ' for deletion');
}
}
// Delete rows in reverse order to avoid index shifting
for (var j = rowsToDelete.length - 1; j >= 0; j--) {
sheet.deleteRow(rowsToDelete[j]);
}
}