A maioria das empresas que adotam o Lotus Notes/Domino como ferramenta de correio eletrônico interno, conhecem também a sua grande capacidade de agregar valor ao negócio como uma poderosa plataforma de desenvolvimento de aplicações de workflow e colaboração.
O que boa parte delas desconhece é que, automatizar tarefas no Lotus Notes não é privilégio apenas de desenvolvedores Lotus Notes/Domino que utilizam o Domino Designer para desenvolver aplicações complexas. O Lotus Notes permite também que usuários comuns, sem grandes conhecimentos em programação, possam utilizá-lo não só para enviar e receber e-mails e gerenciar compromissos na agenda, mas também, automatizar tarefas pouco complexas. Para isso ele disponibiliza recursos como pastas, regras de filtragem de e-mails, e uma linguagem de programação chamada @formula, muito similar em sintaxe e complexidade às fórmulas de planilhas eletrônicas, que permite a execução de tarefas simples como solicitar informações ao usuário, compor e enviar e-mails automatizados, dentre muitas outras tarefas.
Para demonstrar um pouco destes recursos, vamos elaborar um questionário, que é encaminhado por e-mail, cujas respostas são encaminhadas de volta por e-mail ao originador do questionário. Ao chegarem à caixa de correio do originador, são automaticamente organizadas numa pasta, num formato que podem ser exportadas para uma planilha eletrônica, e lá serem tabuladas.
Criando e Enviando o Questionário
Para começar, elabore um e-mail comum, fornecendo informações sobre o questionário, propósito, etc. Depois de elaborar o corpo do e-mail, vamos criar um botão "Preencher Questionário" a ser colocado no corpo do e-mail, que será o responsável por apresentar as perguntas ao usuário e coletar as respostas.
Para criar o botão, posicione o cursor no corpo do e-mail, na posição onde deseja que o botão seja criado, depois acione o menu Create > Hotspot > Button..., conforme mostra a figura 1.
Figura 1. Criando um botão no corpo do e-mail
O botão será criado e uma tela de propriedades do botão será exibida, conforme mostra a figura 2.
Figura 2. Janela de propriedades do botão
No campo "Label" forneça o texto do botão, no nosso caso, "Preencher Questionário" (sem aspas). Utilize a segunda aba para formatar o botão como desejar. Feche a tela de propriedades.
Ao criar o botão, um painel foi aberto abaixo do corpo do e-mail, conforme a figura 3.
Figura 3. Painel de programação do botão
Agora vamos elaborar a lógica do questionário. Esta lógica será programada utilizando @formula. Para tanto, clique no botão "Add Action...". Uma janela popup será exibida. No campo "Action" selecione a opção "@Function formula". A janela ficará como mostra a figura 4.
Figura 4. Janela de fórmula
Mantenha a opção padrão "Update existing document when run" selecionada. A caixa de texto com rótulo "Formula" é onde vamos escrever nossa @formula para exibir as perguntas ao usuário e coletar as respostas.
A listagem 1 mostra a fórmula que deve ser colocada na caixa de texto citada acima. Em seguida vamos detalhar algumas partes desta fórmula, para que o leitor possa customizá-la para seus próprios questionários.
Listagem 1. Fórmula do botão "Preencher Questionário"
-
REM {INÍCIO: Dados específicos do questionário}; -
email_destinatario_respostas := "Ricardo Lucio da Silva/Depto/Empresa"; -
nome_questionario := "Questionario Demo dW"; -
perguntas := "Qual seu sexo?" : "Qual a sua faixa etária?" : "Qual a sua profissão?" : "Quantos filhos você possui?";-
respostas := "Masculino,Feminino" : -
"Menos de 20 anos,De 20 a 30 anos,De 30 a 40 anos,Mais de 40 anos" : -
"Médico,Bombeiro,Eletricista" : "Nenhum,1,2,3,4,Mais de 4"; -
separador_respostas := ","; -
REM {FIM: Dados específicos do questionário}; -
nome_quest_sem_espacos:=@ReplaceSubstring(nome_questionario; " "; ""); -
questionario_preenchido:=@Environment(nome_quest_sem_espacos+"preenchido"); -
@If(questionario_preenchido=""; ""; @Do(@Prompt([Ok]; "Questionário Preenchido"; -
"Este questionário já foi preenchido. Obrigado!" ); @Return(""))); -
total_perguntas := @Elements(perguntas); -
respostas_do_usuario := ""; @Prompt([Ok]; "ATENÇÃO!"; "O questionário contém " + @Text(total_perguntas) +" perguntas." + @NewLine +-
"Caso o preenchimento seja cancelado antes do término, todas as respostas "+ -
"serão perdidas."); -
@For(i_pergunta:=1;i_pergunta<=total_perguntas;i_pergunta:=i_pergunta+1; -
pergunta_atual:=perguntas[i_pergunta]; -
respostas_pergunta_atual:=respostas[i_pergunta]; -
lista_respostas:=@Explode(respostas_pergunta_atual;separador_respostas); titulo:="Pergunta "+@Text(i_pergunta)+" de "+@Text(total_perguntas);-
resposta_selecionada:=@Prompt([OkCancelCombo]:[NoSort]; titulo; -
pergunta_atual; lista_respostas[1]; lista_respostas); -
respostas_do_usuario := respostas_do_usuario:resposta_selecionada - );
-
respostas_do_usuario_concatenadas:="["+nome_questionario+"]"+ -
@Implode( @Trim( respostas_do_usuario ); separador_respostas); @MailSend( email_destinatario_respostas ; "" ; "" ;-
respostas_do_usuario_concatenadas ); -
@Environment( nome_quest_sem_espacos+"preenchido" ; "1" ); -
@Prompt([Ok];"Tarefa Concluída"; -
"As respostas do questionário foram submetidas com sucesso. Obrigado"+ -
" pela atenção!"); -
@Command([CloseWindow])
Esta fórmula está dividida em 2 partes: uma customizável e outra fixa. A parte customizável é a que o leitor irá alterar para fornecer os dados do seu questionário. Esta parte nós iremos explicar em detalhes a seguir. A segunda parte, a fixa, é a que faz todo o trabalho, utilizando as informações providas na parte customizável para exibir o questionário, coletar as respostas e enviá-las por e-mail ao originador do questionário. Não é recomendável que o leitor faça modificações nesta parte da fórmula, para não comprometer o seu funcionamento. Por ser de maior complexidade técnica, faremos apenas uma explicação sucinta em seguida.
A parte customizável da nossa fórmula vai das linhas 1 à 12. Nessas linhas utilizamos o comando REM para incluir comentários, neste caso, delimitando a seção customizável.
Na linha 3, criamos uma variável chamada "email_destinatario_respostas" que irá conter o nome notes ou o e-mail para onde as respostas devem ser enviadas. É importante que o leitor preencha o nome Notes ou e-mail dentro das aspas.
Na linha 4, criamos uma variável chamada "nome_questionario" que deverá ser populada com um nome que identifique unicamente o questionário. Esta característica é fundamental pois esta informação será utilizada tanto para detectarmos se o usuário final já preencheu o questionário, evitando que ele preencha duplicado, bem como na hora de receber as respostas e organizá-las em pastas.
Nas linhas 5 e 6 começamos a elaborar o questionário propriamente dito, armazenando na variável "perguntas" , a lista de perguntas que o usuário deverá responder. Esta variável tem uma sintaxe um pouco diferente das anteriores. Ela não armazenará apenas 1 informação como as outras, mas sim, várias. Para isso, cada informação é colocada entre aspas, e são separadas entre si pelo caractere ":" (dois-pontos). Apesar de ter 2 linhas de extensão, o código compreende apenas 1 instrução na fórmula. O Notes entende que uma instrução se encerrou quando ele encontra o caractere ";" (ponto-e-vírgula) no final da linha.
Nas linhas de 7 a 9, temos outra variável do tipo lista, chamada "respostas", que conterá a lista de respostas para cada pergunta contida na variável "perguntas".
Aqui temos um pequeno desafio. Cada elemento da variável "perguntas" precisa ter 2 ou mais elementos na variável "respostas" o que nos levaria a definir a variável "respostas" como uma "lista de listas", o que não é suportado pelo Lotus Notes. Para sobrepor esta limitação do Lotus Notes, vamos adotar a seguinte estratégia: cada elemento da variável "perguntas" terá apenas um elemento correspondente na variável "respostas". Este elemento conterá todas as opções de resposta para a pergunta correspondente, porém todas dentro da mesma aspas, mas as opções deverão ser separadas por algum caractere que funcione como separador, por exemplo, uma "," (vírgula). A primeira regra aqui é que os elementos da variável "respostas" estejam na mesma sequência das perguntas correspondentes na variável "perguntas". A segunda regra é que este caractere separador, em momento algum, seja utilizado no corpo da resposta, pois isso fará com que a resposta seja quebrada erroneamente. Por exemplo, imagine a seguinte pergunta: "Você é católico?" cujas opções de resposta sejam: "Sim, e sou praticante,Sim, mas não sou praticamente,Não". Reparem que as diferentes opções de resposta estão separadas por vírgula, porém as duas primeiras respostas possuem vírgula no seu corpo. Isto fará com que apareçam as seguintes opções ao usuário:
- Sim
- e sou praticante
- Sim
- mas não sou praticante
- Não
O correto neste caso seria exibir as seguintes opções:
- Sim, e sou praticante
- Sim, mas não sou praticante
- Não
Por isso escolha cuidadosamente o caractere separador das opções de resposta. Este caractere deverá também ser fornecido na variável "separador_respostas" na linha 10.
Pronto, nossa parte na customização da fórmula está concluída. Agora é só selecionar os destinatários do questionário, de preferência definidos no campo "BCC", fornecer um assunto para o e-mail do questionário, enviar o e-mail e aguardar o recebimento das respostas, que trataremos no próximo tópico.
Antes de partirmos para o próximo tópico, apenas para o leitor compreender um pouco o que é executado na parte fixa da fórmula, segue aqui o fluxo:
- Verifica nas configurações do Lotus Notes do usuário se um
questionário com o mesmo nome já foi preenchido. Se sim, exibe uma
mensagem informativa e não exibe o questionário;
- Exibe a seguinte mensagem ao usuário: "O questionário contém X
perguntas. Caso o preenchimento seja cancelado antes do término,
todas as respostas serão perdidas.";
- Percorre a lista de perguntas, exibindo uma janela com a pergunta e
uma caixa combo com as opções de resposta para seleção, conforme figura 5. Sempre a primeira opção da lista de opções de resposta será
exibida como resposta padrão;.
- Acumula cada resposta em uma variável;
- Ao final das respostas, compõe um e-mail, com as respostas, e envia ao
destinatário definido na variável
"email_destinatário_respostas". As respostas serão
colocadas no campo assunto do e-mail, no seguinte formato:
"[nome_questionario]resposta1,resposta2,resposta3". Em
"nome_questionario" será incluído o valor definido da
variável, e as respostas serão separadas com o separador definido na
variável "separador_respostas";.
- Armazena nas configurações do Lotus Notes do usuário uma informação
que indica que o questionário foi preenchido;.
- Exibe a seguinte mensagem ao usuário: "As respostas do questionário foram submetidas com sucesso. Obrigado pela atenção!".
Figura 5. Exibição da pergunta e opções de resposta para seleção
Agora que os usuários estão prontos para preencher o questionário, as respostas vão começar a chegar na sua caixa de entrada. Para que os e-mails com a respostas não se misturem com os demais e-mails da caixa de entrada, e para que possamos mais tarde exportar as respostas para uma planilha eletrônica, vamos começar criando uma pasta para guardá-las.
Para criarmos uma pasta, abra a sua caixa de entrada e acione o menu Create > Folder.... , como mostra a figura 6.
Figura 6. Criando uma pasta
A janela da figura 7 será exibida:
Figura 7. Criando uma pastaPropriedades da pasta
O primeiro passo é darmos um nome para a nova pasta, que receberá as respostas dos questionários. Se apenas informarmos o nome no campo "Folder name" e clicarmos em "Ok", o Lotus Notes criará uma pasta com o mesmo layout da pasta da caixa de entrada e, como queremos mais tarde exportar as respostas para uma planilha eletrônica, e para isso precisamos que cada resposta seja exibida em uma coluna da pasta, este layout não nos atende, pois apenas exibe informações básicas de um e-mail, como remetente, assunto, etc., então precisamos customizá-lo. Para tanto vamos clicar em "Advanced...". A tela da figura 8 será exibida.
Figura 8. Opções avançadas de criação de pastas
Nesta nova tela, para que possamos definir um layout novo para a pasta, devemos antes de tudo remover o nome "Inbox" do campo "Copy style from folder". Nós fazemos isso clicando no botão "Copy From..." e selecionando a opção "Blank". Por fim, vamos clicar em "Save and Customize" para podermos customizar a pasta. A tela da figura 9 é exibida.
Figura 9. Tela de customização de pasta
Agora vamos definir as colunas que a nossa pasta exibirá. Esta etapa é importante pois quando formos exportar as respostas para a planilha eletrônica, a planilha terá o mesmo layout da pasta.
No nosso layout, apenas a primeira coluna terá uma fórmula diferente, pois nela vamos listar o nome da pessoa que enviou as respostas, assim podemos identificar o dono de cada resposta. Esta coluna não é obrigatória e pode ser omitida caso esta informação não seja relevante para a planilha.
Quando a tela de customização de pasta é aberta, uma coluna já é criada por padrão e já está selecionada. A primeira coisa a fazer é definir um título para a coluna. Para isso, basta dar 2 cliques na coluna. Uma janela de propriedades será exibida, conforme figura 10.
Figura 10. Propriedades da coluna
Nesta tela definimos o título da coluna no campo "Title". Feito isso, podemos fechar a janela de propriedades.
Agora vamos definir o conteúdo da coluna. Isso é feito no painel "<Nome da Coluna> (Column): Column Value" que fica no canto inferior direito da tela, como mostrado na figura 9. Este painel possui um campo "Display" com 3 opções: "Simple Function", "Field", "Formula". Vamos escolher a opção "Formula". Ao fazermos isso, a parte de baixo do painel abrirá uma caixa de texto para criarmos uma formula que definirá o conteúdo a ser exibido nesta coluna. Caso a formula já possua algum conteúdo, simplesmente remova-o, deixando a caixa de texto limpa.
A formula que vamos usar é a seguinte:
@Name([CN] ; From );
Para entendermos esta fórmula, vamos começar pela variável "From". O leitor deve ter estranhando não termos criado esta variável antes de usá-la na @function @Name. Isso ocorre porque na verdade "From" não é uma variável, mas um campo de um e-mail, que contém o nome do usuário que enviou o e-mail. Como esta fórmula vai ser executada para cada e-mail listado na pasta, "From" vai retornar o nome do remetente de cada e-mail. Agora vamos entender o "@Name". O nome retornado pelo "From" terá um formato parecido com este: "CN=Ricardo Lucio da Silva/OU=Depto/O=Empresa". A única coisa que nos interessa de tudo isso é o texto que vem depois do "CN=" e antes da primeira barra. Para extrair esta informação utilizamos a função "@Name" com a opção "CN", que vai retornar apenas a informação que precisamos.
Pronto, nossa pasta já tem a primeira coluna. Agora vamos para as colunas que vão listar as respostas. Estas colunas terão basicamente a mesma fórmula, mudando apenas o índice da resposta a ser exibida. Para cria uma nova coluna, siga este procedimento:
1. Clique em qualquer lugar da área branca da pasta, de maneira que a coluna atual seja deselecionada.
2. Acione o menu Create > Append New Column... Uma nova coluna sem título será exibida (figura 11).
3. Dê um duplo-click no título da nova coluna. A janela de propriedades da coluna será exibida (figura 12).
4. Forneça no campo "Title" a descrição da pergunta cujas respostas queremos listar. (figura 13)
5. Feche a janela e selecione a opção "Formula" no tipo de conteúdo da coluna no painel inferior direito (figura 14).
Figura 11. Criando uma nova coluna
Figura 12. Nova coluna com título em branco
Figura 13. Propriedades da nova coluna
Figura 14. Abrindo o painel de programação em @formula
Agora vamos à fórmula. Antes de mais nada, vamos relembrar qual foi a estratégia que adotamos para envio das respostas. Definimos que as respostas seriam enviadas por e-mail ao originador do questionário, no campo assunto, sendo separadas por um caractere que é "," (vírgula), com um prefixo "[nome_questionario]", ou seja, esperamos receber um e-mail com um assunto similar a esse: "[Questionario Demo dW]Masculino,De 30 a 40 anos,Eletricista,1". De acordo com o texto desse assunto, o usuário respondeu que ele é do sexo masculino, tem idade de 30 a 40 anos, é eletricista e tem apenas 1 filho. Agora vamos desenvolver a fórmula que vai extrair cada uma dessas informações para nós.
Listagem 2. Fórmula para exibir resposta do usuário na coluna da pasta
respostas_sem_prefixo := @ReplaceSubstring( Subject; "[Questionario Demo dW]"; ""); respostas := @Explode( respostas_sem_prefixo; "," ); respostas[1]; |
A primeira coisa que esta fórmula faz é remover o prefixo do texto do assunto. Para isso utilizamos a @function @ReplaceSubstring, que faz substituições de um texto. Ele recebe como parâmetros o texto que contém a informação a ser substituída; no nosso caso o campo Subject do e-mail; recebe também o texto a ser substituído e por fim o texto substituto. Como queremos remover o prefixo e não substituí-lo, substituímos ele por um texto vazio, indicado por "". O resultado da substituição é armazenado na variável "respostas_sem_prefixo";
Em seguida, utilizamo a função @Explode que vimos anteriormente. Ela irá "explodir" o conteúdo do campo "Subject" do e-mail em uma lista de valores, separados pelo caractere ",". A última linha desta fórmula apenas indica que queremos que o 1o ( primeiro) elemento da lista seja exibido na coluna, que é a resposta para a 1a (primeira) coluna.
Agora para criarmos as colunas das outras perguntas, basta seguirmos os passos de 1 a 4 citados acima, colocar a mesma fórmula da primeira coluna, porém substituir o número "1" da lista "respostas" da fórmula pelo número da pergunta a que se refere a coluna, lembrando que é importante respeitar a ordem de preenchimento das perguntas que o usuário seguiu.
Depois de criar todas as colunas, basta salvar a pasta. Para isso, basta pressionar a tecla <ESC> e informar "Yes" quando a pergunta "Do you want to save your changes?" surgir.
Para testar se a pasta está exibindo as informações corretamente, siga estes passos:
1. Crie um e-mail rascunho e preencha o campo assunto com este texto:
[Questionario Demo dW]Masculino,De 30 a 40 anos,Eletricista,2
2. Salve o e-mail
3. Mova o e-mail para a pasta que acabamos de criar
4. O resultado deve ser similar ao da figura 15:
Figura 15. Pasta exibindo as respostas em colunas
Agora precisamos criar uma regra de e-mail para armazenar os e-mails de resposta do nosso questionário na pasta que acabamos de criar, removendo da caixa de entrada. Para isso, abra sua caixa de entrada, e abra a opção Tools > Rules no navegador do lado esquerdo, como mostrado na figura 16:
Figura 16. Tela de regras de e-mails
Na barra de botões no topo da lista exibida tem um botão "New Rule", clicando nele, aparecerá a tela da figura 17;.
Figura 17. Tela de criação de regra de e-mail
A primeira coisa a fazer é definir a condição que um determinado e-mail deve atender para ser considerado um e-mail de resposta ao nosso questionário, e é aí que entra o prefixo do campo assunto que definimos anteriormente. Basta dizermos que Subject contains respostas_questionario1: na seção "Specify Conditions" e clicar no botão "Add". O resultado ficará como mostrado na figura18.
Figura 18. Tela de regra de e-mail com condição definida
Agora só falta definirmos o que fazer com o e-mail, uma vez que ele atenda ao critério que definimos acima. No nosso caso queremos movê-lo para uma determinada pasta, então basta na seção "Specify Actions" selecionar a opção "move to folder", clicar no botão "Select..." e selecionar a pasta que criamos anteriormente. Depois é só clicar no botão "Add Action" para incluir a ação. O resultado final ficará como na figura 19.
Figura 19. Tela de regra de e-mail com ação definida
Por fim, basta garantir que o campo "This rule is:" está como "on" no topo da tela e clicar em "Ok". Pronto, as respostas enviadas pelos usuários do questionário que enviamos cairão automaticamente nesta pasta.
Exportando as Respostas para a Planilha Eletrônica
A única coisa que nos falta agora é, uma vez que recebamos todas as respostas, exportá-las para uma planilha eletrônica, para que possamos tabular as respostas, gerar gráficos, estatísticas, etc. Por incrível que pareça, esta é a tarefa mais fácil. Bastar abrirmos a pasta que contém as respostas, depois acionarmos o menu File > Export.... A tela de Export será exibida, como mostra a figura 20.
Figura 20. Tela de export
Selecione o caminho e o nome do arquivo a ser exportado, incluindo a extensão .csv. No campo "Save as type" selecione a opção "Comma Separated Value" e pressione "Export". A tela da figura 21 será exibida.
Figura 21. Opções avançadas de exportação
Selecione as opções "All documents", "International (UTF-8)" e, caso deseje que a 1a (primeira) linha da planilha contenha o título das perguntas, selecione também a opção "Include View titles" e presisone OK. Pronto, o arquivo com as respostas foi gerado e já está pronto para ser importado para a planilha eletrônica. Agora basta importarmos o arquivo para a planilha eletrônica. Para exemplificar este processo usaremos a planilha eletrônica do IBM Lotus Symphony.
Abra o IBM Lotus Symphony e acione o menu File > Open.... No tipo de arquivo selecione "Text CSV (*.csv)"). Encontre o arquivo exportando anteriormente e pressione OK. A tela da figura 22 será exibida.
Figura 22. Opções de importação de arquivo CSV
Na seção "Separator options" marque apenas a opção "Comma" e verifique na tabela da seção "Fields" se cada conjunto de respostas está "encaixada" na coluna da pergunta correspondente. Se sim, pressione Ok.
Pronto, as respostas já podem ser tabuladas na planilha eletrônica.
Neste artigo vimos como o Lotus Notes disponibiliza recursos aos usuários comuns para que a utilização vá além do envio e recebimento de e-mails e apontamentos de calendário, criando recursos pouco triviais e que permitem automatizar tarefas como o envio de questionários e o recebimento das respostas para tabulação em uma planilha eletrônica.
Lotus Domino Designer 8.5. Seção "Formula Language"
http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp
