terça-feira, 22 de fevereiro de 2011

Desenvolvendo um sistema de mailing com o Google Docs


A proposta é coletar informações de contatos em um formulário, organizá-las em uma planilha e enviar e-mails com base nessas informações, integrando o Google Docs com o Gmail.
Veja o fluxo abaixo:
Portanto, é importante que sua conta do Google também tenha habilitação para o Gmail, além do Docs.

Criando o formulário de coleta de dados

Vamos criar um formulário que fará a coleta dos dados os usuários. Um formulário do Google Docs coleta dados e os adiciona em uma planilha. 
Neste exemplo serão coletados o nome e o e-mail do usuário.
No Google Docs, clique em Criar novo > Formulário.
Na tela do formulário, preencha o Título e o Texto informativo.
Edite as perguntas. Um formulário do Google Docs, por padrão, vem com duas perguntas, neste caso basta editá-las clicando no ícone de edição (um lápis). Clique em concluído pra finalizar.
No primeiro campo, sugira a inserção do nome e, no segundo, o preenchimento do e-mail.
Se quiser, marque a caixa "tornar esta pergunta obrigatória" para validar a entrada do campo.
Nota: Você pode inserir o formulário em um website clicando em Mais Ações > Incorporar, e também alterar o tema de visualização clicando no botão tema. Para utilizar o formulário, utilize o endereço gerado no rodapé.
Clique em Ver Respostas > Planilha. A planilha de coleta das informações está pronta para receber os dados.

Modificando a planilha para enviar e-mails

Agora é necessário fazer algumas modificações na planilha para que ela possa enviar e-mail aos usuários cadastrados.
Neste exemplo, vou utilizar um modelo de texto que será personalizado com o nome do usuário. Assim, fica fácil editar um novo texto e enviar a todos os contatos sem necessidade de alteração do script.

Defina a célula D1 como "Texto da mensagem" e a E1 como "Total de usuários". Agora é necessário saber quantos usuários estão cadastrados. Para isso, utilizaremos a função CountA, que conta a quantidade de células com valores em um intervalo definido.
Na célula F1, defina o valor da fórmula para =CountA(B2:B1000), assim ele contará os usuários da linha 2 até a 1000.
Para isolar o modelo do texto da mensagem, é interessante condicioná-lo em uma nova planilha.
Clique em Adicionar Página. Clique na na nova planilha (Página2) e selecione Renomear, defina o nome para Modelo.
Na planilha Modelo, defina as células conforme a figura abaixo:
Perceba que na célula B2 utilizei o texto da seguinte maneira: Olá $nome...
O $nome é um coringa, para que o texto possa ser personalizado com o nome do usuário. Para isso, será utilizada a função Substitute.
Na planilha Página1, célula D2, insira a fórmula =SUBSTITUTE(Modelo!$B$2;"$nome";B2;0). Essa fórmula fará a troca do texto coringa $nome pelo nome do usuário cadastrado na planilha.
Replique a fórmula até o fim de sua lista de usuários.

Criando o script para enviar e-mails

A última parte de nosso estudo, enviar os e-mails para os contatos.
O Google Docs trabalha com scripts (baseados em linguagem java) que manipulam classes, otimizando os recursos. Neste exemplo vamos utilizar a classe MailApp para enviar os e-mails linha a linha.
Clique no menu Ferramentas > Scripts > Editor de Scripts.
No editor, insira o script abaixo:

// Envio de e-mail
function EnviarEmail() {

// Variáveis
var vplan = SpreadsheetApp.getActiveSheet();
var vtotal = vplan.getRange("f1").getValue();
var vparamail = "";
var vmsgmail = "";
var vassunto = "Teste de envio";

//Varre a lista de e-mails
  for (var i = 2; i < (vtotal+2); ++i){

    //Recupera os valores
    vparamail = vplan.getRange(i, 3).getValue();
    vmsgmail = vplan.getRange(i, 4).getValue();
    vplan.getRange(i,5).setValue("E-mail enviado");

    // Envia o e-mail  
    MailApp.sendEmail(vparamail, vassunto, vmsgmail);

    }
}?
Salve seu script como o nome EnviarEmail. 
Nota: se preferir, coloque uma descrição.
Neste momento, o script já pode ser executado da janela do editor, mas é interessante acessar o mesmo pela forma que será mais utilizada.
A seguir, feche a janela do Editor de Script.
Clique em Ferramentas > Script > Gerenciar... e selecione o script EnviarEmai. Clique em Run.
Nota: na primeira execução, será necessário autorizar o Gmail a enviar as mensagens, portanto, na tela abaixo clique em Authorize
Durante a execução, será exibido na coluna E o texto "E-mail Enviado", confirmando o envio.
Através desses procedimentos, podemos atribuir mais uma nova função ao Google Docs, receptor de dados e envio de e-mails.