Este Post é o episódio 3 da temporada 5 da série "Do Caos ao Prompt", que apresenta melhorias nas especificações da interface do usuário, para o Agente de Gestão de Processo Pessoal (AG2P), com foco no evento "Abriu RDM".
Essa melhoria foi necessária por falta de integridade nas especificações encaminhadas para o Chatbot de IA Gemini, ou seja, as informações estavam incompletas.
Mesmo com informações incompletas, o Chatbot de IA gerou o código do Apps Scritp, só que o resultado ficou diferente do esperado.
Portanto, as melhorias serão realizadas nas especificações, o código será gerado outra vez e os testes serão repetidos.
Link da conversa com o Gemini, na qual foi apresentado um Prompt contendo os itens:
O objetivo desta implementação é preencher uma lacuna que foi encontrada pelo Chatbot de IA Gemini, no comportamento do usuário e do aplicativo, antes do evento “Abriu RDM”.
Para isso, foi criada uma aba identificada por "Interface do Usuário", na planilha GPS.
Estrutura de dados para o evento "Abriu RDM"
Esta estrutura contém apenas as abas e colunas necessárias e suficientes para implementar o evento "Abriu RDM".
Aba "Interface do Usuário"
A regra que define as colunas da aba "Interface do Usuário" é identificada por Regra_01_FrontEnd.
Coluna A(Necessidades do usuário)
Contém as ações que o usuário precisa executar ao longo do fluxo de trabalho. Essas ações são fixas e não podem ser editadas.
Coluna B(Evento)
Contém, para cada necessidade do usuário, o evento que o usuário precisa disparar para acionar o aplicativo AG2P. Esses eventos não podem ser editados.
Coluna C(Situação do Evento)
Contém, para cada evento, a situação em que o mesmo se encontra, podendo ser:
- EVENTO PLANEJADO
- EVENTO EM EXECUÇÃO
- EVENTO EXECUTADO
Essas situações podem ser selecionadas tanto pelo usuário como pelo aplicativo AG2P.
Coluna D(Estado Atual)
Contém, para cada evento, o estado do aplicativo AG2P, antes do evento ser iniciado. Isto significa que o evento só pode iniciar, se o aplicativo estiver naquele estado.
Coluna E(Próximo Estado)
Contém, para cada evento, o estado do aplicativo AG2P, após o evento ser encerrado com sucesso. Isto significa que o evento sempre causará a mudança do estado atual para o próximo estado.
Exemplo da aba Interface do Usuário da planilha GPS
Necessidades do usuário Evento Situação do evento Estado Atual Próximo Estado
Iniciar a jornada Abriu planilhas GPS EVENTO PLANEJADO N/a Após início
Iniciar a jornada - Inicializar RDM Abriu RDM EVENTO PLANEJADO Após início RDM Inicializada
Fazer o plano do dia Recebeu lista de tarefas a fazer EVENTO PLANEJADO RDM Inicializada RDM Ativa
Executar uma tarefa Iniciou tarefa do negócio EVENTO PLANEJADO RDM Ativa RDM Ativa
Registrar o encerramento da tarefa Terminou tarefa do negócio EVENTO PLANEJADO RDM Ativa RDM Ativa
Registrar um erro Ocorreu um incidente EVENTO PLANEJADO RDM Ativa RDM Ativa
Registrar hora extra Executou tarefa em hora extra EVENTO PLANEJADO RDM Ativa RDM Ativa
Encerrar a jornada Decidiu encerrar a jornada EVENTO PLANEJADO RDM Ativa RDM Antes do fim
Encerrar a jornada - Liberar RDM Liberou RDM EVENTO PLANEJADO RDM Antes do fim RDM Antes do fim
Encerrar a jornada - Ver Produtividade Selecionou totais para produtividade EVENTO PLANEJADO RDM Antes do fim RDM Antes do fim
Encerrar a jornada - Ver Pareto Selecinou incidentes por origem EVENTO PLANEJADO RDM Antes do fim RDM Antes do fim
Encerrar a jornada - Ver Avaliação Avaliou a capacidade do processo EVENTO PLANEJADO RDM Antes do fim RDM Antes do fim
Encerrar a jornada - Fechar RDM Fechou RDM EVENTO PLANEJADO RDM Antes do fim RDM Fechada
Aba RDM
A regra que define o estado atual para evento "Abriu RDM" é identificada por Regra_06_FrontEnd.
A regra que define o próximo estado para o evento "Abriu RDM" é identificada por Regra_07_FrontEnd.
Célula T1(Estado)
Contém, para o evento "Abriu RDM", o estado atual e o próximo estado da aba RDM, que podem ser: "RDM Fechada" ou "RDM Inicializada".
Descrição do comportamento
Se a necessidade do usuário for “Iniciar a jornada”, ele deve disparar dois eventos, nesta ordem:
- Abriu planilha GPS
- Abriu RDM
O evento “Abriu RDM” já foi especificado e teve seu código gerado, automaticamente, pelo Gemini, conforme descrição no Post:
Do Caos ao Prompt T4E02: Desenvolvimento do App AG2P – Evento "Abriu RDM"
O evento “Abriu planilha GPS” foi especificado depois da implementação do evento “Abriu RDM”.
Neste Post será solicitado ao Gemini a geração do código do evento “Abriu planilha GPS”, integrado com o código do evento “Abriu RDM”, conforme as especificações abaixo.
Se o usuário disparar o evento “Abriu planilha GPS”;
o app deverá executar a ação “Verificar situação do evento 'Fechou RDM'”, na aba "Interface do Usuário";
o app deverá acessar os dados necessários na aba "Interface do Usuário";
o app deverá acessar os dados necessários na aba "RDM";
o app deverá ter o seu comportamento direcionado pelos passos definidos no tópico abaixo identificado por "Passos do diálogo", e pelas regras identificadas por
Regra_01_FrontEnd,
Regra_02_FrontEnd,
Regra_03_FrontEnd,
Regra_04_FrontEnd,
Regra_05_FrontEnd,
Regra_06_FrontEnd,
Regra_07_FrontEnd,
Regra_08_FrontEnd,
Regra_09_FrontEnd.
Após a execução, o app deverá ficar esperando outro evento.
Ação “Verificar situação do evento ‘Fechou RDM’ ”
A ação "Verificar situação do evento 'Fechou RDM'” contém a descrição do diálogo que acontece, entre o usuário e o Agente AG2P, sempre que o evento "Abriu planilha GPS" for disparado pelo usuário.
Preparação e informações necessárias
Agente AG2P: O login no agente AG2P deve ter sido realizado com sucesso.
Dados:
- A planilha GPS, que é a única usada no agente AG2P, deve estar disponível para o usuário.
- Na aba RDM, na célula T1, o valor deve estar igual a "RDM Fechada".
- Se na aba "Interface do Usuário", para o valor na coluna B(Evento) igual a "Fechou RDM", na mesma linha, o valor da coluna C(Situação do evento) for igual a "EVENTO EXECUTADO", então, na aba RDM, o valor da célula T1 deve estar igual a "Fechou RDM", também. (Regra_04_FrontEnd)
- Fluxo Alternativo: O agente AG2P deve apenas abrir a aba “Interface do Usuário”, se uma das condições especificadas nos itens 2 e 3 acima for falsa.
Passos do diálogo
Passo 1: O Usuário deve abrir a aba "Interface do Usuário", localizar a linha do evento "Abriu planilha GPS" na coluna B(Evento), e selecionar nessa linha, na coluna C(Situação do evento), a opção "EVENTO EM EXECUÇÃO". (Regra_05_FrontEnd)
Passo 2: O agente AG2P deve selecionar, para o evento “Abriu planilha GPS” selecionado no Passo 1, a opção “EVENTO EXECUTADO”, e na coluna D(Estado Atual) registrar o texto "N/a" e na coluna E(Próximo Estado) registrar o estado "Após início". (Regra_02_FrontEnd e Regra_03_FrontEnd).
Passo 3: O Usuário deve localizar, na mesma aba do Passo 1, a linha do evento "Abriu RDM" na coluna B(Evento), e selecionar na coluna C(Situação do evento) dessa linha a opção "EVENTO EM EXECUÇÃO". (Regra_05_FrontEnd)
Passo 4: O agente AG2P deve localizar, na mesma aba do Passo 1, a linha do evento "Abriu RDM" na coluna B(Evento), selecionar na coluna C(Situação do evento) dessa linha a opção "EVENTO EXECUTADO", registrar na coluna D(Estado Atual) o estado "Após início" e na coluna E(Próximo Estado) registrar o estado "RDM Inicializada". (Regra_02_FrontEnd e Regra_03_FrontEnd).
Passo 5: O agente AG2P deve registrar, também, na aba RDM, na célula T1, o estado "RDM Inicializada".
Passo 6: O agente AG2P deve selecionar, na mesma aba do passo 1, na célula da coluna C(Situação do evento), a opção “EVENTO PLANEJADO”, para todos os eventos, exceto os eventos “Abriu planilha GPS” e "Abriu RDM". (Regra_05_FrontEnd).
Passo 7: O agente AG2P deve desabilitar, na mesma aba do passo 1, a célula da coluna C(Situação do evento), para todos os eventos com a opção "EVENTO PLANEJADO selecionada, exceto o evento “Recebeu lista de tarefas a fazer”.
Passo 8: O agente AG2P deve apresentar ao usuário a aba “Interface do Usuário”.
Resultados esperados
- Na aba “Interface do Usuário”, na coluna B(Evento), se o valor for igual a “Abriu planilha GPS”, então, na mesma linha, a coluna C(Situação do evento), deve estar com a opção “EVENTO EXECUTADO” selecionada, e a coluna D(Estado Atual) igual a "N/a", e a coluna E(Próximo Estado) igual a "Após início". (Regra_02_FrontEnd, Regra_03_FrontEnd e Regra_05_FrontEnd).
- Na aba “Interface do Usuário”, na coluna B(Evento), se o valor for igual a “Abriu RDM”, então, na mesma linha, a coluna C(Situação do evento), deve estar com a opção “EVENTO EXECUTADO” selecionada, e a coluna D(Estado Atual) igual a "Após início", e a coluna E(Próximo Estado) igual a "RDM Inicializada".(Regra_02_FrontEnd, Regra_08_FrontEnd e Regra_09_FrontEnd).
- Na aba “Interface do Usuário”, para todos os eventos, a célula na coluna C(Situação do evento), deve estar com a opção “EVENTO PLANEJADO” selecionada, exceto os eventos “Abriu planilha GPS” e "Abriu RDM". (Regra_05_FrontEnd).
- Na aba “Interface do Usuário”, para todos os eventos em que a célula na coluna C(Situação do evento) esteja igual à opção “EVENTO PLANEJADO”, esta célula deve estar desabilitada, exceto para o evento “Recebeu lista de tarefas a fazer”. (Regra_05_FrontEnd).
- Na aba "RDM", na célula T1, o valor deve estar igual a "RDM Inicializada".
Ações em caso de problema
1. Revisar o que foi feito no contexto desta Ação.
2. Solicitar ajuda à pessoa responsável pelo Suporte da Organização.
Atenção especial
- Na aba “Interface do Usuário”, para todos os eventos, a célula na coluna C(Situação do evento), deve estar com a opção “EVENTO PLANEJADO” selecionada, exceto os eventos “Abriu planilha GPS” e "Abriu RDM". (Regra_05_FrontEnd).
- Na aba “Interface do Usuário”, para todos os eventos em que a célula na coluna C(Situação do evento) esteja igual à opção “EVENTO PLANEJADO”, esta célula deve estar desabilitada, exceto para o evento “Recebeu lista de tarefas a fazer". (Regra_05_FrontEnd).
Dados acessados na planilha GPS
Na aba “Interface do Usuário”, os dados acessados são as colunas: B(Evento), C(Situação do Evento), D(Estado Atual) e E(Próximo Estado).
Na aba RDM, o dado acessado é a célula T1(Estado).
Regras que direcionam o comportamento do app na planilha GPS
Identificação das Regras:
- Regra_01_FrontEnd,
- Regra_02_FrontEnd,
- Regra_03_FrontEnd,
- Regra_04_FrontEnd,
- Regra_05_FrontEnd,
- Regra_06_FrontEnd,
- Regra_07_FrontEnd,
- Regra_08_FrontEnd,
- Regra_09_FrontEnd,
Regra_01_FrontEnd: A aba "Interface do Usuário", da planilha GPS deve conter as colunas: Necessidades do usuário, Evento, Situação do evento, Estado Atual e Próximo Estado.
Regra_02_FrontEnd: O estado atual para o evento "Abriu planilha GPS" deve ser igual a "N/a", na aba "Interface do Usuário".
Regra_03_FrontEnd: O próximo estado para o evento "Abriu planilha GPS" deve ser igual a "Após início", na aba "Interface do Usuário".
Regra_04_FrontEnd: A jornada de trabalho pode ser considerada encerrada, somente se a situação do evento “Fechou RDM” da aba “Interface do Usuário” da planilha “GPS” for igual a “EVENTO EXECUTADO”.
Regra_05_FrontEnd: A coluna situação do evento deve conter uma destas 3 opções: EVENTO PLANEJADO, EVENTO EM EXECUÇÃO ou EVENTO EXECUTADO.
Regra_06_FrontEnd: O estado atual para o evento "Abriu RDM" deve ser igual a "RDM Fechada", na célula T1 da aba RDM.
Regra_07_FrontEnd: O próximo estado para o evento "Abriu RDM" deve ser igual a "RDM Inicializada", na célula T1 da aba RDM.
Regra_08_FrontEnd: O estado atual para o evento "Abriu RDM" deve ser igual a "Após início", na aba "Interface do Usuário".
Regra_09_FrontEnd: O próximo estado para o evento "Abriu RDM" deve ser igual a "RDM Inicializada", na aba "Interface do Usuário".
Clique aqui para ler as Regras identificadas acima.
Comando ao Gemini para solicitar a implementação da interface do usuário
Faça a implementação da aba "Interface do Usuário", na planilha GPS, conforme as especificações acima.
Resposta do Gemini
O objetivo é implementar a aba "Interface do Usuário" na planilha GPS, preenchendo uma lacuna identificada pelo Chatbot de IA Gemini no comportamento do usuário e do aplicativo antes do evento "Abriu RDM". Esta implementação garantirá que o fluxo de trabalho seja mapeado e controlado de forma mais eficaz.
Estrutura da Aba "Interface do Usuário"
A aba "Interface do Usuário" será criada na planilha GPS, seguindo a Regra_01_FrontEnd, com as seguintes colunas e suas definições:
- Coluna A (Necessidades do usuário): Contém as ações fixas que o usuário precisa executar ao longo do fluxo de trabalho.
- Coluna B (Evento): Contém o evento que o usuário precisa disparar para cada necessidade, acionando o aplicativo AG2P. Esses eventos são fixos.
- Coluna C (Situação do Evento): Contém a situação atual de cada evento, podendo ser "EVENTO PLANEJADO", "EVENTO EM EXECUÇÃO" ou "EVENTO EXECUTADO". Esta coluna pode ser alterada tanto pelo usuário quanto pelo aplicativo AG2P, conforme a Regra_05_FrontEnd.
- Coluna D (Estado Atual): Indica o estado do aplicativo AG2P antes do início de um evento. O evento só pode ser iniciado se o aplicativo estiver nesse estado.
- Coluna E (Próximo Estado): Indica o estado do aplicativo AG2P após o encerramento bem-sucedido de um evento. O evento sempre causará a mudança do estado atual para o próximo estado.
Exemplo da Aba "Interface do Usuário"
Aba RDM
A aba RDM, na célula T1 (Estado), conterá o estado atual e o próximo estado para o evento "Abriu RDM", que podem ser "RDM Fechada" ou "RDM Inicializada".
- Para o evento "Abriu RDM", o estado atual deve ser "RDM Fechada" na célula T1 da aba RDM, conforme a Regra_06_FrontEnd.
- O próximo estado para o evento "Abriu RDM" deve ser "RDM Inicializada" na célula T1 da aba RDM, conforme a Regra_07_FrontEnd.
Descrição do Comportamento do Aplicativo AG2P
Quando o usuário disparar o evento "Abriu planilha GPS" para iniciar a jornada, o aplicativo AG2P seguirá o seguinte comportamento:
- Verificar situação do evento "Fechou RDM": O aplicativo verificará se o evento "Fechou RDM" está no estado "EVENTO EXECUTADO" na aba "Interface do Usuário", e se a célula T1 na aba RDM está como "RDM Fechada", conforme a Regra_04_FrontEnd. Se qualquer uma dessas condições for falsa, o aplicativo abrirá a aba "Interface do Usuário" diretamente (Fluxo Alternativo).
- Acessar dados: O aplicativo acessará os dados necessários nas abas "Interface do Usuário" (colunas B, C, D e E) e "RDM" (célula T1).
- Direcionamento pelo diálogo: O comportamento será direcionado pelos passos do diálogo e pelas regras mencionadas:
- Passo 1 (Usuário): O usuário deve selecionar "EVENTO EM EXECUÇÃO" para o evento "Abriu planilhas GPS" na coluna C da aba "Interface do Usuário", conforme a Regra_05_FrontEnd.
- Passo 2 (AG2P): O aplicativo AG2P registrará "EVENTO EXECUTADO" na coluna C, "N/a" na coluna D (Regra_02_FrontEnd) e "Após início" na coluna E (Regra_03_FrontEnd) para o evento "Abriu planilhas GPS".
- Passo 3 (Usuário): O usuário deve selecionar "EVENTO EM EXECUÇÃO" para o evento "Abriu RDM" na coluna C da aba "Interface do Usuário", conforme a Regra_05_FrontEnd.
- Passo 4 (AG2P): O aplicativo AG2P registrará "EVENTO EXECUTADO" na coluna C, "Após início" na coluna D (Regra_08_FrontEnd) e "RDM Inicializada" na coluna E (Regra_09_FrontEnd) para o evento "Abriu RDM".
- Passo 5 (AG2P): O aplicativo AG2P registrará "RDM Inicializada" na célula T1 da aba RDM.
- Passo 6 (AG2P): O aplicativo AG2P definirá "EVENTO PLANEJADO" na coluna C para todos os eventos, exceto "Abriu planilhas GPS" e "Abriu RDM", conforme a Regra_05_FrontEnd.
- Passo 7 (AG2P): O aplicativo AG2P desabilitará as células da coluna C para todos os eventos com a opção "EVENTO PLANEJADO" selecionada, exceto para o evento "Recebeu lista de tarefas a fazer".
- Passo 8 (AG2P): O aplicativo AG2P apresentará a aba "Interface do Usuário" ao usuário.
- Espera: Após a execução, o aplicativo aguardará o próximo evento.
Resultados Esperados
Após a execução do fluxo, espera-se que a planilha GPS apresente os seguintes resultados:
- Aba "Interface do Usuário" - Evento "Abriu planilhas GPS": A coluna C (Situação do evento) deve estar com "EVENTO EXECUTADO", a coluna D (Estado Atual) com "N/a" e a coluna E (Próximo Estado) com "Após início" (Regras: Regra_02_FrontEnd, Regra_03_FrontEnd, Regra_05_FrontEnd).
- Aba "Interface do Usuário" - Evento "Abriu RDM": A coluna C (Situação do evento) deve estar com "EVENTO EXECUTADO", a coluna D (Estado Atual) com "Após início" e a coluna E (Próximo Estado) com "RDM Inicializada" (Regras: Regra_02_FrontEnd, Regra_08_FrontEnd, Regra_09_FrontEnd).
- Aba "Interface do Usuário" - Demais Eventos: Para todos os outros eventos, a célula na coluna C (Situação do evento) deve estar com a opção "EVENTO PLANEJADO" selecionada (Regra: Regra_05_FrontEnd).
- Aba "Interface do Usuário" - Células Desabilitadas: Para todos os eventos com "EVENTO PLANEJADO" selecionado, a célula na coluna C (Situação do evento) deve estar desabilitada, exceto para o evento "Recebeu lista de tarefas a fazer" (Regra: Regra_05_FrontEnd).
- Aba "RDM" - Célula T1: O valor na célula T1 deve ser "RDM Inicializada".
Ações em Caso de Problema
Em caso de problemas na execução, as seguintes ações devem ser tomadas:
- Revisar o que foi feito no contexto desta ação.
- Solicitar ajuda à pessoa responsável pelo Suporte da Organização.
Regras que Direcionam o Comportamento do Aplicativo AG2P
- Regra_01_FrontEnd: A aba "Interface do Usuário" da planilha GPS deve conter as colunas: Necessidades do usuário, Evento, Situação do evento, Estado Atual e Próximo Estado.
- Regra_02_FrontEnd: O estado atual para o evento "Abriu planilha GPS" deve ser igual a "N/a", na aba "Interface do Usuário".
- Regra_03_FrontEnd: O próximo estado para o evento "Abriu planilha GPS" deve ser igual a "Após início", na aba "Interface do Usuário".
- Regra_04_FrontEnd: A jornada de trabalho pode ser considerada encerrada, somente se a situação do evento “Fechou RDM” da aba “Interface do Usuário” da planilha “GPS” for igual a “EVENTO EXECUTADO”.
- Regra_05_FrontEnd: A coluna situação do evento deve conter uma destas 3 opções: EVENTO PLANEJADO, EVENTO EM EXECUÇÃO ou EVENTO EXECUTADO.
- Regra_06_FrontEnd: O estado atual para o evento "Abriu RDM" deve ser igual a "RDM Fechada", na célula T1 da aba RDM.
- Regra_07_FrontEnd: O próximo estado para o evento "Abriu RDM" deve ser igual a "RDM Inicializada", na célula T1 da aba RDM.
- Regra_08_FrontEnd: O estado atual para o evento "Abriu RDM" deve ser igual a "Após início", na aba "Interface do Usuário".
- Regra_09_FrontEnd: O próximo estado para o evento "Abriu RDM" deve ser igual a "RDM Inicializada", na aba "Interface do Usuário".
Gostaria de prosseguir com a implementação do código para a aba "Interface do Usuário" e integrar o evento "Abriu planilha GPS" com o "Abriu RDM"?
Resposta ao Gemini para a pergunta acima: Sim
Resultado do Gemini
A seguir está a implementação do código para a aba "Interface do Usuário" na planilha GPS, integrando os eventos "Abriu planilha GPS" e "Abriu RDM" conforme as especificações fornecidas.
Estrutura da Planilha Google Sheets
Para esta implementação, você precisará de uma Planilha Google Sheets com as seguintes abas e estruturas:
-
Aba "Interface do Usuário":
- Células de A1 a E1 como cabeçalhos: "Necessidades do usuário", "Evento", "Situação do evento", "Estado Atual", "Próximo Estado".
- As linhas subsequentes devem ser preenchidas com os dados fornecidos no exemplo da tabela.
-
Aba "RDM":
- Célula
T1
para o estado da RDM.
Código Google Apps Script
Este código deve ser inserido no Editor de Scripts (Extensões > Apps Script) da sua Planilha Google Sheets.
const SPREADSHEET_ID = SpreadsheetApp.getActiveSpreadsheet().getId();
const UI_SHEET_NAME = "Interface do Usuário";
const RDM_SHEET_NAME = "RDM";
function setupInterfaceSheet() {
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
let uiSheet = ss.getSheetByName(UI_SHEET_NAME);
if (!uiSheet) {
uiSheet = ss.insertSheet(UI_SHEET_NAME);
}
const headers = [
"Necessidades do usuário",
"Evento",
"Situação do evento",
"Estado Atual",
"Próximo Estado"
];
uiSheet.getRange(1, 1, 1, headers.length).setValues([headers]);
const data = [
["Iniciar a jornada", "Abriu planilhas GPS", "EVENTO PLANEJADO", "N/a", "Após início"],
["Iniciar a jornada - Inicializar RDM", "Abriu RDM", "EVENTO PLANEJADO", "Após início", "RDM Inicializada"],
["Fazer o plano do dia", "Recebeu lista de tarefas a fazer", "EVENTO PLANEJADO", "RDM Inicializada", "RDM Ativa"],
["Executar uma tarefa", "Iniciou tarefa do negócio", "EVENTO PLANEJADO", "RDM Ativa", "RDM Ativa"],
["Registrar o encerramento da tarefa", "Terminou tarefa do negócio", "EVENTO PLANEJADO", "RDM Ativa", "RDM Ativa"],
["Registrar um erro", "Ocorreu um incidente", "EVENTO PLANEJADO", "RDM Ativa", "RDM Ativa"],
["Registrar hora extra", "Executou tarefa em hora extra", "EVENTO PLANEJADO", "RDM Ativa", "RDM Ativa"],
["Encerrar a jornada", "Decidiu encerrar a jornada", "EVENTO PLANEJADO", "RDM Ativa", "RDM Antes do fim"],
["Encerrar a jornada - Liberar RDM", "Liberou RDM", "EVENTO PLANEJADO", "RDM Antes do fim", "RDM Antes do fim"],
["Encerrar a jornada - Ver Produtividade", "Selecionou totais para produtividade", "EVENTO PLANEJADO", "RDM Antes do fim", "RDM Antes do fim"],
["Encerrar a jornada - Ver Pareto", "Selecinou incidentes por origem", "EVENTO PLANEJADO", "RDM Antes do fim", "RDM Antes do fim"],
["Encerrar a jornada - Ver Avaliação", "Avaliou a capacidade do processo", "EVENTO PLANEJADO", "RDM Antes do fim", "RDM Antes do fim"],
["Encerrar a jornada - Fechar RDM", "Fechou RDM", "EVENTO PLANEJADO", "RDM Antes do fim", "RDM Fechada"]
];
uiSheet.getRange(2, 1, data.length, data[0].length).setValues(data);
const validationRule = SpreadsheetApp.newDataValidation()
.requireValueInList(["EVENTO PLANEJADO", "EVENTO EM EXECUÇÃO", "EVENTO EXECUTADO"])
.setAllowInvalid(false)
.build();
uiSheet.getRange("C2:C" + uiSheet.getLastRow()).setDataValidation(validationRule);
let rdmSheet = ss.getSheetByName(RDM_SHEET_NAME);
if (!rdmSheet) {
rdmSheet = ss.insertSheet(RDM_SHEET_NAME);
}
rdmSheet.getRange("T1").setValue("RDM Fechada");
uiSheet.autoResizeColumns(1, 5);
}
function onOpenGPSSpreadsheet() {
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const uiSheet = ss.getSheetByName(UI_SHEET_NAME);
const rdmSheet = ss.getSheetByName(RDM_SHEET_NAME);
if (!uiSheet || !rdmSheet) {
Logger.log("As abas 'Interface do Usuário' ou 'RDM' não foram encontradas. Execute 'setupInterfaceSheet' primeiro.");
SpreadsheetApp.getUi().alert("Erro", "As abas necessárias não foram encontradas. Por favor, execute a função 'setupInterfaceSheet' no editor de scripts para configurar a planilha.", SpreadsheetApp.getUi().ButtonSet.OK);
return;
}
const uiData = uiSheet.getDataRange().getValues();
const rdmStatus = rdmSheet.getRange("T1").getValue();
let fechouRDMRow = -1;
for (let i = 1; i < uiData.length; i++) {
if (uiData[i][1] === "Fechou RDM") {
fechouRDMRow = i;
break;
}
}
if (fechouRDMRow !== -1 && uiData[fechouRDMRow][2] === "EVENTO EXECUTADO" && rdmStatus === "RDM Fechada") {
executeGPSFlow(uiSheet, rdmSheet);
} else {
ss.setActiveSheet(uiSheet);
SpreadsheetApp.getUi().alert("Aviso", "O evento 'Fechou RDM' não foi executado ou o estado da RDM não está como 'RDM Fechada'. Abra a aba 'Interface do Usuário' para iniciar a jornada.", SpreadsheetApp.getUi().ButtonSet.OK);
Logger.log("Fluxo Alternativo acionado: Abriu a aba 'Interface do Usuário'.");
}
}
function executeGPSFlow(uiSheet, rdmSheet) {
const ui = SpreadsheetApp.getUi();
const uiData = uiSheet.getDataRange().getValues();
let abriuGPSRow = -1;
let abriuRDMRow = -1;
for (let i = 1; i < uiData.length; i++) {
if (uiData[i][1] === "Abriu planilhas GPS") {
abriuGPSRow = i;
} else if (uiData[i][1] === "Abriu RDM") {
abriuRDMRow = i;
}
if (abriuGPSRow !== -1 && abriuRDMRow !== -1) break;
}
if (abriuGPSRow === -1 || abriuRDMRow === -1) {
ui.alert("Erro", "Eventos 'Abriu planilhas GPS' ou 'Abriu RDM' não encontrados na aba 'Interface do Usuário'.", ui.ButtonSet.OK);
return;
}
uiSheet.getRange(abriuGPSRow + 1, 4).setValue("N/a");
uiSheet.getRange(abriuGPSRow + 1, 5).setValue("Após início");
uiSheet.getRange(abriuGPSRow + 1, 3).setValue("EVENTO EXECUTADO");
uiSheet.getRange(abriuRDMRow + 1, 4).setValue("Após início");
uiSheet.getRange(abriuRDMRow + 1, 5).setValue("RDM Inicializada");
uiSheet.getRange(abriuRDMRow + 1, 3).setValue("EVENTO EXECUTADO");
rdmSheet.getRange("T1").setValue("RDM Inicializada");
for (let i = 1; i < uiData.length; i++) {
const eventName = uiData[i][1];
const situationCell = uiSheet.getRange(i + 1, 3);
if (eventName !== "Abriu planilhas GPS" && eventName !== "Abriu RDM") {
situationCell.setValue("EVENTO PLANEJADO");
if (eventName !== "Recebeu lista de tarefas a fazer") {
situationCell.protect().setDescription("Desabilitada pelo AG2P").removeEditors(situationCell.getEditors());
}
} else {
const protections = situationCell.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (let protection of protections) {
protection.remove();
}
}
}
ss.setActiveSheet(uiSheet);
ui.alert("Jornada Iniciada", "Os eventos 'Abriu planilhas GPS' e 'Abriu RDM' foram processados. A RDM está inicializada. Você pode agora prosseguir com 'Recebeu lista de tarefas a fazer'.", ui.ButtonSet.OK);
}
function createTriggers() {
ScriptApp.newTrigger("onOpenGPSSpreadsheet")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onOpen()
.create();
Logger.log("Acionadores criados com sucesso.");
SpreadsheetApp.getUi().alert("Configuração Concluída", "Os acionadores para a planilha foram criados. Por favor, feche e reabra a planilha para testar o fluxo de 'Abriu planilhas GPS'.", SpreadsheetApp.getUi().ButtonSet.OK);
}
function deleteAllTriggers() {
const allTriggers = ScriptApp.getProjectTriggers();
for (let i = 0; i < allTriggers.length; i++) {
ScriptApp.deleteTrigger(allTriggers[i]);
}
Logger.log("Todos os acionadores foram excluídos.");
SpreadsheetApp.getUi().alert("Aviso", "Todos os acionadores foram excluídos. Recarregue a planilha para aplicar as alterações.", SpreadsheetApp.getUi().ButtonSet.OK);
}
Como Usar o Código
- Abra sua Planilha Google Sheets.
- Vá em Extensões > Apps Script para abrir o Editor de Scripts.
- Cole o código fornecido acima no editor, substituindo qualquer código existente.
- Salve o projeto (ícone de disquete ou
Ctrl + S
).
- Execute a função
setupInterfaceSheet()
uma vez. No editor de scripts, selecione setupInterfaceSheet
no menu suspenso ao lado do botão "Executar" (ícone de play) e clique em "Executar". Será solicitada a autorização para o script acessar sua planilha.
- Esta etapa criará a aba "Interface do Usuário" e "RDM", preencherá os dados iniciais e configurará a validação de dados.
- Execute a função
createTriggers()
uma vez. Selecione createTriggers
no menu suspenso e clique em "Executar". Isso criará um acionador que executa onOpenGPSSpreadsheet
toda vez que a planilha for aberta.
- Feche e reabra a Planilha Google Sheets. O script
onOpenGPSSpreadsheet
será ativado.
Observações Importantes
- Interação do Usuário: Para simular os Passos 1 e 3 (onde o usuário manualmente seleciona "EVENTO EM EXECUÇÃO"), o código foi projetado para que o AG2P (o script) assuma que o usuário já realizou essa ação. Na prática, você poderia implementar caixas de diálogo ou instruções na interface da planilha para guiar o usuário.
- Proteção de Células: O código implementa a desabilitação de células na coluna "Situação do evento" conforme a Regra_05_FrontEnd. Isso significa que, após a execução, a maioria das células nessa coluna ficará protegida contra edição, exceto o evento "Recebeu lista de tarefas a fazer", que é o próximo passo para o usuário.
- Tratamento de Erros: O script inclui verificações básicas para garantir que as abas existam. Se houver problemas, ele exibirá um alerta na planilha e registrará mensagens no Logger (Visualizar > Execuções ou
Ctrl + Enter
no editor de scripts).
- Regra_04_FrontEnd (Verificação de "Fechou RDM"): O script verifica se o evento "Fechou RDM" foi "EVENTO EXECUTADO" e se a célula T1 da aba RDM está como "RDM Fechada". Se não, ele apenas abrirá a aba "Interface do Usuário" e aguardará a ação do usuário.
Este código fornece a base para a lógica de comportamento do AG2P. Para um sistema mais robusto, você poderia expandir com mais validações, uma interface de usuário mais interativa e mecanismos de feedback visual para o usuário.
Entendido! Vamos prosseguir com a implementação da aba "Interface do Usuário" na planilha GPS, incluindo a lógica para os eventos "Abriu planilha GPS" e "Abriu RDM" usando Google Apps Script.
Preparação da Planilha Google Sheets
Primeiro, você precisará ter sua planilha Google Sheets pronta. Certifique-se de que ela contenha duas abas com os seguintes nomes (respeitando maiúsculas/minúsculas):
Na aba "Interface do Usuário", configure as colunas A, B, C, D e E como no exemplo fornecido:
Na aba "RDM", certifique-se de que a célula T1 esteja configurada para conter o estado da RDM. Inicialmente, você pode definir T1 como "RDM Fechada".
Código Google Apps Script
Para acessar o editor de script, siga estes passos:
- Abra sua planilha Google Sheets.
- Clique em Extensões no menu superior.
- Selecione Apps Script.
Isso abrirá um novo projeto no editor de script. Apague qualquer código existente (geralmente uma função myFunction
) e cole o código abaixo.
Como Usar o Script
- Cole o Código: Após copiar o código, cole-o no editor de Apps Script.
- Salve o Projeto: Clique no ícone de disquete (Salvar projeto) ou vá em
Arquivo > Salvar projeto
. Você pode dar um nome ao projeto, como "AG2P - Automação da Jornada".
- Autorize o Script: Na primeira vez que você executar qualquer função do script que interage com a planilha, o Google pedirá autorização. Siga os passos:
- Clique no botão "Executar" (ícone de play).
- Clique em "Revisar permissões".
- Selecione sua conta Google.
- Clique em "Permitir" para conceder ao script as permissões necessárias para acessar e modificar sua planilha.
- Execute as Funções:
- Atualize a planilha: Volte para sua planilha Google Sheets. Você verá um novo menu chamado "AG2P - Jornada" aparecer na barra de menus. Se não aparecer imediatamente, atualize a página.
- Para iniciar a jornada:
- Verifique se a célula T1 na aba RDM está como "RDM Fechada" e se o evento "Fechou RDM" na "Interface do Usuário" está como "EVENTO EXECUTADO". Se não estiverem, o script irá te alertar e abrir a aba "Interface do Usuário".
- Clique em AG2P - Jornada > Iniciar Jornada (Abriu planilhas GPS).
- Após a execução do "Abriu planilhas GPS", clique em AG2P - Jornada > Iniciar Jornada (Abriu RDM).
- Para verificar o estado do evento "Fechou RDM": Clique em AG2P - Jornada > Verificar Situação (Fechou RDM).
- Para resetar o ambiente: Clique em AG2P - Jornada > Resetar Situação dos Eventos. Isso definirá todos os eventos para "EVENTO PLANEJADO" e a célula T1 da aba RDM para "RDM Fechada", permitindo que você teste o fluxo novamente desde o início.
Observações Importantes
- "Desabilitar" Células: O Google Apps Script não tem uma função direta para "desabilitar" células de forma que o usuário não possa editá-las via interface como faria em um aplicativo desktop. No script, a lógica de "desabilitar" é simulada ao não alterar a situação de eventos que deveriam estar desabilitados, exceto o evento "Recebeu lista de tarefas a fazer", que permanece editável para o usuário. Para uma proteção real, você precisaria usar a função
protect()
do Apps Script em intervalos específicos, mas isso adicionaria complexidade e um passo de "desproteger" quando o usuário precisar interagir. Para este escopo, a instrução ao usuário é crucial.
- Interação do Usuário vs. Automação: O script assume que algumas ações do usuário, como a seleção inicial de "EVENTO EM EXECUÇÃO" (Passo 1 e 3), são "simuladas" ou que o usuário as fará através da interface. Para um chatbot real, esses passos seriam gatilhos da conversa. Aqui, os itens de menu no Apps Script funcionam como os gatilhos manuais que o usuário ativa.
- Regras Implementadas: As regras (
Regra_01_FrontEnd
a Regra_09_FrontEnd
) foram incorporadas na lógica do script para direcionar o comportamento do aplicativo.
Este script fornece a base para a automação da aba "Interface do Usuário" e a integração dos eventos conforme o seu objetivo.
Você gostaria de explorar como adicionar validação de dados para as colunas de "Situação do Evento" ou alguma outra funcionalidade?
Interação Adicional
Esqueci de informar, nas especificações, que:
1) a planilha GPS já existe,
2) as abas "Interface do Usuário" e "RDM" estão criadas e
3) a coluna C(Situação do Evento) já está configurada com as Regras de validação de dados "EVENTO PLANEJADO", "EVENTO EM EXECUÇÃO" e "EVENTO EXECUTADO".
Neste caso, o que muda no código gerado e nas instruções de uso?
Resposta do Gemini
Ótima observação! Essas informações são cruciais e simplificam bastante a implementação.
Como a planilha, as abas e as validações de dados já existem, não precisamos incluir código para criá-los. Isso torna o script mais focado nas interações e na lógica dos eventos.
O Que Muda no Código
Basicamente, o código gerado anteriormente já está bem alinhado com essas premissas, pois ele assume a existência das abas e se baseia na estrutura de colunas que você descreveu. A única alteração que eu faria é a seguinte:
- Remoção de Comentários e Mensagens de Criação (Opcional): Posso remover qualquer comentário ou instrução que sugira a "criação" da planilha/abas/validações, já que elas já existem. Isso é mais uma questão de clareza do código e das instruções para você.
Não há mudanças funcionais críticas no código em si porque ele já interage com as ababas e células existentes, sem tentar recriá-las. A lógica de leitura e escrita de valores, e a validação de estados, permanecerá a mesma.
O Que Muda nas Instruções de Uso
As instruções de uso serão muito mais diretas e focadas na execução e no fluxo, já que a parte de configuração inicial da planilha é eliminada.
Veja como ficariam as instruções de uso atualizadas:
Como Usar o Script (Instruções Atualizadas)
- Acesse o Editor de Script:
- Abra sua planilha Google Sheets.
- Clique em Extensões no menu superior.
- Selecione Apps Script.
- Cole o Código: Apague qualquer código existente (geralmente uma função
myFunction
) e cole o código fornecido abaixo.
- Salve o Projeto: Clique no ícone de disquete (Salvar projeto) ou vá em
Arquivo > Salvar projeto
. Você pode dar um nome ao projeto, como "AG2P - Automação da Jornada".
- Autorize o Script (Somente na Primeira Vez):
- Na primeira vez que você executar qualquer função do script que interage com a planilha, o Google pedirá autorização. Siga os passos:
- Clique no botão "Executar" (ícone de play) na barra de ferramentas do editor de script (escolha qualquer função no seletor acima do código, por exemplo,
onOpen
).
- Clique em "Revisar permissões".
- Selecione sua conta Google.
- Clique em "Permitir" para conceder ao script as permissões necessárias para acessar e modificar sua planilha.
- Execute as Funções:
- Atualize a Planilha: Volte para sua planilha Google Sheets. Você verá um novo menu chamado "AG2P - Jornada" aparecer na barra de menus. Se não aparecer imediatamente, atualize a página do navegador (F5).
- Para iniciar a jornada (fluxo principal):
- Verifique as Condições Iniciais: Certifique-se de que a célula T1 na aba RDM está com o valor "RDM Fechada" e que o evento "Fechou RDM" na aba "Interface do Usuário" (Coluna B) tem sua Situação (Coluna C) como "EVENTO EXECUTADO".
- Dica: Você pode usar a função
verificarSituacaoFechouRDM
no menu AG2P para checar isso rapidamente.
- Clique em AG2P - Jornada > Iniciar Jornada (Abriu planilhas GPS). Este evento fará as validações iniciais e preparará a "Interface do Usuário".
- Após a conclusão do evento "Abriu planilhas GPS", clique em AG2P - Jornada > Iniciar Jornada (Abriu RDM). Este evento completará a inicialização da RDM e configurará o restante da interface.
- Para verificar o estado do evento "Fechou RDM" (para depuração): Clique em AG2P - Jornada > Verificar Situação (Fechou RDM).
- Para resetar o ambiente para um novo teste: Clique em AG2P - Jornada > Resetar Situação dos Eventos. Isso definirá a situação de todos os eventos na aba "Interface do Usuário" para "EVENTO PLANEJADO" e a célula T1 da aba "RDM" para "RDM Fechada".
Código Google Apps Script (Revisado para Claridade)
CONCLUSÃO
Neste episódio 3, da temporada 5 da série "Do Caos ao Prompt", foram definidas melhorias nas
especificações da interface do usuário, para o Agente de Gestão de Processo Pessoal (AG2P), com foco no evento "Abriu RDM".
O código foi gerado automaticamente pelo Chatbot de IA Gemini 2.5 Flash.
Interação adicional
Após a geração do código houve necessidade de uma interação adicional com o Gemini, pois
ainda constatei um erro nas especificações, por informações incompletas.
Esse erro nas especificações foi corrigido e relatado ao Gemini, com uma pergunta sobre o impacto
na geração do código.
O Gemini gerou o código novamente, que ficou mais simples, e atualizou as intruções de uso.
Este novo erro nas especificações serve para nos lembrar da lição aprendida, citada na Introdução:
LIÇÃO APRENDIDA: Uma IA pode ser poderosa, mas não faz mágica - se a especificação for incompleta, imprecisa ou inválida, o código gerado seguirá o mesmo destino!
Resultado do Teste
O teste do código gerado pelo Gemini foi executado com sucesso, de acordo com as instruções que
o próprio Gemini escreveu no item "Como Usar o Script (Instruções Atualizadas)".
No próximo post será solicitada ao Gemini a integração da aba "Interface do Usuário" com o evento
"Recebeu lista de tarefas a fazer", cujo código já foi gerado no post.
Veja a lista de Episódios da Temporada 5 da Série "Do Caos ao Prompt", no final do Episódio
T5E01.