Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var MINISTRY_GRUOPS = [1,2,3,4,5,6]
  2. var source = SpreadsheetApp.getActiveSpreadsheet();
  3.  
  4. function create_new_month() {
  5.   var sheet_name = "test"
  6.   var new_sheet = source.getSheetByName(sheet_name)
  7.   // Creates new month sheet
  8.   if (! new_sheet) {
  9.     new_sheet = create_new_sheet(sheet_name)
  10.   }
  11.  
  12.   new_sheet.getDataRange().clearContent();
  13.   new_sheet.clearFormats();
  14.  
  15.   // Get publishers groups
  16.   var publishers = source.getSheetByName("LISTA GŁOSICIELI")
  17.   var dataRange = publishers.getDataRange()
  18.   var dataRangeRows = dataRange.getNumRows()
  19.   var dataRangeValues = dataRange.getValues()
  20.  
  21.   var PUBLISHERS_GROUP = []
  22.  
  23.   var all_pioneers = []
  24.   var all_aux_pioneers = []
  25.   var all_disableds = []
  26.   var row_start = 1;
  27.   var row_end = 0;
  28.  
  29.   for (var nr = 0; nr < MINISTRY_GRUOPS.length; nr++ ) {
  30.     var whole_group = get_group_by_number(dataRangeValues, MINISTRY_GRUOPS[nr])
  31.     var group = whole_group['publishers']
  32.     var publishers_flat = []
  33.  
  34.     group.forEach(function(current_value) {
  35.       publishers_flat.push(current_value[0])
  36.     });
  37.    
  38.    
  39.     var group_data = group
  40.     var group_size = group_data.length
  41.     row_end += group_size
  42.    
  43.     var nrs = []
  44.     for (var i = 1; i < group_size + 1; i++) {
  45.       nrs.push([i])
  46.     }
  47.    
  48.     // nagłowek
  49.     var header =  [["", "GRUPA " + (nr + 1), "PUBLIKACJE", "FILMY", "GODZINY", "ODWIEDZINY", "STUDIA"]]
  50.     var header_range = new_sheet.getRange("A" + row_start + ":G" + (row_start))
  51.     var summary_range = new_sheet.getRange("A" + row_start + ":G" + (row_start))
  52.     var avg_range = new_sheet.getRange("A" + row_start + ":G" + (row_start))
  53.     header_range.setValues(header).setBackground("#000").setFontColor("#FFF").setFontWeight("bold").setHorizontalAlignment("center")
  54.     // dane ze służby
  55.     row_start += 1
  56.     row_end += 1
  57.     new_sheet.getRange("A" + row_start + ":A" + row_end).setValues(nrs)
  58.     new_sheet.getRange("B" + row_start + ":B" + row_end).setValues(group_data)
  59.     var drs = row_start
  60.     var dre = row_end
  61.     // suma
  62.     row_start += 1
  63.     row_end += 1
  64.     var summary_range = new_sheet.getRange("B" + row_end + ":G" + row_end)
  65.     summary_range.setValues([["SUMA", r2s(c2rng("C",drs, dre)), r2s(c2rng("D",drs, dre)), r2s(c2rng("E",drs, dre)), r2s(c2rng("F",drs, dre)), r2s(c2rng("G",drs, dre))]])
  66.     summary_range.setFontWeight("bold")
  67.     // średnia
  68.     row_start += 1
  69.     row_end += 1
  70.     var avg_range = new_sheet.getRange("B" + row_end + ":G" + row_end)
  71.     avg_range.setValues([["ŚREDNIA", r2a(c2rng("C",drs, dre)), r2a(c2rng("D",drs, dre)), r2a(c2rng("E",drs, dre)), r2a(c2rng("F",drs, dre)), r2a(c2rng("G",drs, dre))]])
  72.     avg_range.setFontWeight("bold")
  73.     // ustawienie pionierów, nieczynnych itp
  74.    
  75.     set_publishers_special_attr(new_sheet, publishers_flat, whole_group['pioneers'], "#AED6F1", drs)
  76.     set_publishers_special_attr(new_sheet, publishers_flat, whole_group['aux_pioneers'], "#A3E4D7", drs)
  77.     set_publishers_special_attr(new_sheet, publishers_flat, whole_group['disableds'], "#FADBD8", drs)
  78.     all_pioneers = all_pioneers.concat(whole_group['pioneers'])
  79.     all_aux_pioneers = all_aux_pioneers.concat(whole_group['aux_pioneers'])
  80.     all_disableds = all_disableds.concat(whole_group['disableds'])
  81.    
  82.     row_start += group_size
  83.   }
  84.    
  85.     // koncowe formatowanie
  86.     new_sheet.setColumnWidth(1, 30)
  87.     new_sheet.autoResizeColumn(2)
  88.     new_sheet.getRange("C:G").setHorizontalAlignment("center")
  89.    
  90.     //statystyki służby
  91.     Logger.log(all_pioneers)
  92.     var all_group_values = new_sheet.getRange("A:G").getValues()
  93.     var pioneers_stats = []
  94.     var aux_pioneer_stats = []
  95.  
  96.     for (var i=0; i < all_group_values.length; i++ ){
  97.         var row = all_group_values[i]
  98.         if ( all_pioneers.indexOf(row[1]) > -1 ) {
  99.             pioneers_stats.push("(B:B=\""+row[1]+"\")")
  100.         }
  101.     }
  102.  
  103.     for (var i=0; i < all_group_values.length; i++ ){
  104.         var row = all_group_values[i]
  105.         if ( all_aux_pioneers.indexOf(row[1]) > -1 ) {
  106.             aux_pioneer_stats.push("(B:B=\""+row[1]+"\")")
  107.         }
  108.     }
  109.    
  110.     var stats_header = new_sheet.getRange("I1:O1")
  111.     var stats_header_values = [["PIONIERZY", "LICZBA", "PUBLIKACJE", "FILMY", "GODZINY", "ODWIEDZINY", "STUDIA" ]]
  112.     stats_header.setValues(stats_header_values).setBackground("#BB8FCE").setFontColor("#000").setFontWeight("bold").setHorizontalAlignment("center")
  113.     var legend = new_sheet.getRange("I2:I3")
  114.     var legend_values = [["STALI"], ["POMOCNCZY"]]
  115.     legend.setValues(legend_values).setBackground("#FFF").setFontColor("#000").setFontWeight("bold").setHorizontalAlignment("center")
  116.     new_sheet.autoResizeColumn(9)
  117.    
  118.     var stats_columns = ["C", "D", "E" , "F", "G"]
  119.     var filters_pioneer = [all_pioneers.length]
  120.     var filter_aux_pioneer = [all_aux_pioneers.length]
  121.     for (var i=0; i < stats_columns.length; i++) {
  122.        var columt_letter = stats_columns[i]
  123.        var stmt = pioneers_stats.join("+")
  124.        var filter = "=SUM(FILTER("+ columt_letter + ":" + columt_letter + ";" + stmt + "))"
  125.        filters_pioneer.push(filter)
  126.        var stmt = aux_pioneer_stats.join("+")
  127.        var filter = "=SUM(FILTER("+ columt_letter + ":" + columt_letter + ";" + stmt + "))"
  128.        filter_aux_pioneer.push(filter)
  129.        Logger.log(filters_pioneer)
  130.     }
  131.     new_sheet.getRange("J2:O2").setValues([filters_pioneer]).setHorizontalAlignment("center")
  132.     new_sheet.getRange("J3:O3").setValues([filter_aux_pioneer]).setHorizontalAlignment("center")
  133.    
  134.     var stats_header = new_sheet.getRange("I6:O6")
  135.     var stats_header_values = [["GŁOSICIELE", "LICZBA", "PUBLIKACJE", "FILMY", "GODZINY", "ODWIEDZINY", "STUDIA" ]]
  136.     stats_header.setValues(stats_header_values).setBackground("#AED6F1").setFontColor("#000").setFontWeight("bold").setHorizontalAlignment("center")
  137.     var legend = new_sheet.getRange("I7:I7")
  138.     var legend_values = [["RAZEM"]]
  139.     legend.setValues(legend_values).setBackground("#FFF").setFontColor("#000").setFontWeight("bold").setHorizontalAlignment("center")
  140.    
  141.  
  142.     var stats_header = new_sheet.getRange("I9:O9")
  143.     var stats_header_values = [["", "LICZBA", "PUBLIKACJE", "FILMY", "GODZINY", "ODWIEDZINY", "STUDIA" ]]
  144.     stats_header.setValues(stats_header_values).setBackground("#D0ECE7").setFontColor("#000").setFontWeight("bold").setHorizontalAlignment("center")
  145.     var legend = new_sheet.getRange("I10:I10")
  146.     var legend_values = [["ZBÓR"]]
  147.     legend.setValues(legend_values).setBackground("#FFF").setFontColor("#000").setFontWeight("bold").setHorizontalAlignment("center")
  148.  
  149. }
  150.  
  151.  
  152.  
  153. function set_publishers_special_attr(sheet, publishers_flat_list, custom_publishers, color, position_start) {
  154.     for (var i=0; i < custom_publishers.length; i++) {
  155.       var pos = publishers_flat_list.indexOf(custom_publishers[i])
  156.       if ( pos > -1 ) {
  157.            sheet.getRange("B" + (position_start + pos) + ":B" + (position_start + pos)).setBackground(color)
  158.         }
  159.     }
  160. }
  161.  
  162. function create_new_sheet(sheet_name) {
  163.   return source.insertSheet(sheet_name)
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement