function onOpen() { var spreadsheet = SpreadsheetApp.getActive(); var menuItems = [ {name: ' ', functionName: 'generateReport_'} ]; spreadsheet.addMenu('', menuItems); }
function generateReport_() { // var columns = ['', ' ', '', '', '']; // var reportColumns = [' ', '', '', '']; // var Data = getAllCases(columns); // CreateNewSheet(); // var stat = FormReport(Data, reportColumns); ShowStat(stat); }
function getAllCases(columns) { var sheets = SpreadsheetApp.getActive().getSheets(); var data = new Array(); for (q=0; q<sheets.length; q++) { SpreadsheetApp.getActive().setActiveSheet(sheets[q]); data.push(getCases(columns)); } return data; }
function getCases(columns) { var range = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); var fields = FindFields(range[0], columns); var parts = new Array(); for (i=1; i<range.length; i++) { if (range[i][fields[0]] != '') { parts.push(new Array()); parts[parts.length-1]['name'] = range[i][fields[0]]; parts[parts.length-1]['scen'] = new Array(); } if (range[i][fields[1]] != '') { var title = range[i][fields[1]]; } if (range[i][fields[2]] != '') { var scen = new Array(); scen.push(title); for (j=2; j<fields.length; j++) { scen.push(range[i][fields[j]]); } parts[parts.length-1]['scen'].push(scen); } } return parts; }
function FindFields (data, columns) { var fields = new Array(); for (i=0; i<columns.length; i++) { for (j=0; j<data.length; j++) { if (columns[i] == data[j]) fields.push(j); } } return fields; }
function CreateNewSheet() { SpreadsheetApp.getActive().insertSheet(''); SpreadsheetApp.setActiveSheet(SpreadsheetApp.getActive().getSheetByName('')); }
function FormReport(data, columns) { var doc = SpreadsheetApp.getActive(); var stat = [0, 0, 0, 0]; doc.appendRow(columns); doc.setColumnWidth(1, 300); doc.setColumnWidth(2, 200); doc.setColumnWidth(3, 300); doc.setColumnWidth(4, 300); for (i=0; i<data.length; i++) { for (j=0; j<data[i].length; j++) { var temp = WritePart(data[i][j], columns); stat[0] += +temp[0]; stat[1] += +temp[1]; stat[2] += +temp[2]; stat[3] += +temp[3]; } } return stat; }
function WritePart(data, columns) { SpreadsheetApp.getActive().appendRow([data['name']]).set; var line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("A"+line).setFontSize(20); var defects = 0; var done = 0; var skipped = 0; var other = 0; for (k=0; k<data['scen'].length; k++) { SpreadsheetApp.getActive().appendRow(data['scen'][k]); var line = SpreadsheetApp.getActive().getLastRow(); switch (data['scen'][k][1]) { case '': defects++; SpreadsheetApp.getActive().getRange("A"+line+":D"+line).setBackground('red'); break; case '': done++; SpreadsheetApp.getActive().getRange("A"+line+":D"+line).setBackground('green'); break; case '': skipped++; SpreadsheetApp.getActive().getRange("A"+line+":D"+line).setBackground('yellow'); break; default: other++; SpreadsheetApp.getActive().getRange("A"+line+":D"+line).setBackground('yellow'); } } SpreadsheetApp.getActive().appendRow(['', ' :']); SpreadsheetApp.getActive().appendRow(['', ':', done, (done/(done+defects+skipped+other)*100).toFixed(2) + "%"]); line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("B"+line+":D"+line).setBackground('green'); SpreadsheetApp.getActive().appendRow(['', ':', defects, (defects/(done+defects+skipped+other)*100).toFixed(2) + "%"]); line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("B"+line+":D"+line).setBackground('red'); SpreadsheetApp.getActive().appendRow(['', ':', skipped, (skipped/(done+defects+skipped+other)*100).toFixed(2) + "%"]); line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("B"+line+":D"+line).setBackground('yellow'); SpreadsheetApp.getActive().appendRow(['', ':', other, (other/(done+defects+skipped+other)*100).toFixed(2) + "%"]); line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("B"+line+":D"+line).setBackground('yellow'); var stat = [defects, done, skipped, other]; return stat; }
function ShowStat(stat) { SpreadsheetApp.getActive().appendRow([' :']); var line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("A"+line).setFontSize(20); SpreadsheetApp.getActive().appendRow([':', stat[1], (stat[1]/(stat[0]+stat[1]+stat[2]+stat[3])*100).toFixed(2) + "%"]); line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("A"+line+":C"+line).setBackground('green'); SpreadsheetApp.getActive().appendRow([':', stat[0], (stat[0]/(stat[0]+stat[1]+stat[2]+stat[3])*100).toFixed(2) + "%"]); line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("A"+line+":C"+line).setBackground('red'); SpreadsheetApp.getActive().appendRow([':', stat[2], (stat[2]/(stat[0]+stat[1]+stat[2]+stat[3])*100).toFixed(2) + "%"]); line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("A"+line+":C"+line).setBackground('yellow'); SpreadsheetApp.getActive().appendRow([':', stat[3], (stat[3]/(stat[0]+stat[1]+stat[2]+stat[3])*100).toFixed(2) + "%"]); line = SpreadsheetApp.getActive().getLastRow(); SpreadsheetApp.getActive().getRange("A"+line+":C"+line).setBackground('yellow'); }
Source: https://habr.com/ru/post/195820/
All Articles