-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdashboard.gs
81 lines (70 loc) · 2.83 KB
/
dashboard.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
function createRegionalDashboards() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheets = spreadsheet.getSheets();
var latestSheet = null;
var ugRegionsSheet = null;
// Find the UG + Regions sheet and the latest data sheet
sheets.forEach(function(sheet) {
var sheetName = sheet.getName();
if (sheetName == 'UG + Regions') {
ugRegionsSheet = sheet;
} else if (sheetName == (new Date().toLocaleString('en-US', { month: 'long' })) + " " +new Date().getFullYear()){
latestSheet = sheet;
}
});
if (!ugRegionsSheet || !latestSheet) {
Logger.log("Required sheets not found.");
return;
}
var regions = ['AMER', 'APAC', 'EMEA'];
regions.forEach(function(region) {
var dashboardName = region + ' Dashboard';
var regionalDashboardSheet = spreadsheet.getSheetByName(dashboardName);
if (regionalDashboardSheet) {
regionalDashboardSheet.clear(); // Clear the existing Dashboard if it exists
} else {
regionalDashboardSheet = spreadsheet.insertSheet(dashboardName); // Create a new Dashboard sheet
}
createRegionDashboardSheet(region, latestSheet, ugRegionsSheet, regionalDashboardSheet);
});
}
function createRegionDashboardSheet(region, dataSheet, ugRegionsSheet, regionalDashboardSheet) {
// Extract user groups and filter by region
var userGroups = ugRegionsSheet.getRange('A2:B' + ugRegionsSheet.getLastRow()).getValues();
var filteredGroups = userGroups.filter(function(row) {
return row[1] === region;
}).map(function(row) {
return row[0];
});
if (filteredGroups.length === 0) {
Logger.log("No Groups found for " + region);
return;
}
// Specify the exact data range to avoid empty rows
var range = dataSheet.getRange('A1:J' + dataSheet.getLastRow()); // Adjust range as per your data
var dataValues = range.getValues();
// Filter the data based on filtered user groups
var filteredData = dataValues.filter(function(row) {
return filteredGroups.includes(row[1]); // Update the column index to match the 'User Group Name' column
});
if (filteredData.length === 0) {
Logger.log("No Data found for " + region);
return;
}
// Create or clear the regional dashboard sheet
if (!regionalDashboardSheet) {
regionalDashboardSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(region + ' Dashboard');
} else {
regionalDashboardSheet.clear(); // Clear the existing Dashboard if it exists
}
// Copy the headers from the latest sheet
var headers = dataSheet.getRange('A1:J1').getValues();
regionalDashboardSheet.getRange('A1:J1').setValues(headers);
// Copy only the filtered Column B and C data to the new sheet
var outputData = filteredData.map(function(row) {
return row;
});
if (outputData.length > 0) {
regionalDashboardSheet.getRange(2, 1, outputData.length, 10).setValues(outputData);
}
}