Skript, který načte v PHP data z Tabulek Google není o moc složitější než kterékoli zpracování dat z CSV nebo jiného lokálního souboru. Potřebujete jen tu správnou knihovnu v Composeru. Jedna otravná záležitost vás ale nemine. Je jí vytvoření servisního účtu v Google Cloud Consoli.
Jak získat přístupové údaje pro Google Sheets API
Pokud jste v ní ještě nikdy nebyli, tak vězte, že Google Cloud Console je rozhraní, pomocí kterého si vytváříte přístupové údaje pro aplikace a skripty, které nějakým způsobem automatizují práci s aplikacemi Google. Typicky sem zavítáte pro vygenerování klíčů k využívání mapového portálu na svém webu. Ale výjimkou není ani propojení na dokumenty a tabulky.
Nově vytvořenému servisnímu účtu je potřeba přidělit oprávnění do konkrétní Google Tabulky. Otevřete si ji, klikněte na Sdílení a přidejte sdílení pro mailovou adresu servisního účtu. Najdete ji v Google Cloud Consoli i ve staženém JSON souboru.
Jak načítat data z tabulky Google pomocí PHP
To nejsložitější máte za sebou a teď už zbývá dát dohromady jenom PHP skript, který bude data z Tabulky Google zpracovávat.
<?php
require "vendor/autoload.php";
// Připojení k Google API
$client = new \Google_Client();
$client->setApplicationName("Google Sheets API PHP");
$client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
// Načtení pověření z JSON souboru
$client->setAuthConfig("vas-klic.json");
$service = new \Google_Service_Sheets($client);
// ID tabulky (z URL Google Sheets)
$spreadsheetId = "id-vasi-tabulky";
// Rozsah dat (např. A1:G, tedy všechny řádky a sloupce A až G)
$range = "List 1!A1:G";
// Načtení dat z tabulky
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
if (empty($values)) {
echo "Žádná data nenalezena.\n";
} else {
foreach ($values as $rowIndex => $row) {
if (isset($row[6]) && $row[6] == "FALSE") {
echo implode(", ", $row) . "\n";
$updatedRange = "List 1!G" . ($rowIndex + 1);
// +1 kvůli tomu, že indexace začíná na 0
$body = new \Google_Service_Sheets_ValueRange([
'values' => [["TRUE"]]
]);
// Aktualizuj tabulku
$params = ['valueInputOption' => 'RAW'];
$service->spreadsheets_values->update($spreadsheetId, $updatedRange, $body, $params);
}
}
}
Tip: vyhodnocení TRUE a FALSE mě dosti potrápilo. Dostal jsem za úkol zpracovat tabulku, kde je ve sloupečku prázdné nebo zaškrtnuté zatrhovátko. Zobrazení hodnoty mi ukazovalo TRUE nebo FALSE, ale podmínka na něj nereagovala. Až klasická záchrana programátora var_dump($row); mi ukázala, že tento boolean je v tabulce ve skutečnosti uložen jako řetězec. Mimochodem, ukládání zpět jako TRUE nezachová v dokumentu zatrhovátko, ale s tím se dá žít.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Přidat komentář