Seguidores

sábado, 26 de abril de 2025

Do Caos ao Prompt T4E13: Desenvolvimento do App AG2P - Evento "Fechou RDM"

INTRODUÇÃO

Post anterior: Do Caos ao Prompt T4E12: Desenvolvimento do App AG2P - Evento "Avaliou a capacidade do processo"

Este Post é o episódio 13 da temporada 4 da série "Do Caos ao Prompt", que apresenta o desenvolvimento do Agente de Gestão de Processo Pessoal (AG2P), tendo como foco o evento "Fechou RDM".


Evento “Fechou RDM”

Link da conversa com o Gemini, na qual foi apresentado um Prompt contendo os itens Objetivo, Contexto, Ferramentas e Especificações, para geração do código para implementar o evento
"Fechou RDM": https://g.co/gemini/share/f701ca6c3aa5


Comando ao Gemini para solicitar a implementação do evento

Objetivo, Contexto e Ferramentas

Clique aqui para  ver os itens Objetivo, Contexto e Ferramentas do Comando.

Especificações

Segue abaixo o post da temporada 3 desta série, que contém as especificações do evento "Fechou RDM", que faz parte deste comando:

Do Caos ao Prompt T3E14: Estrutura do Agente AG2P - Diálogo 12 Evento "Fechou RDM" dispara Ação "Encerrar jornada"

As especificações do evento foram feitas com Finite State Machine (FSM), de tal forma que cada evento pode ser automatizado e testado de forma independente.

Resposta do Gemini


/**
 * Automatiza o evento "Fechou RDM" no fluxo de trabalho.
 *
 * O script verifica o estado atual na aba "GPS" e, se for "RDM Antes do fim",
 * atualiza o estado para "RDM Fechada".
 */
function eventoFechouRDM() {
  // Nome da planilha e das abas
  const nomePlanilha = "GPS";
  const abaGPSNome = "GPS";
  const abaRDMNome = "RDM";

  // Coluna onde o estado da RDM é armazenado (T1)
  const colunaEstadoRDM = 20; // Coluna T é a 20ª

  // Obtém a planilha pelo nome
  const planilha = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(abaGPSNome);

  if (!planilha) {
    Logger.log(`A aba "${abaGPSNome}" não foi encontrada na planilha "${nomePlanilha}".`);
    return;
  }

  // Obtém a aba RDM
  const abaRDM = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(abaRDMNome);

  if (!abaRDM) {
    Logger.log(`A aba "${abaRDMNome}" não foi encontrada na planilha "${nomePlanilha}".`);
    return;
  }

  // Obtém o estado atual da RDM na aba RDM (assumindo que o estado está na primeira linha)
  // *** ATENÇÃO: Ajuste a lógica para encontrar a célula correta do estado da RDM na aba RDM ***
  const estadoAtualRDM_abaRDM = abaRDM.getRange("T1").getValue(); // Assumindo célula T1

  // Verifica se o estado atual é "RDM Antes do fim" (R46)
  if (estadoAtualRDM_abaRDM === "RDM Antes do fim") {
    // Executa a ação "Encerrar jornada" - Atualiza o Estado da aba RDM para "RDM Fechada" (R46)
    // *** ATENÇÃO: Ajuste a lógica para encontrar a célula correta do estado da RDM na aba RDM ***
    abaRDM.getRange("T1").setValue("RDM Fechada");
    Logger.log('Evento "Fechou RDM" executado. Estado da RDM atualizado para "RDM Fechada".');
  } else {
    Logger.log(`O evento "Fechou RDM" não pôde ser executado. O estado atual da RDM (${estadoAtualRDM_abaRDM}) não é "RDM Antes do fim".`);
  }

  // Após a execução, o app fica esperando outro evento. (Não há ação explícita para isso em Apps Script)
}

