post

Ler planilha Google Sheets com PHP

Publicado em: 17/08/2021

Categorias: blog Google Google Sheets PHP

É possível usar a API do google para ler uma planilha com PHP usando a biblioteca oficial do Google Sheets API.

Abaixo vou mostra de maneira resumida como criar sua primeira leitura de planilha com PHP.

1° Servidor com SSL

Para usar ou testar a biblioteca do google, você precisa de um ambiente seguro (com certificado SSL/TLS) se não a biblioteca retornará um erro em sua tela.

Caso não tenha um servidor local com certificado, você deverá hospedar em um servidor online.

Para este exemplo, vamos levar em consideração que estou usando um servidor online, e criei uma pasta para este projeto específico chamada de projeto-google-sheets.

Então dentro do meu servidor online, tenho até o momento uma pasta vazia chamada projeto-google-sheets, com a arquitetura abaixo:

projeto-google-sheets/

2° Instalando biblioteca PHP

Através do terminal de comando, via SSH, é possível instalar as dependências da biblioteca com o comando:

composer require google/apiclient:^2.0

Caso não consiga instalar as dependências via SSH, você pode acessar o link google-api-php-client, fazer o download pelo navegador e subir para seu servidor com algum cliente FTP.

A página Releases lista todas as versões estáveis. Baixe qualquer arquivo com o nome google-api-php-client-[RELEASE_NAME].zip de um pacote, ela inclui todas as dependências do código incluindo a biblioteca.

Nossa arquitetura de arquivos e pastas ficou assim:

projeto-google-sheets/
 - vendor/
 - composer.json
 - composer.lock

3° Arquivo index.php

Após importar a biblioteca de códigos para a pasta do seu projeto, crie/edite o arquivo index.php do seu servidor, para adicionar o trecho de código que chama o arquivo da biblioteca:

require __DIR__ . '/vendor/autoload.php';

O caminho acima é apenas um exemplo de onde estiver localizado o arquivo autoload.php no seu diretório.

Neste exemplo meu diretório do projeto já esta com esta arquitetura:

projeto-google-sheets/
 - vendor/
 - composer.json
 - composer.lock
 - index.php

4° Registrar uma aplicação no Google Cloud Plataform

Para ler a planilha, você precisa de uma aplicação rodando no Google Cloud Plataform, acesse https://console.cloud.google.com/ com sua conta google (caso não tenha, crie uma).

Clique em “Menu de navegação” (os 3 risquinhos na parte superior esquerda do painel).

Vá até “APIs e serviços” > Credenciais.

Clique em “+ Criar Credenciais” > “Conta de serviço“.

Preencha o formulário, de um nome para sua aplicação, e clique em continuar.

As duas etapas depois são opcionais, então apenas clique em continuar e depois em concluir.

Após criar sua conta de serviço, você precisa obter as credenciais dessa conta de serviço que acabou de criar.

Vá até a lista de “Contas de serviço“, clique em cima do e-mail que foi criado, na barra de menu horizontal clique em “CHAVES“.

Na pagina “chaves” clique no botão “ADICIONAR CHAVE” > Criar nova chave.

Em “Tipo de chave“, deixe selecionado “JSON“, e clique em criar.

Após isso, automaticamente as credenciais vão ser baixadas em seu computador através de um arquivo JSON. Essas credenciais não ficam salvas no painel da conta do google por motivos de segurança, e a única cópia delas agora esta com você.

Faça o upload do arquivo de credenciais em JSON que você baixou agora, no servidor/diretório onde esta seu projeto que estamos criando.

Neste exemplo, eu renomeei o arquivo JSON com as credenciais para: credenciais.json, apenas para ficar mais fácil o entendimento, mas você pode dar o nome que quiser.

Nossa arquitetura de arquivos e pastas no servidor esta assim agora:

projeto-google-sheets/
 - vendor/
 - composer.json
 - composer.lock
 - index.php
 - credenciais.json

5° Criando as funções de conexão

Agora vamos criar as funções que vão autenticar nossa conexão com a planilha em PHP responsáveis de executar nosso código.

Logo abaixo da linha que chama o arquivo autoload.php, adicione o código abaixo:

$client = new \Google_Client();
$client->setApplicationName('nome da sua aplicação');
$client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
$client->setAccessType('offline');
$client->setAuthConfig(__DIR__ . '/credenciais.json');
$client->setPrompt('select_account consent');

$service = new Google_Service_Sheets($client);

Acima você deve apenas alterar onde esta escrito “nome da sua aplicação” pelo nome que você deu a sua aplicação de conta na etapa 4 deste artigo, e onde esta “credenciais.json” para o nome do arquivo com as credenciais, que para este exemplo dei o nome de credenciais.json mesmo para ficar mais fácil.

6° Adicionar o ID da planilha

Agora logo abaixo aos script de conexão, vamos criar uma variável para trazer o ID único da planilha online que queremos trazer as informações.

$spreadsheetId = "1zYSaazVz12c6vCkrEpd89GYRa3ax804u7BV62";

No código acima, criei uma variável PHP chamada de $spreadsheetId e o valor dela é o ID de uma planilha teste, que você deve alterar para o ID da planilha que quer ler, para isso, acesse https://docs.google.com/spreadsheets, selecione ou crie uma planilha, ao abrir a planilha no navegador a URL será parecida com esta:

https://docs.google.com/spreadsheets/d/1zYSaazVz12c6vCkrEpd89GYRa3ax804u7BV62/edit

Veja que a URL da planilha trás o ID da mesma, logo depois de /d/ e antes de /edit

Copie todo o ID, e cole na variável acima.

7° Compartilhar acesso

Ainda com a planilha aberta, na parte superior direita da tela, você verá um botão em destaque escrito “Compartilhar“, clique nele para abrir a janela de compartilhamento.

Na sessão “Compartilhar com pessoas e grupos“, você deverá digitar o endereço de e-mail da sua conta de serviço (aquela aplicação que criamos, lá no painel do Google Cloud Plataform).

Para obter esse endereço de e-mail da aplicação de conta de serviço, acesse o painel do Google Cloud Plataform > Menu > APIs e serviços > Credenciais > Contas de serviço e pronto, ali esta o endereço de e-mail da sua aplicação, será parecido com este: nome-da-sua-aplicacao@lithe-altar-318801.iam.gserviceaccount.com, porem onde esta escrito “nome-da-sua-aplicacao” será o nome da conta que você criou.

Com este e-mail copiado, volte para a planilha, e cole o endereço de e-mail no campo “Adicione pessoas e grupos” e clique em enviar.

Com o e-mail da aplicação de conta de serviço do Google Cloud Plataform adicionado a sua planilha, vamos para a ultima etapa.

8° Executar a leitura via PHP

Agora sim, com todas as nossas configurações realizadas, vamos executar o comando em PHP para ler nossa planilha, e exibir os dados dela na tela.

Use o código abaixo para isso:

$range = "A2:U";
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();

Explicando o código acima:

  • $range = É responsável para que o código salva por onde começar a ler, neste exemplo, colocamos o valor “A2:U“, isso quer dizer que a nossa aplicação vai começar a ler da coluna A até apenas a coluna U, e irá começar a trazer os dados a partir da linha 2. Isso porque em nosso exemplo a linha 1 seria o cabeçalho da planilha com as informações do que é cada coluna, então vamos pular essa linha, mas você pode fazer como quiser.
  • $response = É a variável que recebe o retorno da função spreadsheets_values->get. Esta função esta recebendo os valores das variáveis $spreadsheetId e $range, que definimos logo acima.
  • $values = É a variável que recebe o retorno da variável $response, porem com a execução da função getValues() para trazer apenas o resultado dos valores.

Após executar os códigos acima, você pode dar um var_dump($values) ou até mesmo um echo json_encode($values) para exibir os valores retornados na tela.

Ou construir uma visualização em HTML para ficar mais agradável a visualização dos resultados, como exemplo abaixo:

<table>
    <thead>
      <tr>
        <th> Nome </th>
        <th> E-mail </th>
        <th> Endereço </th>
      </tr>
    </thead>
    <tbody>
      <?php foreach ($values as $row) { ?>
          <tr>
            <td> <?= $row[0] ?> </td>
            <td> <?= $row[1] ?> </td>
            <td> <?= $row[2] ?> </td>
          </tr>
        <?php } ?>
    </tbody>
</table>


Link de compartilhamento

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.

bruno.art.br/pb/1016

ID de Referência: 1016

Sugira uma publicação

Envie uma mensagem para mim, e sugira alguma publicação de algum tema que tenha dificuldades de resolver.

Clique aqui e entre em contato


Comentários