Google Planilhas Avançado - #43 Lendo dados da Planilha via API
06/01/2020Na aula de hoje realizaremos a leitura dos dados vindos da planilha do Google Spreadsheet utilizando a API.
Lendo dados via API do Google Planilhas
Antes de iniciar os trabalhos com o PHP, não esqueça de iniciar o WampServer e verificar se ele está verdinho no canto inferior direito da barra de ferramentas.
Começaremos a desenvolver pelo nosso html do index.php que ficará assim:
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>API Google Planilhas</title>
</head>
<body>
<h1>API Google Planilhas</h1><hr>
<a href="views/read.php">Leitura de dados</a><br>
</body>
</html>
Posteriormente vamos iniciar o nosso projeto no composer. Vamos seguir os comandos abaixo:
cd c:/wamp64/www/lib
composer init
Vou preencher com os dados do projeto, conforme vemos no vídeo e posteriormente vamos finalizar com:
composer update
composer require google/apiclient:^2.0
Dentro de lib/composer.json vamos inserir o código para trabalharmos com namespaces próprios:
,
"autoload":{
"psr-4":{
"Classes\\":"../class"
}
}
E ao fim, vamos rodar novamente o comando update:
composer update
Criaremos agora o arquivo ClassClient.php que trará as configurações específicas da sua conta do Google.
<?php
namespace Classes;
class ClassClient
{
private $client;
private $http;
protected function getClient()
{
$this->http=new \GuzzleHttp\Client(["verify"=>false]);
$this->client=new \Google_Client();
$this->client->setHttpClient($this->http);
$this->client->setAuthConfig('../lib/credentials.json');
$this->client->addScope(\Google_Service_Drive::DRIVE);
$this->client->setAccessType('offline');
return $this->client;
}
}
Vamos criar agora nossa ClassSpreadsheet.php que fará as operações na planilha:
<?php
namespace Classes;
class ClassSpreadsheet extends ClassClient
{
private $service;
public function __construct()
{
$this->service=new \Google_Service_Sheets($this->getClient());
}
#Read
public function readSheet($spreadsheetId,$sheet,$range)
{
$params=[
"ranges"=>$sheet."!".$range
];
$result=$this->service->spreadsheets_values->batchGet($spreadsheetId,$params);
return $result->getValueRanges()[0]->values;
}
}
Por fim, iremos criar o arquivo read.php que fará, na prática, a leitura e exibição dos dados.
<?php
include("../lib/vendor/autoload.php");
$sheet=new Classes\ClassSpreadsheet();
var_dump($sheet->readSheet("1HeIpedpNNe4S5l_JGm4Il5K0Nq0bT2bF0tBaaHM2C9E","Dados","A1:C5"));
Não se esqueça de acima, trocar o id pelo id da sua planilha.
Caso apareça o erro de count(): Parameters, você precisará atualizar uma parte do
código da API do Google. Para isso, acesse o diretório:
lib/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
No arquivo acima, pesquise por count (aproximadamente na linha 67) e altere o código original para:
if (($this->handles?count($this->handles):0) >= $this->maxHandles) {
curl_close($resource);
}
Sucesso nos códigos e na vida!