Explicação do Código:

  1. function eventoFechouRDM() { ... }: Define a função que será executada quando o evento "Fechou RDM" for disparado.

  2. const nomePlanilha = "GPS";, const abaGPSNome = "GPS";, const abaRDMNome = "RDM";: Define constantes para os nomes da planilha e das abas, facilitando a manutenção do código.

  3. const colunaEstadoRDM = 20;: Define a coluna onde o estado da RDM é armazenado (coluna T, que é a 20ª).

  4. const planilha = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(abaGPSNome);: Obtém uma referência à planilha ativa pelo nome especificado.

  5. if (!planilha) { ... }: Verifica se a aba "GPS" foi encontrada na planilha. Se não, registra um log e encerra a função.

  6. const abaRDM = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(abaRDMNome);: Obtém uma referência à aba "RDM".

  7. if (!abaRDM) { ... }: Verifica se a aba "RDM" foi encontrada. Se não, registra um log e encerra a função.

  8. const estadoAtualRDM_abaRDM = abaRDM.getRange("T1").getValue();: Importante: Esta linha assume que o estado da RDM na aba "RDM" está localizado na célula T1. Você precisará ajustar essa lógica para identificar corretamente a célula que contém o estado da RDM na sua aba "RDM". Pode ser necessário percorrer linhas ou usar outra lógica de identificação.

  9. if (estadoAtualRDM_abaRDM === "RDM Antes do fim") { ... }: Verifica se o estado atual da RDM (obtido da aba "RDM") é igual a "RDM Antes do fim", conforme a regra R46.

  10. abaRDM.getRange("T1").setValue("RDM Fechada");: Se a condição for verdadeira, esta linha atualiza o valor da célula de estado da RDM (novamente, assumindo que seja T1) para "RDM Fechada", cumprindo a ação "Encerrar jornada" e a regra R46.

  11. Logger.log(...): Registra mensagens no log de execução do Google Apps Script para acompanhar o fluxo e eventuais problemas.

  12. else { ... }: Se o estado atual não for "RDM Antes do fim", um log é registrado informando que a ação não pôde ser executada.

  13. // Após a execução, o app fica esperando outro evento.: Este é um comportamento passivo do Google Apps Script. Após a execução da função, ele aguardará o próximo evento que for configurado para acionar outro script ou a mesma função novamente.

Como usar este código:

  1. Abra sua planilha "GPS" no Google Sheets.
  2. Vá em "Ferramentas" > "Editor de script".
  3. Cole o código na janela do editor de script.
  4. Modifique a linha const estadoAtualRDM_abaRDM = abaRDM.getRange("T1").getValue(); e a linha abaRDM.getRange("T1").setValue("RDM Fechada"); para corresponder à célula correta onde o estado da RDM é armazenado na sua aba "RDM".
  5. Salve o script (dê um nome a ele, por exemplo, AutomacaoRDM).

Como acionar este evento:

Para que este script seja executado quando o evento "Fechou RDM" acontecer, você precisará de uma maneira de dispará-lo. Algumas opções comuns em Google Sheets incluem:

  • Botão na planilha: Insira um botão na sua planilha "GPS" e atribua este script a ele. Quando o usuário clicar no botão, a função eventoFechouRDM() será executada.
  • Menu personalizado: Crie um menu personalizado na sua planilha que contenha uma opção para "Fechar RDM" e atribua este script a essa opção.
  • Evento de formulário (se aplicável): Se a interação "Fechou RDM" estiver ligada a um envio de formulário, você pode usar um acionador "Ao enviar formulário" para executar este script.
  • Acionadores baseados em tempo: Embora menos provável para este tipo de evento, você pode configurar um acionador para executar o script em um horário específico ou com uma frequência definida.

Recomendações:

  • Localização do Estado da RDM: Certifique-se de identificar com precisão onde o estado da RDM ("RDM Antes do fim") é armazenado na sua aba "RDM". O código fornecido assume a célula T1, mas isso pode não ser correto.
  • Tratamento de Erros: Para um script mais robusto, você pode adicionar mais tratamento de erros, como verificar se as células de estado realmente existem e o que fazer se o valor encontrado for inesperado.
  • Interface do Usuário: Para uma melhor experiência do usuário, considere criar uma interface mais intuitiva (como um diálogo personalizado no Google Sheets ou um aplicativo HTML Service) para disparar os eventos em vez de depender diretamente de botões ou menus na planilha.

Lembre-se de adaptar o código para a estrutura exata da sua planilha "GPS" e da aba "RDM".

CONCLUSÃO

Neste episódio 13, da temporada 4 da série "Do Caos ao Prompt", foi apresentada a implementação do Evento "Fechou RDM", realizada pelo Chatbot de IA Gemini 2.0 Flash.

As especificações do evento foram feitas em Finite State Machine (FSM).

Próximo post: Do Caos ao Prompt T5E01: Teste do App AG2P - Evento "Abriu RDM"

Veja a lista de Episódios da Temporada 4 da Série "Do Caos ao Prompt", no final do Episódio T4E01.

Nenhum comentário:

Postar um comentário

Entendendo a Metáfora "Home Office é Moto Boy"

Dashboard de Produtividade Pessoal T1E14: RESOLVIDO BugCT1-5 Erro 400 no login

INTRODUÇÃO Post anterior:  Dashboard de Produtividade Pessoal T1E13: BugCT1-5 Erro 400 no login O objetivo deste post é apresentar um prompt...