I´ve given the task to create a script that creates a document file as a report based on a spreadsheet. Now I´ve tried several types of aproach but none of these aproaches created the document in question.
[This is the base spreadsheet] (https://docs.google.com/spreadsheets/d/1uKhuy0FBwn2w-wVcLer0aeKRxhbvX7GkBqdDKnbc_qM/edit?usp=sharing)
the code I have until now is this
function criarRelatoriosCentro() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var unidades = {};
var data = new Date();
var meses = ["janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"];
var hoje = data.getDate() + '-' + meses[data.getMonth()] + '-' + data.getFullYear();
// Obtém os dados da planilha
var range = ss.getSheetByName("Centro").getDataRange();
var valores = range.getValues();
// Preenche o objeto 'unidades' com os dados da planilha
for (var i = 1; i < valores.length; i++) {
var ativo = valores[i][0];
var unidade = valores[i][1];
var equipe = valores[i][2];
var dados = valores[i].slice(4, 70); // Dados da coluna E até BO
if (ativo === true && unidade && equipe) { // Verifica se a unidade está marcada como TRUE
if (!unidades[unidade]) {
unidades[unidade] = {
nome: unidade,
equipes: [],
dados: {}
};
}
unidades[unidade].equipes.push(equipe);
// Cria um objeto para cada coluna entre E e BO
for (var j = 0; j < dados.length; j++) {
var coluna = String.fromCharCode(69 + j); // 69 é o código ASCII para 'E'
unidades[unidade].dados[coluna] = dados[j];
}
}
}
// Cria os relatórios para cada unidade
for (var unidade in unidades) {
var nomeDocumento = "Relatório CS " + unidades[unidade].nome + " " + hoje;
var doc = DocumentApp.create(nomeDocumento);
// Verifica se o documento foi criado com sucesso
if (!doc) {
SpreadsheetApp.getUi().alert("Falha ao criar o documento: " + nomeDocumento);
continue; // Pula para a próxima iteração do loop
}
var body = doc.getBody();
var colunaE = unidades[unidade].dados['E']; // Acessa o valor da coluna E
var colunaF = unidades[unidade].dados['F'];
var colunaG = unidades[unidade].dados['G'];
var colunaH = unidades[unidade].dados['H'];
var colunaI = unidades[unidade].dados['I'];
var colunaJ = unidades[unidade].dados['J'];
var colunaK = unidades[unidade].dados['K'];
var colunaL = unidades[unidade].dados['L'];
var colunaM = unidades[unidade].dados['M'];
var colunaN = unidades[unidade].dados['N'];
var colunaO = unidades[unidade].dados['O'];
var colunaP = unidades[unidade].dados['P'];
var colunaQ = unidades[unidade].dados['Q'];
var colunaR = unidades[unidade].dados['R'];
var colunaS = unidades[unidade].dados['S'];
var colunaT = unidades[unidade].dados['T'];
var colunaU = unidades[unidade].dados['U'];
var colunaV = unidades[unidade].dados['V'];
var colunaW = unidades[unidade].dados['W'];
var colunaX = unidades[unidade].dados['X'];
var colunaY = unidades[unidade].dados['Y'];
var colunaZ = unidades[unidade].dados['Z'];
var colunaAA = unidades[unidade].dados['AA'];
var colunaAB = unidades[unidade].dados['AB'];
var colunaAC = unidades[unidade].dados['AC'];
var colunaAD = unidades[unidade].dados['AD'];
var colunaAE = unidades[unidade].dados['AE'];
var colunaAF = unidades[unidade].dados['AF'];
var colunaAG = unidades[unidade].dados['AG'];
var colunaAH = unidades[unidade].dados['AH'];
var colunaAI = unidades[unidade].dados['AI'];
var colunaAJ = unidades[unidade].dados['AJ'];
var colunaAK = unidades[unidade].dados['AK'];
var colunaAL = unidades[unidade].dados['AL'];
var colunaAM = unidades[unidade].dados['AM'];
var colunaAN = unidades[unidade].dados['AN'];
var colunaAO = unidades[unidade].dados['AO'];
var colunaAP = unidades[unidade].dados['AP'];
var colunaAQ = unidades[unidade].dados['AQ'];
var colunaAR = unidades[unidade].dados['AR'];
var colunaAS = unidades[unidade].dados['AS'];
var colunaAT = unidades[unidade].dados['AT'];
var colunaAU = unidades[unidade].dados['AU'];
var colunaAV = unidades[unidade].dados['AV'];
var colunaAW = unidades[unidade].dados['AW'];
var colunaAX = unidades[unidade].dados['AX'];
var colunaAY = unidades[unidade].dados['AY'];
var colunaAZ = unidades[unidade].dados['AZ'];
var colunaBA = unidades[unidade].dados['BA'];
var colunaBB = unidades[unidade].dados['BB'];
var colunaBC = unidades[unidade].dados['BC'];
var colunaBD = unidades[unidade].dados['BD'];
var colunaBE = unidades[unidade].dados['BE'];
var colunaBF = unidades[unidade].dados['BF'];
var colunaBG = unidades[unidade].dados['BG'];
var colunaBH = unidades[unidade].dados['BH'];
var colunaBI = unidades[unidade].dados['BI'];
var colunaBJ = unidades[unidade].dados['BJ'];
var colunaBK = unidades[unidade].dados['BK'];
var colunaBL = unidades[unidade].dados['BL'];
var colunaBM = unidades[unidade].dados['BM'];
var colunaBN = unidades[unidade].dados['BN'];
var colunaBO = unidades[unidade].dados['BO'];
var colunaBP = unidades[unidade].dados['BP'];
var colunaBQ = unidades[unidade].dados['BQ'];
var colunaBR = unidades[unidade].dados['BR'];
var colunaBS = unidades[unidade].dados['BS'];
var colunaBT = unidades[unidade].dados['BT'];
var colunaBU = unidades[unidade].dados['BU'];
var colunaBV = unidades[unidade].dados['BV'];
var colunaBW = unidades[unidade].dados['BW'];
var colunaBX = unidades[unidade].dados['BX'];
var colunaBY = unidades[unidade].dados['BY'];
var colunaBZ = unidades[unidade].dados['BZ'];
var textoPredeterminado = "Este é o texto pré-determinado que será inserido em cada relatório. Aqui estão os dados específicos: " + colunaE + ", " + colunaF + ", " + colunaG + ", " + colunaH + ", ..., " + colunaBO;
body.appendParagraph("Relatório para a unidade: " + unidades[unidade].nome);
body.appendParagraph("Equipes ativas:");
body.appendParagraph(unidades[unidade].equipes.join(", "));
body.appendParagraph("Dados:");
body.appendParagraph(unidades[unidade].dados.join(", "));
body.appendParagraph(textoPredeterminado);
// Salva o ID do documento na planilha
ss.getSheetByName("Centro").getRange("BM" + (Number(i) + 1)).setValue(doc.getId());
// Exibe um alerta com o ID do documento
var docId = doc.getId();
SpreadsheetApp.getUi().alert("Relatório criado com sucesso! O ID do documento é: " + docId);
// Move o documento para uma pasta específica
var pastaId = 'https://drive.google.com/drive/folders/1MK8KRyFJoYiuD7Ue4GYupJGT7jB06a3K'; // Substitua 'ID_DA_SUA_PASTA' pelo ID da sua pasta
var arquivo = DriveApp.getFileById(doc.getId());
DriveApp.getFolderById(pastaId).addFile(arquivo);
DriveApp.getRootFolder().removeFile(arquivo);
}
}
function onOpen() {
var menu = SpreadsheetApp.getUi().createMenu('Relatórios');
menu.addItem('Criar Relatório Centro','criarRelatoriosCentro').addToUi();
menu.addItem('Criar Relatório Continente','criarRelatoriosContinente').addToUi();
menu.addItem('Criar Relatório Norte','criarRelatoriosNorte').addToUi();
menu.addItem('Criar Relatório Sul','criarRelatoriosSul').addToUi();
}
I Tried to create the document in the same page but no results
to put a warning if the document wasn´t created but the warning did not appear, and put a UI alert after document creation with the link to the new document but no good on creating the document neither on showing the alert.
The script should consider Column A if true to start the new document using the pattern “relatorio + + Date of creation”
Column B has nested informations thru all the spreadsheet, column C specifies for which workgroup the information belongs to. This is one question I did´nt see how it gets because I just cant Get the damn report document