-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathGoogleSheetiOS.gs
More file actions
70 lines (63 loc) · 2.08 KB
/
GoogleSheetiOS.gs
File metadata and controls
70 lines (63 loc) · 2.08 KB
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
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('Fetch iOS JSON and Populate Sheet', 'fetchiOSJsonAndPopulateSheet')
.addToUi();
}
function fetchiOSJsonAndPopulateSheet() {
var url = 'https://sofafeed.macadmins.io/v1/ios_data_feed.json';
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.clear();
var headers = [
"OS Version",
"Update Name",
"Product Version",
"Release Date",
"Security Info URL",
"CVE Count",
"Actively Exploited CVEs",
"Days Since Previous Release"
];
sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
sheet.setFrozenRows(1);
try {
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var data = JSON.parse(json);
} catch (e) {
Logger.log('Error fetching/parsing data: ' + e);
return;
}
data.OSVersions.forEach(function(osVersion) {
osVersion.SecurityReleases.forEach(function(release) {
var activelyExploitedCVEs = release.ActivelyExploitedCVEs ? release.ActivelyExploitedCVEs.join(", ") : "None";
var row = [
osVersion.OSVersion || "",
release.UpdateName || "",
release.ProductVersion || "",
formatDate(release.ReleaseDate, false),
release.SecurityInfo || "",
Object.keys(release.CVEs || {}).length,
activelyExploitedCVEs,
release.DaysSincePreviousRelease != null ? release.DaysSincePreviousRelease.toString() : ""
];
appendDataToSheet(sheet, [row]);
});
});
}
function appendDataToSheet(sheet, rowData) {
rowData.forEach(function(row) {
var lastRow = sheet.getLastRow();
var range = sheet.getRange(lastRow + 1, 1, 1, row.length);
range.setValues([row]);
range.setHorizontalAlignment("left");
});
}
function formatDate(dateStr, includeTime) {
var date = new Date(dateStr);
if (includeTime) {
return Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy-MM-dd'T'HH:mm:ss'Z'");
} else {
return Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy-MM-dd");
}
}