MCPcopy Index your code
hub / github.com/analyticswithadam/App_Script / formatReport

Function formatReport

automatereporting.js:39–106  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

37}
38
39function formatReport() {
40 var ss = SpreadsheetApp.getActiveSpreadsheet();
41 var rawSheet = ss.getSheetByName('RawData');
42 var reportSheet = ss.getSheetByName('Report') || ss.insertSheet('Report');
43 reportSheet.clear();
44
45 var rawData = rawSheet.getDataRange().getValues();
46
47 // Adding KPI boxes
48 var data = rawData.slice(1);
49 var totalRequests = data.length;
50 var closedRequests = data.filter(row => row[2] === 'Closed').length;
51 var openRequests = totalRequests - closedRequests;
52
53 // Adding KPIs with professional styling
54 var kpiHeaders = [['Report Metrics']];
55 var kpis = [
56 ['Total Requests', totalRequests],
57 ['Closed Requests', closedRequests],
58 ['Open Requests', openRequests]
59 ];
60
61 // Append KPI headers
62 reportSheet.getRange(1, 1, 1, 1).setValues(kpiHeaders);
63 var headerRange = reportSheet.getRange(1, 1, 1, 1);
64 headerRange.setBackground('#26428b').setFontColor('#FFFFFF').setFontWeight('bold').setFontSize(14);
65 headerRange.mergeAcross();
66
67 // Append KPI values
68 reportSheet.getRange(2, 1, kpis.length, 2).setValues(kpis);
69 var kpiRange = reportSheet.getRange(2, 1, kpis.length, 2);
70 kpiRange.setBackground('#f1f1f1').setFontColor('#000000').setFontWeight('bold').setFontSize(12);
71
72 // Adding some space before the table
73 reportSheet.appendRow([' ']);
74 // Add data refreshed timestamp
75 reportSheet.appendRow(['']);
76 var timestamp = new Date();
77 reportSheet.appendRow(['Data refreshed on:', timestamp]);
78 var timestampRange = reportSheet.getRange(reportSheet.getLastRow(), 1, 1, 2);
79 timestampRange.setBackground('#f1f1f1').setFontColor('#000000').setFontWeight('bold');
80 reportSheet.appendRow(['Open Requests']);
81
82 // Filter specific columns to include in the detailed table
83 // Specify the columns you want to include by their indices
84 // Filter rows based on a specific column value (e.g., only open requests)
85 var filteredRows = data.filter(row => row[2] === 'Open');
86
87 // Specify the columns you want to include by their indices
88 var columnsToInclude = [1, 2, 4, 5, 6];
89
90 var filteredHeaders = columnsToInclude.map(index => rawData[0][index]);
91 var filteredData = filteredRows.map(row => columnsToInclude.map(index => row[index]));
92
93 // Append filtered data headers and rows
94 reportSheet.appendRow(filteredHeaders);
95 reportSheet.getRange(reportSheet.getLastRow() + 1, 1, filteredData.length, filteredData[0].length).setValues(filteredData);
96

Callers 1

generateReportFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected