Curso de Google Formulários - #14 Inserindo Dados na Planilha
30/11/2020Nesse tutorial nós vamos trabalhar a fundo com a API do Google Planilhas realizando a inserção dos dados preenchidos no formulário diretamente na nossa planilha do Google.
API do Google Spreadsheet - PHP
O site de referência da API é o site do Google Planilhas.
Precisaremos antes de mais nada instalar a nossa lib do Google Planilhas através do terminal utilizando o Composer:
cd c:/wamp64/www/lib
composer require google/apiclient:^2.0
class/ClassClient.php
Essa classe será responsável por definir os dados do usuário no Google:
<?php
namespace Classes;
class ClassClient
{
private $http;
private $client;
#Get Client
public function getClient()
{
$this->http=new \GuzzleHttp\Client(["verify"=>false]);
$this->client = new \Google_Client();
$this->client->setHttpClient($this->http);
$this->client->setApplicationName('Google Forms API');
$this->client->setScopes(\Google_Service_Drive::DRIVE);
$this->client->setAuthConfig('../lib/credentials.json');
$this->client->setAccessType('offline');
return $this->client;
}
}
class/ClassSpreadsheet.php
Essa classe ficará responsável pelas operações de CRUD (Create, read, update e delete)
<?php
namespace Classes;
class ClassSpreadsheet extends ClassClient
{
private $service;
public function __construct()
{
$this->service=new \Google_Service_Sheets($this->getClient());
}
#Inserção de dados na planilha
public function insertSheet($spreadsheetId, $range, $values)
{
$body = new \Google_Service_Sheets_ValueRange(['values' => [$values]]);
$params = ['valueInputOption' => 'RAW'];
$result = $this->service->spreadsheets_values->append($spreadsheetId, $range, $body, $params);
}
}
controllers/FormController.php
Esse arquivo receberá as variáveis e chamará os métodos da ClassSpreadsheet:
<?php
include ("../lib/vendor/autoload.php");
$nome=filter_input(INPUT_POST,'nome',FILTER_DEFAULT);
$genero=filter_input(INPUT_POST,'genero',FILTER_DEFAULT);
$comentario=filter_input(INPUT_POST,'comentario',FILTER_DEFAULT);
$preferencia="";
foreach ($_POST['preferencia'] as $options){
$preferencia.=$options.' - ';
}
$spreadsheet=new \Classes\ClassSpreadsheet();
$spreadsheet->insertSheet(
"ID_DA_SUA_PLANILHA",
"Dados!A1",
[
$nome,
$genero,
$preferencia,
$comentario
]
);
echo "Os dados foram inseridos na planilha!";
Não esqueça de compartilhar a sua planilha como pública para todos editarem.
lib/composer.json
No arquivo de configuração do composer vamos setar os namespaces do autoload do nosso projeto:
"autoload":{
"psr-4":{
"Classes\\":"../class"
}
}
Resolvendo o problema de count()
Para resolver esse problema basta procurar o arquivo CurlFactory.php no seu projeto (lib/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php) e substituir a seguinte linha:
if (($this->handles?count($this->handles):0) >= $this->maxHandles) {
curl_close($resource);
}
Por hoje é só! Sucesso nos códigos e na vida!