Google Drive – Criando Macros (ou quase isso) no Google Spreadsheet

Admirável mundo novo! Na verdade, o Google Docs, hoje rebatizado para Google Drive, nem é tão novo. Mas o uso deste passou a ser mais comum com a chegada de novos serviços e aplicativos baseados em nuvem, e claro, o Google Chrome, que tornou a vida destes mais amigável.

Não sei ao certo a quanto tempo, mas o aplicativo de planilhas do Google Drive já suporta criação de Scripts, o que na linguagem dos VBAzeiros de plantão significa Macros. Opa! Agora ficou interessante! E como!

Claro, não é exatamente a mesma coisa, mas tem a mesma função e contexto, que é a de automatizar rotinas corriqueiras em planilhas e criar facilitadores. O que pretendo aqui é mostrar que é possível fazer o proposto, sendo uma ótima alternativa para automatizar nossas planilhas que estão cada vez mais fora de nossos computadores.

Criando o Script

Vamos fazer algo simples, mas útil. As planilhas do Google Drive não reconhecem emails como links, a não ser que você use a função HYPERLINK. Se for só um email, tudo bem, mas quando você tem uma lista, a coisa fica chata. Vamos automatizar isso.

Abra o Google Drive e crie uma nova Planilha (nem preciso dizer que você precisa de uma conta no Google, certo?).

Criando uma nova planilha no Google Drive
Criando uma nova planilha no Google Drive

Agora, crie uma lista simples de emails:

Planilha no Google Drive com emails de exemplo
Planilha no Google Drive com emails de exemplo

No menu principal, vá na Ferramentas -> Gerenciador de Scripts para apresentar a seguinte tela:

Gerenciador Scripts
Gerenciador Scripts

Aqui estarão todos os scripts que você tiver criado para sua planilha. No seu caso, essa lista provavelmente estará vazia. De toda forma, clique na opção novo e a seguinte janela se abrirá:

Tela Inicial do Gerenciador de Scripts
Tela Inicial do Gerenciador de Scripts

Nesta tela há toda uma central de ajuda que auxiliar no entendimento e no processo de criação de scripts para seus documentos no Google Drive. Você dar uma passeada por aqui, mas para nosso tutorial, vamos apenas fechar essa tela e continuar.

O que aparece é a tela de código com uma função vazia para você começar a trabalhar.

Gerenciador de Scripts - Nova função
Gerenciador de Scripts – Nova função

E é aqui que começamos. O primeiro fato que você terá que se acostumar, caso você seja um programador VBA, é que aqui, a linguagem de automação não é mais o Visual Basic, mas sim o Javascript. Com isso você vai ter que se acostumar. O lado bom é que além do Javascript ser uma linguagem poderosa, atualmente ela é tida como a linguagem de programação mais promissora do mercado.

Dê um nome para seu projeto (onde está escrito projeto sem título) e onde está sua função vazia (myFunction), substituia pelo seguinte código:

function convertToHyperlink() {
  var range = SpreadsheetApp.getActiveRange();
  var emailpattern = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
 
  var numRows = range.getNumRows();
  var numCols = range.getNumColumns();
  for (var i = 1; i <= numRows; i++) {
    for (var j = 1; j <= numCols; j++) {
      var value = range.getCell(i,j).getValue();
 
      if (value.match(emailpattern))
      {
        value = "=HYPERLINK(\"mailto:" + value + "\"; \"" + value + "\")";
        range.getCell(i,j).setValue(value);
      }
      else {
        Browser.msgBox("Ops! " + value + " on cell '" + range.getCell(i, j).getA1Notation() + "' is not a valid email");
      }
    }
  }
};

Em resumo, o que o código faz é fazer um loop nas células que estão selecionadas (SpreadsheetApp.getActiveRange(), aquivalente ao Selection no VBA do Excel e verifica uma a uma se ela contém um email válido através de uma Expressão Regular. Se a célula conter um email válido, ele aplicar a função HYPERLINK. Caso contrário, emite um aviso usando a função Browser.msgBox, que obviamente é o bom e velho MsgBox.

A parte chata é que o modelo de objetos não oferece um meio facilitado de fazer um loop do tipo ForEach nas células. Como é possível ver no código, é preciso fazer um loop duplo (linha, coluna) para ter acesso a todas as células.

Com o código aplicado, salve seu script (botão salvar) e fecha a janela. Você estará de volta a sua planilha. Selecione todas as celulas preenchidas, vá até o menu Ferramentas->Gerenciador de Scripts. Na tela, deve aparecer a sua função. Clique sobre o nome dela e depois em Executar. O resultado será o seguinte:

Executando a função convertToHyperlink
Executando a função convertToHyperlink

Claro. Como a célula A5 não contém um email válido, ele emitou o aviso. Para o restante, a função é executa e o resultado é:

Email com link
Email com link

Está feito! Nossos emails na planilha agora são clicáveis.

Resumo

É um começo. Nem de longe quis aqui abranger tudo o que os scripts do Google Drive podem fazer, mas sim abrir aqui a possibildade para programadores VBA explorarem essa funcionalidade. Assim como as macros em VBA, o scripts do Google Drive irão facilitar a vida das planilhas online e provavelmente sejam um novo e bem vindo lar para aqueles que se sentiam fora do eixo vendo as aplicações migrarem pouco a pouco para a internet.

Bom divertimento!

 

Comentários

comentários

One thought on “Google Drive – Criando Macros (ou quase isso) no Google Spreadsheet”

  1. Estou precisando muito de ajuda.
    Tenho uma planilha no google drive que precisa de um script simples, consigo fazer isso em VBA e não em java.
    Quando uma célula de uma determinada coluna for preenchida a célula da coluna seguinte é preenchida automaticamente com a hora atual.
    Caso ajude o VBA,
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
    Cells(Target.Row, 4).Value = ” ” & Time
    End If
    If Target.Column = 7 Then
    Cells(Target.Row, 8).Value = ” ” & Time
    End If
    End Sub

Comments are closed.