Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //GLOBAIS >
- //{ https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en }
- //{ https://developers.google.com/apps-script/reference/cache/cache-service?hl=en#getuserCache() }
- //const planilha = SpreadsheetApp.openById("1knCNlIvObPxAvgvbIIDtRLaxAsZEMJGZ174KL3Xy64I"); //A planilha vinculada a esse script, cuida da interface e acesso
- const userCache = CacheService.getUserCache(); //Um atalho para o cache, que guarda os dados temporários
- const planilhaEstrutura = SpreadsheetApp.openById("111wAmTVRaTlDI5u79ZMzM7a8eXJfpcNcyf0ORBw9RQU");
- const planilhaRh = SpreadsheetApp.openById("1ctC265kPHuxNIdxjEmcmXBVp93nfNPt6ezwOjPPmIE8");
- const planilhaPlanejamento = SpreadsheetApp.openById("17cDvwbJlKiayjLdkiHNDtYLKMQSLmI2d0e1nu2TigD4");
- const idColaborador = "EE65034D";
- const pastaImagemColaboradores = "1I4onblYLUzdzunAyErPvnubnoaShhQ6Z";
- const pastaFilesColaboradores = "1UGjXXSX2YtTpIbySO-t_2D-TNcD30Awu";
- const enderecoImagemColaboradores = "COLABORADORES_Images/";
- const enderecoFilesColaboradores = "COLABORADORES_Files_/";
- //GLOBAIS <
- /**
- *
- * doGet é uma função fundamental para iniciar web apps, a não ser que seja dita o oposto, o autor das funções nessa aplicação é o determinado a seguir
- * As versões antes de estarem na versão final são nomeadas baseada na ultima capacidade implementada, sendo sequencialmente Orig,CadTer,AcTer,MovCob,ConCha,ConLeGua,ConMal,ConCor,ConLac,CadOb,Login,ConOb,CheckList,RegOc,RegErr,RegNot,logOut,Final.
- * a version daqui é a versão da aplicação como todo
- *
- * @author David Paiva <[email protected]>
- * @version cadOb1 / cadTer3
- * @see {@link https://jsdoc.app/}
- * @see {@link https://developers.google.com/apps-script/guides/web?hl=en}
- *
- * @param e {params} parametro padrão para capturar requisições, não é utilizado nessa aplicação
- * @returns {HtmlOutput}
- *
- * @summary doGet que inicializa tudo
- */
- function doGet(e) { // { https://developers.google.com/apps-script/guides/web }
- let outputHTML;
- outputHTML = HtmlService.createTemplateFromFile("MAIN/mainHTML");
- return outputHTML.evaluate().setTitle("Cadastro de prestador de serviço Tehuá").setFaviconUrl("https://drive.google.com/uc?export=view&id=1jvhZhTzlISO41hftPhVtB15biDhJwgKL&format=png");
- }
- //INCLUDES >
- //Funções de Include funcionam retornando um HTML utilizando Scriptlets { https://developers.google.com/apps-script/guides/html/templates#index.html }
- /**
- *
- * inclui um template pra mudar dinamicamente a página
- *
- *
- * @see {@link https://developers.google.com/apps-script/reference/html/html-template?hl=en}
- *
- * @param {template} template O template a ser incluído
- * @returns {HtmlOutput}
- */
- function includeTemplate(template) {
- //Logger.log("lá vêm o template: " + template)
- return HtmlService.createTemplateFromFile(template).evaluate().getContent(); //retorna o conteúdo do template como html
- }
- /**
- *
- * inclui html em outro html, como forma de separar css e js
- *
- * @author desconhecido
- *
- * @see {@link https://developers.google.com/apps-script/reference/html/html-template?hl=en}
- *
- * @param {html} filename Arquivo html a ser incluído
- * @returns {HtmlOutput}
- */
- function include(filename) {
- //Logger.log("lá vêm o arquivo: " + filename)
- return HtmlService.createHtmlOutputFromFile(filename).getContent(); //retorna o conteúdo em HTML
- }
- //INCLUDES <
- //CACHE >
- //Funções para gerenciar o cache dentro do javascript, devem ser utilizadas com o google.script.run { https://developers.google.com/apps-script/guides/html/reference/run }
- /**
- *
- * inclui um valor no cache, para ser usado em JS
- *
- * @see {@link https://developers.google.com/apps-script/reference/cache}
- *
- * @param {string} key a chave do cache
- * @param {string} value o valor a ser incluído
- * @param {int} [time=10800] o tempo em milisegundos, por padrão é 6 horas, o tempo máximo
- * @returns {null}
- */
- function putDataInUserCache(key,value,time=10800) { //Coloca alguma informação no cache de script, o tempo padrão sendo o máximo, 6 horas
- Logger.log("vamos colocar a chave " + key + " com o valor " + value)
- userCache.put(key,value,time);
- Logger.log("o valor ficou " + userCache.get(key))
- }
- /**
- *
- * extrai um valor do cache, para ser usado em JS
- *
- * @see {@link https://developers.google.com/apps-script/reference/cache}
- *
- * @param {string} key a chave do cache
- * @returns {string}
- */
- function getDataInUserCache(key) { //retorna o dado do cache script
- Logger.log("estou vendo a chave: " + key);
- Logger.log("estou retornando " + userCache.get(key))
- return userCache.get(key);
- }
- //CACHE <
- //QUERY >
- //funções do tipo query pesquisam em uma planilha, geralmente numa que serve de banco de dados e geralmente pra serem utilizadas pelo script run
- /**
- *
- * busca um intervalo nomeado namedRange dentro de uma planilha sourceSheet e retorna um select em HTML utlizando esses valores
- *
- * @see {@link https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en }
- * @see {@link https://support.google.com/docs/answer/63175?hl=pt-BR&co=GENIE.Platform%3DDesktop }
- *
- * @param {string} sourceSheet a planilha onde se encontra o intervalo
- * @param {string} namedRange o nome do intervalo nomeado
- * @returns {string}
- */
- function queryOptionsNamedRange(sourceSheet, namedRange) {
- Logger.log("pesquisando no intervalo: " + namedRange);
- let array = sourceSheet.getRangeByName(namedRange).getValues().filter(String); //captura os valores do intervalo nomeado e em seguida filtra todas células vazias
- Logger.log("após filtrar: " + array);
- array = array.sort() //ordena os valores em ordem alfabética
- Logger.log("ordenado: " + array)
- let htmlOutput = HtmlService.createHtmlOutput(); //cria uma variável para ser utilizada para saída em HTML
- for (let i = 0; i < array.length; i++) { //inicia um looping pelos valores do intervalo nomeado
- htmlOutput.append('<option value="' + array[i] + '">' + array[i] + "</option>\n"); //e então cria uma lista de opções utilizando os valores do intervalo
- }
- Logger.log("e assim criamos essa lista: " + htmlOutput.getContent())
- return htmlOutput.getContent(); //retorna o select solicitado
- }
- /**
- *
- * busca um intervalo nomeado namedRange não ordenado dentro de uma planilha sourceSheet e retorna um select em HTML utlizando esses valores
- *
- * @see {@link https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en }
- * @see {@link https://support.google.com/docs/answer/63175?hl=pt-BR&co=GENIE.Platform%3DDesktop }
- *
- * @param {string} sourceSheet a planilha onde se encontra o intervalo
- * @param {string} namedRange o nome do intervalo nomeado
- * @returns {string}
- */
- function queryOptionsNamedRangeUnsort(sourceSheet, namedRange) {
- let array = sourceSheet.getRangeByName(namedRange).getValues().filter(String); //captura os valores do intervalo nomeado e em seguida filtra todas células vazias
- let htmlOutput = HtmlService.createHtmlOutput(); //cria uma variável para ser utilizada para saída em HTML
- for (let i = 0; i < array.length; i++) { //inicia um looping pelos valores do intervalo nomeado
- htmlOutput.append('<option value="' + array[i] + '">' + array[i] + "</option>\n"); //e então cria uma lista de opções utilizando os valores do intervalo
- }
- //Logger.log("e assim criamos essa lista: " + htmlOutput.getContent())
- return htmlOutput.getContent(); //retorna o select solicitado
- }
- /**
- *
- * busca um intervalo dinamico referente a coluna colunaRefrencia e uma pagina paginaReferencia dentro de uma planilha sourceSheet e retorna um select em HTML utlizando esses valores
- *
- * @see {@link https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en }
- * @see {@link https://support.google.com/docs/answer/63175?hl=pt-BR&co=GENIE.Platform%3DDesktop }
- *
- * @param {Spreadsheet} sourceSheet a planilha onde se encontra o intervalo
- * @param {string} paginaReferencia a página dentro da tabela sourceSheet
- * @param {string} colunaReferencia a coluna dentro da paginaReferencia
- * @returns {string}
- */
- function queryOptionsDynamicRange(sourceSheet, paginaReferencia, colunaReferencia, padrao) {
- let planilha = sourceSheet; //caputra a planilha
- Logger.log("capturando a planilha: " + planilha.getName());
- let pagina = planilha.getSheetByName(paginaReferencia); //captura a pagina
- Logger.log("capturando a página: " + pagina.getName());
- Logger.log("contando total de linhas...");
- let totalLinhas = pagina.getMaxRows();
- Logger.log("total: " + totalLinhas);
- range = pagina.getRange(colunaReferencia + "2" + ":" + colunaReferencia + totalLinhas);
- Logger.log("pesquisando no intervalo: " + range.getA1Notation());
- let array = range.getValues().filter(String); //captura os valores do intervalo nomeado e em seguida filtra todas células vazias
- Logger.log("após filtrar: " + array);
- array = array.sort() //ordena os valores em ordem alfabética
- Logger.log("ordenado: " + array)
- let htmlOutput = HtmlService.createHtmlOutput(); //cria uma variável para ser utilizada para saída em HTML
- for (let i = 0; i < array.length; i++) { //inicia um looping pelos valores do intervalo nomeado
- if(array[i] == padrao) {
- htmlOutput.append('<option value="' + array[i] + '" selected>' + array[i] + "</option>\n"); //e então cria uma lista de opções utilizando os valores do intervalo
- }
- else{
- htmlOutput.append('<option value="' + array[i] + '">' + array[i] + "</option>\n"); //e então cria uma lista de opções utilizando os valores do intervalo
- }
- }
- Logger.log("e assim criamos essa lista: " + htmlOutput.getContent())
- return htmlOutput.getContent(); //retorna o select solicitado
- }
- /**
- *
- * busca um intervalo dinamico referente a coluna colunaRefrencia e uma pagina paginaReferencia dentro de uma planilha sourceSheet e retorna um select em HTML utlizando esses valores
- *
- * @see {@link https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en }
- * @see {@link https://support.google.com/docs/answer/63175?hl=pt-BR&co=GENIE.Platform%3DDesktop }
- *
- * @param {Spreadsheet} sourceSheet a planilha onde se encontra o intervalo
- * @param {string} paginaReferencia a página dentro da tabela sourceSheet
- * @param {string} colunaReferencia a coluna dentro da paginaReferencia
- * @returns {string}
- */
- function queryOptionsBanco() {
- let planilha = planilhaRh; //caputra a planilha
- Logger.log("capturando a planilha: " + planilha.getName());
- let pagina = planilha.getSheetByName("BANCOS"); //captura a pagina
- Logger.log("capturando a página: " + pagina.getName());
- Logger.log("contando total de linhas...");
- let totalLinhas = pagina.getMaxRows();
- Logger.log("total: " + totalLinhas);
- range = pagina.getRange("B" + "2" + ":" + "C" + totalLinhas);
- range = range.sort(2) //ordena os valores em ordem do código
- Logger.log("pesquisando no intervalo: " + range.getA1Notation());
- let array = range.getValues().filter(String); //captura os valores do intervalo nomeado e em seguida filtra todas células vazias
- Logger.log("após filtrar: " + array);
- Logger.log("ordenado: " + array)
- let htmlOutput = HtmlService.createHtmlOutput(); //cria uma variável para ser utilizada para saída em HTML
- for (let i = 0; i < array.length; i++) { //inicia um looping pelos valores do intervalo nomeado
- htmlOutput.append('<option value="' + array[i][0] + '">' + array[i][0] + " (" + array[i][1] + ") " + "</option>\n"); //e então cria uma lista de opções utilizando os valores do intervalo
- }
- Logger.log("e assim criamos essa lista: " + htmlOutput.getContent())
- return htmlOutput.getContent(); //retorna o select solicitado
- }
- /**
- *
- * busca um intervalo dinamico referente a coluna colunaRefrencia e uma pagina paginaReferencia dentro de uma planilha sourceSheet e retorna um select em HTML utlizando esses valores
- *
- * @see {@link https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en }
- * @see {@link https://support.google.com/docs/answer/63175?hl=pt-BR&co=GENIE.Platform%3DDesktop }
- *
- * @param {Spreadsheet} sourceSheet a planilha onde se encontra o intervalo
- * @param {string} paginaReferencia a página dentro da tabela sourceSheet
- * @param {string} colunaReferencia a coluna dentro da paginaReferencia
- * @returns {string}
- */
- function queryOptionFuncoes() {
- let planilha = planilhaRh; //caputra a planilha
- Logger.log("capturando a planilha: " + planilha.getName());
- let funcoes = planilha.getSheetByName("FUNCOES"); //captura a pagina de FUNCOES
- let categoria = planilha.getSheetByName("CATEGORIAS_FUNCAO"); //captura a pagina de FUNCOES
- Logger.log("capturando a página: " + funcoes.getName());
- Logger.log("capturando a página: " + categoria.getName());
- Logger.log("contando total de linhas em funcoes...");
- let totalLinhasFuncao = funcoes.getMaxRows();
- Logger.log("total: " + totalLinhasFuncao)
- Logger.log("contando total de linhas em categoria...");
- let totalLinhasCategoria = categoria.getMaxRows();
- Logger.log("total: " + totalLinhasCategoria);
- rangeFuncao = funcoes.getRange("B" + "2" + ":" + "C" + totalLinhasFuncao);
- rangeFuncao = rangeFuncao.sort(3) //ordena os valores em ordem alfabética
- Logger.log(rangeFuncao.sort(3));
- rangeCategoria = categoria.getRange("A" + "2" + ":" + "C" + totalLinhasCategoria);
- rangeCategoria = rangeCategoria.sort(3) //ordena os valores pelo index
- Logger.log("pesquisando no intervalo de função: " + rangeFuncao.getA1Notation());
- let arrayFuncao = rangeFuncao.getValues().filter(String); //captura os valores do intervalo nomeado e em seguida filtra todas células vazias
- Logger.log("após filtrar: " + arrayFuncao);
- Logger.log("pesquisando no intervalo de categoria: " + rangeCategoria.getA1Notation());
- let arrayCategoria = rangeCategoria.getValues().filter(String); //captura os valores do intervalo nomeado e em seguida filtra todas células vazias
- Logger.log("após filtrar: " + arrayCategoria);
- let htmlOutput = HtmlService.createHtmlOutput(); //cria uma variável para ser utilizada para saída em HTML
- Logger.log("gerando lista de funções");
- for (let i = 0; i < arrayCategoria.length; i++) { //inicia um looping pelas categorias
- Logger.log("categoria " + i + " = " + arrayCategoria[i][1]);
- Logger.log('<optgroup label="' + arrayCategoria[i][1] + '">');
- htmlOutput.append('<optgroup label="' + arrayCategoria[i][1] + '">'); //e então cria uma lista de opções utilizando os valores do intervalo
- Logger.log("atualizando output");
- Logger.log(htmlOutput.getContent());
- for (let j = 0; j < arrayFuncao.length; j++) { //inicia um looping pelos valores do intervalo nomeado
- Logger.log("função " + j + " = " + arrayFuncao[j][1]);
- Logger.log("verificando se " + arrayFuncao[j][0] + " = " + arrayCategoria[i][0]);
- if(arrayFuncao[j][0] == arrayCategoria[i][0]) {
- //Logger.log("é igual, adicionando...");
- htmlOutput.append('<option value="' + arrayFuncao[j][1] + '">' + arrayFuncao[j][1] + "</option>\n"); //e então cria uma lista de opções utilizando os valores do intervalo
- }
- Logger.log("atualizando output");
- Logger.log(htmlOutput.getContent());
- }
- htmlOutput.append('</optgroup>'); //finaliza optgroup
- }
- Logger.log("e assim criamos essa lista: " + htmlOutput.getContent())
- return htmlOutput.getContent(); //retorna o select solicitado
- }
- /**
- *
- * função utilizada para capturar um valor específico em um intervalo nomeado na planilha
- *
- * @see {@link https://developers.google.com/apps-script/guides/html/reference/run }
- *
- * @param {string} value o valor a ser procurado
- * @param {string} namedRange o nome do intervalo nomeado
- * @returns {int}
- */
- function queryValueInNamedRange(value,namedRange) {
- Logger.log("pesquisando " + value + " em " + namedRange)
- let data = planilha.getRangeByName(namedRange).getValues().filter(String); //captura os valores do intervalo nomeado
- Logger.log("considerando " + data)
- for(let i = 0; i<data.length;i++) { //busca o valor value dentro do intervalo
- Logger.log(i);
- if(data[i] == value){ //se o valor for encontrado
- Logger.log(("encontramos em " + i))
- return i+2; //retorna a linha, +2 pois inicia-se em 0 e na segunda linha
- }
- }
- }
- /**
- *
- * função utilizada para capturar um valor específico em um intervalo dinamico
- *
- * @see {@link https://developers.google.com/apps-script/guides/html/reference/run }
- *
- * @param {Spreadsheet} sourceSheet a planilha onde se encontra o intervalo
- * @param {string} value o valor a ser procurado
- * @param {string} pagina a pagina onde procurar
- * @param {string} a coluna onde procurar
- * @returns {int}
- */
- function queryValueInDynamicRange(sourceSheet,valor,paginaReferencia, colunaReferencia) {
- //determina a sourceSheet
- Logger.log("pesquisando " + valor + " em " + paginaReferencia + " coluna " + colunaReferencia);
- let planilha = sourceSheet; //caputra a planilha
- Logger.log("capturando a planilha: " + planilha.getName());
- let pagina = planilha.getSheetByName(paginaReferencia); //captura a pagina
- Logger.log("capturando a página: " + pagina.getName());
- Logger.log("contando total de linhas...");
- let totalLinhas = pagina.getMaxRows();
- Logger.log("total: " + totalLinhas);
- range = pagina.getRange(colunaReferencia + "2" + ":" + colunaReferencia + totalLinhas).getValues();
- Logger.log("pesquisando no intervalo: " + range);
- Logger.log("considerando " + range);
- for(let i = 0; i<range.length;i++) { //busca o valor dentro do intervalo
- //Logger.log(i);
- if(range[i] == valor){ //se o valor for encontrado
- let retorno = parseInt(i) + 2;
- Logger.log(("encontramos em " + retorno))
- return i+2; //retorna a linha, +2 pois inicia-se em 0 e na segunda linha
- }
- }
- }
- function indexCelula(sourceSheet, paginaReferencia, colunaReferencia, linhaReferencia) { //retorna o valor de uma celula exata
- Logger.log("sourceSheet= " + sourceSheet);
- Logger.log("paginaReferencia= " + paginaReferencia);
- Logger.log("colunaReferencia= " + colunaReferencia);
- Logger.log("linhaReferencia= " + linhaReferencia);
- if(linhaReferencia == undefined) {
- return "não encontrado";
- }
- //determina a sourceSheet
- if(sourceSheet == planilhaRh) {
- sourceSheet = planilhaRh;
- }
- else if(sourceSheet == planilhaEstrutura) {
- sourceSheet = planilhaEstrutura;
- }
- else if(sourceSheet == "planilha"){
- sourceSheet = planilha;
- }
- else{
- sourceSheet = sourceSheet;
- }
- Logger.log("retornando valor em " + sourceSheet.getName() + " página: " + paginaReferencia + " célula " + colunaReferencia + linhaReferencia);
- let planilha = sourceSheet; //caputra a planilha
- Logger.log("capturando a planilha: " + sourceSheet.getName());
- let pagina = planilha.getSheetByName(paginaReferencia); //captura a pagina
- Logger.log("capturando a página: " + pagina.getName());
- Logger.log("capturando célula " + colunaReferencia + linhaReferencia);
- let resultado = pagina.getRange(colunaReferencia + linhaReferencia).getValues();
- Logger.log("capturando valor...");
- Logger.log("resultado: " + resultado);
- return resultado;
- }
- function reverseQueryValueInNamedRangeDB(value,namedRange) {
- Logger.log("pesquisando " + value + " em " + namedRange)
- let data = planilha.getRangeByName(namedRange).getValues().filter(String); //captura os valores do intervalo nomeado
- Logger.log("considerando " + data)
- for(let i = data.length-1; i>=0; i--) { //busca reversa do valor value dentro do intervalo
- Logger.log(i);
- if(data[i] == value){ //se o valor for encontrado
- let retorno = parseInt(i) + 2;
- Logger.log(("encontramos em " + retorno))
- return retorno; //retorna a linha, +2 pois inicia-se em 0 e na segunda linha
- }
- }
- }
- //QUERY <
- //REGISTRO >
- //funções de registro gravam dados dentro das planilhas
- /**
- *
- * registra os valores na página(aba) de destino
- *
- * @see {@link https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en }
- *
- * @param {string} destino a folha(aba) de destino
- * @param {string} a lista de valores a serem inseridos
- *
- * @returns {null}
- *
- */
- function gravarNaPlanilha(destino, valores) {
- valores = valores.split(','); //recebe a lista dos valores, uma string, e transforma em um array
- let id = Utilities.getUuid(); //gera uma id
- let data = Utilities.formatDate(new Date(), planilha.getSpreadsheetTimeZone(), "dd/MM/yyyy kk:mm") //determina data atual
- let aprovado = false;
- valores.unshift(id); //adiciona id ao começo do array
- valores.push(data); //adiciona a data no final do array
- Logger.log("colocarei " + valores + " na planilha " + destino)
- planilha.getSheetByName(destino).appendRow(valores); //adiciona uma linha na folha de destino com os valores recebido
- return id; // retorna a nova id gerada;
- }
- /**
- *
- * registra os valores na página(aba) de destino
- *
- * @see {@link https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app?hl=en }
- *
- * @param {Spreadsheet} sourceSheet a planilha onde se encontra o intervalo
- * @param {string} destino a folha(aba) de destino
- * @param {string} a lista de valores a serem inseridos
- *
- * @returns {null}
- *
- */
- function gravarNaPlanilhaSistema(sourceSheet,destino, valores) {
- Logger.log(valores);
- let id = Utilities.getUuid(); //gera uma id
- let data = Utilities.formatDate(new Date(), sourceSheet.getSpreadsheetTimeZone(), "dd/MM/yyyy kk:mm") //determina data atual
- valores.unshift(id); //adiciona id ao começo do array
- valores.push(idColaborador); //adiciona responsavelRegistro no final do array
- valores.push(data); //adiciona a data no final do array
- Logger.log("colocarei " + valores + " na planilha " + destino)
- //determina a sourceSheet
- if(sourceSheet == planilhaRh) {
- sourceSheet = planilhaRh;
- }
- else if(sourceSheet == planilhaEstrutura) {
- sourceSheet = planilhaEstrutura;
- }
- else if(sourceSheet == "planilha"){
- sourceSheet = planilha;
- }
- else{
- sourceSheet = sourceSheet;
- }
- sourceSheet.getSheetByName(destino).appendRow(valores); //adiciona uma linha na folha de destino com os valores recebido
- return id;
- }
- /**
- *
- * receber todos arrays e registra nas tabelas
- *
- */
- function finalizarFormulario(arrayInfoGer,arrayDadosProfissionais , arrayFuncoes, arrayPFis, arrayFormaPagamento, arrayNotaFiscal, arrayRPA, arrayDadosBancGerais, arrayBancNF, arrayBancRPA) {
- Logger.log("listando arrays:");
- Logger.log("arrayInfoGer");
- Logger.log(arrayInfoGer);
- Logger.log("arrayDadosProfissionais");
- Logger.log(arrayDadosProfissionais);
- Logger.log("arrayFuncoes");
- Logger.log(arrayFuncoes);
- Logger.log("arrayPFis");
- Logger.log(arrayPFis);
- Logger.log("arrayFormaPagamento");
- Logger.log(arrayFormaPagamento);
- Logger.log("arrayNotaFiscal");
- Logger.log(arrayNotaFiscal);
- Logger.log("arrayRPA");
- Logger.log(arrayRPA);
- Logger.log("arrayDadosBancGerais");
- Logger.log(arrayDadosBancGerais);
- Logger.log("arrayBancNF");
- Logger.log(arrayBancNF);
- Logger.log("arrayBancRPA");
- Logger.log(arrayBancRPA);
- //nomeia os valores dos vetores
- Logger.log("nomeando valores...");
- //captura informações gerais
- //arrayInfoGer = [nomeCompleto,nomeArtistico,ddd,telefone,email,foto];
- let nome = arrayInfoGer[0];
- nome = capitalizeWords(nome); //deixa nome com letras maiusculas
- let nomeArtistico = arrayInfoGer[1];
- nomeArtistico = capitalizeWords(nomeArtistico); //deixa nome com letras maiusculas
- let ddd = arrayInfoGer[2];
- let telefone = arrayInfoGer[3];
- let email = arrayInfoGer[4];
- let foto = arrayInfoGer[5];
- // captura os valores dos dados profissionais
- //arrayDadosProfissionais = [profissao,curriculo];
- let profissao = arrayDadosProfissionais[0];
- profissao = profissao.toLowerCase(); //corrige
- let curriculo = arrayDadosProfissionais[1];
- // as funções ficam no array 2d descrito a seguir
- // funcoesArrayGeral
- funcoesArrayGeral = arrayFuncoes;
- // captura os valores dos dados pessoa física
- //arrayPFis = [pfRG,pfCPF,dataNascimento,identidadeGenero,estadoCivil,nacionalidade,outraNacionalidade,pfCEP,pfEstado,pfCidade,pfBairro,pfEndereco,pfNumero,pfComplemento,restricaoAlimentar,outraRestricao];
- let pfRG = arrayPFis[0];
- let pfCPF = arrayPFis[1];
- let dataNascimento = arrayPFis[2];
- let identidadeGenero = arrayPFis[3];
- let estadoCivil = arrayPFis[4];
- let nacionalidade = arrayPFis[5];
- let outraNacionalidade = arrayPFis[6];
- outraNacionalidade = outraNacionalidade.toLowerCase(); //corrige
- let pfCEP = arrayPFis[7];
- let pfEstado = arrayPFis[8];
- pfEstado = pfEstado.toUpperCase(); //corrige para buscas
- let pfCidade = arrayPFis[9];
- pfCidade = capitalizeWords(pfCidade); //corrige para buscas
- let pfBairro = arrayPFis[10];
- pfBairro = pfBairro.toLowerCase(); //corrige
- let pfEndereco = arrayPFis[11];
- pfEndereco = pfEndereco.toLowerCase(); //corrige
- let pfNumero = arrayPFis[12];
- let pfComplemento = arrayPFis[13];
- pfComplemento = pfComplemento.toLowerCase(); //corrige
- let restricaoAlimentar = arrayPFis[14];
- let outraRestricao = arrayPFis[15];
- outraRestricao = outraRestricao.toLowerCase(); //corrige
- // captura dados da forma de pagamento
- //arrayFormaPagamento = [formaPagamento];
- let formaPagamento = arrayFormaPagamento[0];
- // captura dados da nota fiscal
- //arrayNotaFiscal = [razaoSocial,nomeFantasia,nfCNPJ,nfCEp,nfEstado,nfCidade,nfBairro,nfEndereco,nfNumero,nfComplemento];
- let razaoSocial = arrayNotaFiscal[0];
- razaoSocial = capitalizeWords(razaoSocial); //deixa nome com letras maiusculas
- let nomeFantasia = arrayNotaFiscal[1];
- nomeFantasia = capitalizeWords(nomeFantasia); //deixa nome com letras maiusculas
- let nfCNPJ = arrayNotaFiscal[2];
- let nfCEP = arrayNotaFiscal[3];
- let nfEstado = arrayNotaFiscal[4];
- nfEstado = nfEstado.toUpperCase(); //corrige para buscas
- let nfCidade = arrayNotaFiscal[5];
- nfCidade = capitalizeWords(nfCidade); //corrige para buscas
- let nfBairro = arrayNotaFiscal[6];
- nfBairro = nfBairro.toLowerCase(); //corrige para buscas
- let nfEndereco = arrayNotaFiscal[7];
- nfEndereco = nfEndereco.toLowerCase(); //corrige para buscas
- let nfNumero = arrayNotaFiscal[8];
- let nfComplemento = arrayNotaFiscal[9];
- nfComplemento = nfComplemento.toLowerCase(); //corrige para buscas
- // captura dados de RPA
- //arrayRPA = [cor,naturalidade,grauInstrucao,inscricaoINSS];
- let cor = arrayRPA[0];
- let naturalidade = arrayRPA[1];
- naturalidade = naturalidade.toLowerCase(); //corrige para buscas
- let grauInstrucao = arrayRPA[2];
- let inscricaoINSS = arrayRPA[3];
- // captura dados bancarios gerais
- //arrayDadosBancGerais = [banco,agencia,conta];
- let banco = arrayDadosBancGerais[0];
- let agencia = arrayDadosBancGerais[1];
- let conta = arrayDadosBancGerais[2];
- //captura dados bancarios de Nota Fiscal
- //arrayBancNF = [cpf_cnpj,titular,bancCNPJ,bancCPFNF];
- let cpf_cnpj = arrayBancNF[0];
- let titular = arrayBancNF[1];
- Logger.log("titular: " + titular);
- titular = capitalizeWords(titular); //deixa nome com letras maiusculas
- // caso CNPJ
- let bancCNPJ = arrayBancNF[2];
- // caso CPF
- let bancCPFNF = arrayBancNF[3];
- //captura dados bcancarios de RPA
- //arrayBancRPA = [bancCPFRPA];
- let bancCPFRPA = arrayBancRPA[0];
- // REGISTRA OS DADOS >>
- Logger.log("registando dados...");
- Logger.log("COLABORADORES");
- // COLABORADOR >>
- // CRIAÇÃO DO ARRAY >>
- Logger.log("gerando array de colaboradores");
- let arrayColaboradores = []; // gera o array de base para COLABORADORES
- let vinculo = "fornecedor"; //nomeia para facilidade de leitura
- arrayColaboradores.push(vinculo);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- Logger.log("gravando a foto " + foto);
- if(foto != "falha de arquivo"){
- foto = saveFile(foto, pastaImagemColaboradores,enderecoImagemColaboradores);
- }
- Logger.log(foto);
- arrayColaboradores.push(foto);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- Logger.log("adicionando de nome até estadoCivil");
- arrayColaboradores.push(nome);
- arrayColaboradores.push(nomeArtistico);
- arrayColaboradores.push(ddd);
- arrayColaboradores.push(telefone);
- arrayColaboradores.push(email);
- arrayColaboradores.push(pfRG);
- arrayColaboradores.push(pfCPF);
- arrayColaboradores.push(dataNascimento);
- arrayColaboradores.push(identidadeGenero);
- arrayColaboradores.push(estadoCivil);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- Logger.log("tratando os dados...");
- // trata nacionalidade
- Logger.log("verificando nacionalidade...");
- if(nacionalidade == "outra") {
- Logger.log("é uma nova nacionalidade: " + outraNacionalidade);
- vetorNovaNacionalidade = [outraNacionalidade]; //gera o vetor
- nacionalidade = gravarNaPlanilhaSistema(planilhaRh,"NACIONALIDADES", vetorNovaNacionalidade) //adiciona novo registro e pega a id
- }
- else if(nacionalidade != "outra"){
- Logger.log("nacionalidade existente: " + nacionalidade);
- Logger.log("procurando id da nacionalidade...");
- nacionalidadeLinha = queryValueInDynamicRange(planilhaRh,nacionalidade,"NACIONALIDADES", "B");
- Logger.log("encontrada na linha: " + nacionalidadeLinha);
- Logger.log("retornando id da nacionalidade");
- nacionalidade = String(indexCelula(planilhaRh, "NACIONALIDADES", "A", nacionalidadeLinha));
- }
- Logger.log("a id retornada é: " + nacionalidade);
- arrayColaboradores.push(nacionalidade);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- // trata estado
- estado = pfEstado; //facilita leitura
- Logger.log("procurando id do estado...");
- estadoLinha = queryValueInDynamicRange(planilhaEstrutura,estado,"ESTADOS", "C")
- Logger.log("encontrada na linha: " + estadoLinha);
- Logger.log("retornando id do estado");
- estado = String(indexCelula(planilhaEstrutura, "ESTADOS", "A", estadoLinha));
- Logger.log("a id retornada é: " + estado);
- arrayColaboradores.push(estado);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- // trata cidade
- cidade = pfCidade; // facilita leitura
- Logger.log("procurando id da cidade...");
- cidadeLinha = queryValueInDynamicRange(planilhaEstrutura,cidade,"CIDADES", "C")
- Logger.log("encontrada na linha: " + cidadeLinha);
- Logger.log("retornando id da cidade");
- cidade = String(indexCelula(planilhaEstrutura, "CIDADES", "A", cidadeLinha));
- Logger.log("a id retornada é: " + cidade);
- arrayColaboradores.push(cidade);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- Logger.log("adicionando de bairro até cep");
- arrayColaboradores.push(pfBairro);
- arrayColaboradores.push(pfEndereco);
- arrayColaboradores.push(pfNumero);
- arrayColaboradores.push(pfComplemento);
- arrayColaboradores.push(pfCEP);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- let empresa = ""; //incializa empresa como vazio
- Logger.log("dados casos seja nota fiscal:");
- if(formaPagamento == "nota fiscal") {
- //CRIA UMA NOVA EMPRESA
- Logger.log("forma de pagamento é nota fiscal");
- let arrayEmpresa = []; //cria o array base para nova empresa
- Logger.log("adicionando razaoSocial até cnpj");
- arrayEmpresa.push(""); //logo
- arrayEmpresa.push(razaoSocial);
- arrayEmpresa.push(nomeFantasia);
- arrayEmpresa.push(false); //cliente
- arrayEmpresa.push(""); //categoriaCliente
- arrayEmpresa.push(""); //subcategoriaCliente
- arrayEmpresa.push(true); //fornecedor
- arrayEmpresa.push(nfCNPJ);
- Logger.log("array no momento:");
- Logger.log(arrayEmpresa);
- // trata estado
- estado = nfEstado; // facilita leitura
- Logger.log("procurando id do estado...");
- estadoLinha = queryValueInDynamicRange(planilhaEstrutura,estado,"ESTADOS", "C")
- Logger.log("encontrada na linha: " + estadoLinha);
- Logger.log("retornando id do estado");
- estado = String(indexCelula(planilhaEstrutura, "ESTADOS", "A", estadoLinha));
- Logger.log("a id retornada é: " + estado);
- arrayEmpresa.push(estado);
- Logger.log("array no momento:");
- Logger.log(arrayEmpresa);
- // trata cidade
- cidade = nfCidade; // facilita leitura
- Logger.log("procurando id da cidade...");
- cidadeLinha = queryValueInDynamicRange(planilhaEstrutura,cidade,"CIDADES", "C")
- Logger.log("encontrada na linha: " + cidadeLinha);
- Logger.log("retornando id da cidade");
- cidade = String(indexCelula(planilhaEstrutura, "CIDADES", "A", cidadeLinha));
- Logger.log("a id retornada é: " + cidade);
- arrayEmpresa.push(cidade);
- Logger.log("array no momento:");
- Logger.log(arrayEmpresa);
- Logger.log("adicionando bairro até cep");
- arrayEmpresa.push(nfBairro);
- arrayEmpresa.push(nfEndereco);
- arrayEmpresa.push(nfNumero);
- arrayEmpresa.push(nfComplemento);
- arrayEmpresa.push(nfCEP);
- Logger.log("array no momento:");
- Logger.log(arrayEmpresa);
- Logger.log("array gerado: " + arrayEmpresa);
- idEmpresa = gravarNaPlanilhaSistema(planilhaPlanejamento,"EMPRESAS", arrayEmpresa); //adiciona novo registro e pega a id
- Logger.log("nova empresa id: " + idEmpresa);
- //anula valores de RPA
- cor = "";
- naturalidade = "";
- grauInstrucao = "";
- inscricaoINSS = "";
- empresa = idEmpresa; //atribui id da empresa gerada
- }
- arrayColaboradores.push(empresa); //adiciona valor da empresa, seja "" ou idEmpresa
- //insere dados bancários gerais
- // trata banco
- Logger.log("procurando id do banco...");
- bancoLinha = queryValueInDynamicRange(planilhaRh,banco,"BANCOS", "B")
- Logger.log("encontrada na linha: " + bancoLinha);
- Logger.log("retornando id da banco");
- banco = String(indexCelula(planilhaRh, "BANCOS", "A", bancoLinha));
- Logger.log("a id retornada é: " + banco);
- arrayColaboradores.push(banco);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- arrayColaboradores.push(agencia);
- arrayColaboradores.push(conta);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- //insere outros dados da conta
- if(formaPagamento == "nota fiscal") {
- arrayColaboradores.push(titular);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- //insere CPF OU CNPJ
- if(cpf_cnpj == "cnpj") {
- arrayColaboradores.push(cpf_cnpj);
- arrayColaboradores.push(""); //contaCPF
- arrayColaboradores.push(bancCNPJ);
- }
- else {
- arrayColaboradores.push(cpf_cnpj);
- arrayColaboradores.push(bancCPFNF);
- arrayColaboradores.push(""); //contaCNPJ
- }
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- }
- else if(formaPagamento == "rpa") {
- arrayColaboradores.push("cpf");
- arrayColaboradores.push(bancCPFRPA);
- arrayColaboradores.push(""); //contaCNPJ
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- }
- // trata restrição alimentar
- Logger.log("verificando restrição alimentar...");
- if(restricaoAlimentar == "outra") {
- Logger.log("é uma nova restrição: " + outraRestricao);
- vetorNovaRestricao = [outraRestricao]; //gera o vetor
- restricaoAlimentar = gravarNaPlanilhaSistema(planilhaRh,"RESTRICOES_ALIMENTARES", vetorNovaRestricao) //adiciona novo registro e pega a id
- }
- else if(restricaoAlimentar != "outra"){
- Logger.log("restrição existente: " + restricaoAlimentar);
- Logger.log("procurando id da restrição...");
- restricaoLinha = queryValueInDynamicRange(planilhaRh,restricaoAlimentar,"RESTRICOES_ALIMENTARES", "B")
- Logger.log("encontrada na linha: " + restricaoLinha);
- Logger.log("retornando id da nacionalidade");
- restricaoAlimentar = String(indexCelula(planilhaRh, "RESTRICOES_ALIMENTARES", "A", restricaoLinha));
- }
- Logger.log("a id retornada é: " + restricaoAlimentar);
- arrayColaboradores.push(restricaoAlimentar);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- // id vinculo foto nome nomeArtistico ddd telefone email rg cpf dataNascimento identidadeGenero estadoCivil nacionalidade estado cidade bairro logradouro numero complemento cep empresa contaBanco contaAgencia contaConta contaNome contaCPF_CNPJ contaCPF contaCNPJ restricoesAlimentares profissao curriculo *formaPagamento cor naturalidade grauInstrucao nInss resposavelRegistro dataRegistro
- arrayColaboradores.push(profissao);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- Logger.log("gravando o currículo " + curriculo);
- if(curriculo != "falha de arquivo"){
- curriculo = saveFile(curriculo, pastaFilesColaboradores,enderecoFilesColaboradores);
- }
- Logger.log(curriculo);
- arrayColaboradores.push(curriculo);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- arrayColaboradores.push(formaPagamento);
- arrayColaboradores.push(cor);
- arrayColaboradores.push(naturalidade);
- arrayColaboradores.push(grauInstrucao);
- arrayColaboradores.push(inscricaoINSS);
- Logger.log("array no momento:");
- Logger.log(arrayColaboradores);
- Logger.log("array gerado: " + arrayColaboradores);
- idPrestadorServico = gravarNaPlanilhaSistema(planilhaRh,"COLABORADORES", arrayColaboradores) //adiciona novo registro e pega a id
- Logger.log("novo colaborador id: " + idPrestadorServico);
- // COLABORADOR <<
- // FUNCOES_COLABORADORES >>
- //LOOPING DE CRIAR FUNCOES >>
- Logger.log("percorrendo o array de funções: " + funcoesArrayGeral);
- for (let i = 0; i < funcoesArrayGeral.length; i++) {
- Logger.log("iteração: " + i);
- Logger.log("detalhes da função: " + funcoesArrayGeral[i]);
- //vetorFuncao = geraVetorFuncao(funcoesFuncao,funcoesEquipamentoPropio, funcoesSoftwares, funcoesExpectativaValor,funcoesUnidadeMedida, funcoesPortifolio1,funcoesPortifolio2,funcoesPortifolio3);
- // TRATAMENTO DE DADOS >>
- // trata função
- funcao = funcoesArrayGeral[i][0]; //torna mais legivel
- Logger.log("procurando id da função " + funcao);
- funcaoLinha = queryValueInDynamicRange(planilhaRh,funcao,"FUNCOES", "C");
- Logger.log("encontrada na linha: " + funcaoLinha);
- Logger.log("retornando id da função");
- funcao = String(indexCelula(planilhaRh, "FUNCOES", "A", funcaoLinha));
- Logger.log("a id retornada é: " + funcao);
- // determina categoria
- let categoria = String(indexCelula(planilhaRh, "FUNCOES", "B", funcaoLinha));
- // atribui nomes mais legiveis
- portifolio = funcoesArrayGeral[i][5];
- portifolio2 = funcoesArrayGeral[i][6];
- portifolio3 = funcoesArrayGeral[i][7];
- equipamentoProprio = funcoesArrayGeral[i][1];
- software = funcoesArrayGeral[i][2];
- expectativaValor = funcoesArrayGeral[i][3];
- // trata unidade de medida
- unidadeMedida = funcoesArrayGeral[i][4]; //torna mais legivel
- if(unidadeMedida == "outra") {
- Logger.log("é uma nova unidade de medida: " + outraUMSingular );
- vetorNovaUnidade = [outraUMSingular , outraUMPlural]; //gera o vetor
- unidadeMedida = gravarNaPlanilhaSistema(planilhaEstrutura,"UNIDADES_MEDIDA", vetorNovaUnidade) //adiciona novo registro e pega a id
- }
- else if(unidadeMedida != "outra"){
- Logger.log("unidade existente: " + unidadeMedida);
- Logger.log("procurando id da unidade...");
- unidadeLinha = queryValueInDynamicRange(planilhaEstrutura,unidadeMedida,"UNIDADES_MEDIDA", "B")
- Logger.log("encontrada na linha: " + unidadeLinha);
- Logger.log("retornando id da unidade");
- unidadeMedida = String(indexCelula(planilhaEstrutura, "UNIDADES_MEDIDA", "A", unidadeLinha));
- }
- // TRATAMENTO DE DADOS <<
- let arrayFuncao = []; // gera o array de base para PRESTADOR_FUNCAO
- Logger.log("gerando array de função " + i);
- arrayFuncao.push(idPrestadorServico, categoria, funcao, portifolio, portifolio2, portifolio3, equipamentoProprio, software, expectativaValor, unidadeMedida);
- Logger.log("array gerado: " + arrayFuncao);
- idPrestadorFuncao = gravarNaPlanilhaSistema(planilhaRh,"FUNCOES_COLABORADORES", arrayFuncao) //adiciona novo registro e pega a id
- Logger.log("novo função id: " + idPrestadorFuncao + " adicionada ao prestador: " + idPrestadorServico);
- }
- //LOOPING DE CRIAR FUNCOES <<
- // FUNCOES_COLABORADORES <<
- // CAPTURAS DE DADOS <<
- Logger.log("gravação finalizada");
- }
- // EXTERNAS
- /**
- *
- * salva arquivo no drive
- *
- *
- */
- function saveFile(e, destino, endereco) {
- if(e == null) {
- return "falha de arquivo";
- }
- Logger.log("pre-file: " + e);
- let blob = Utilities.newBlob(e.bytes, e.mimeType, e.filename);
- Logger.log("blob: " + blob);
- let file = DriveApp.createFile(blob);
- Logger.log("file: " + file);
- let nome = file.getName();
- Logger.log("nome: " + nome);
- Logger.log("endereço: " + endereco)
- file.moveTo(DriveApp.getFolderById(destino));
- //let fileURL = file.getUrl();
- let fileURL = endereco + nome;
- Logger.log(fileURL);
- return fileURL;
- }
- function capitalizeWords(str) {
- return str.toLowerCase().split(' ').map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
- }
- function test() {
- Logger.log(DriveApp.getFolderById(pastaImagemColaboradores));
- }
Add Comment
Please, Sign In to add comment