Untitled

mail@pastecode.io avatar
unknown
plain_text
5 months ago
3.4 kB
2
Indexable
//Código da planilha 100% funcional

function embaralharLinhasECriarPaginas() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName('Página1');
  
  // Obter todos os dados da Página1
  var data = sheet1.getDataRange().getValues();
  
  // Criar 24 novas páginas com nomes específicos
  for (var i = 0; i < 24; i++) {
    var newSheetName = 'Semana ' + (i * 2 + 1).toString().padStart(2, '0') + ' a ' + (i * 2 + 2).toString().padStart(2, '0'); // Nomes das novas páginas
    var newSheet = ss.getSheetByName(newSheetName);
    if (!newSheet) {
      newSheet = ss.insertSheet(newSheetName);
    } else {
      newSheet.clear(); // Limpar a nova página antes de adicionar novos dados
    }
    
    // Copiar a primeira linha para a nova página
    newSheet.appendRow(data[0]);
    
    // Remover a primeira linha dos dados a serem embaralhados
    var dataToShuffle = data.slice(1);
    
    // Embaralhar as linhas restantes
    for (var j = dataToShuffle.length - 1; j > 0; j--) {
      var k = Math.floor(Math.random() * (j + 1));
      var temp = dataToShuffle[j];
      dataToShuffle[j] = dataToShuffle[k];
      dataToShuffle[k] = temp;
    }
    
    // Adicionar as linhas embaralhadas na nova página
    if (dataToShuffle.length > 0) {
      newSheet.getRange(2, 1, dataToShuffle.length, dataToShuffle[0].length).setValues(dataToShuffle);
    }
    
    // Colorir as linhas alternadamente na nova página
    colorirLinhasAlternadas(newSheet);
  }
}

function colorirLinhasAlternadas(sheet) {
  var numRows = sheet.getLastRow();
  var numCols = sheet.getLastColumn();
  var colors = ['#fff2cc', '#f4cccc'];
  var blockSize = Math.ceil(numRows / 14);

  var backgrounds = [];
  for (var i = 2; i <= numRows; i++) { // Começar da segunda linha, pois a primeira é fixa
    var colorIndex = Math.floor((i - 2) / blockSize) % 2; // Ajuste no índice para começar da segunda linha
    var rowColors = new Array(numCols).fill(colors[colorIndex]);
    backgrounds.push(rowColors);
  }
  
  if (backgrounds.length > 0) {
    sheet.getRange(2, 1, backgrounds.length, numCols).setBackgrounds(backgrounds);
  }
}

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  
  // Verifica se a edição ocorreu na coluna D (coluna 4)
  if (range.getColumn() == 4) {
    var row = range.getRow();
    var value = range.getValue().toLowerCase();
    var colors = ['#fff2cc', '#f4cccc'];
    var blockSize = Math.ceil((sheet.getLastRow() - 1) / 14);
    var originalColor = colors[Math.floor((row - 2) / blockSize) % 2];
    
    if (value === "ok") {
      // Define a cor da linha para #a0e34d e armazena a cor original na propriedade de usuário
      sheet.getRange(row, 1, 1, sheet.getLastColumn()).setBackground("#a0e34d");
      PropertiesService.getDocumentProperties().setProperty("row_" + row, originalColor);
    } else {
      // Recupera a cor original da propriedade de usuário
      var storedColor = PropertiesService.getDocumentProperties().getProperty("row_" + row);
      sheet.getRange(row, 1, 1, sheet.getLastColumn()).setBackground(storedColor);
    }
  }
}

function onOpen() {
  SpreadsheetApp.getUi().createMenu('Custom Scripts')
      .addItem('Executar Main', 'main')
      .addToUi();
}

function main() {
  embaralharLinhasECriarPaginas();
}
Leave a Comment