Skip to content

PHP i Google Sheets

Ako pravimo PHP aplikaciju koji treba da čita (a i piše) iz neke Gugl tabele, evo postupka:

1. Google API Client

Treba nam Composer kako bismo instalirali Google API Client. Google API Client će nam olakšati rad sa autorizacijom i pristupom Gugl resursima. Za instalaciju je potrebno, u direktorijumu u kojem se nalazi naš projekat, kreirati sledeći composer.json fajl:

{
    "require": {
        "google/apiclient": "^2.0"
    }
}

i pokrenuti composer update. Nakon ovoga će nam se pojaviti vendor direktorijum sa svim potrebnim klasama plus autoload skriptom.

2. API Manager

Idemo na https://console.developers.google.com/apis/dashboard da kreiramo projekat. Nakon toga klik na Enable API i sa liste biramo Sheets API.

3. Credentials

Sledeći korak su kredencijali. Idemo na Credentials > Create credentials > Service account key. Biramo New service account, dajemo mu ime a kao ulogu (role) Project > Service Account Actor. Key type nam je JSON fajl koji ćemo da skinemo i spremimo negde na sigurno.

4. Permissions

Na kraju je potrebno da dodelimo dozvole za rad sa dokumentom korisniku čiji mejl se nalazi u JSON fajlu. Dozvola može da bude samo za čitanje ili i za čitanje i pisanje u zavisnosti od toga šta želimo da naša PHP aplikacija radi.

5. PHP

Primer u PHP-u za čitanje podataka iz dokumenta sa datim ajdijem, radnim listom 2017 i iz ranga ćelija A1:AH13:

<?php

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

$jsonFile = "auth.json";
$spreadsheetId = 'nbg9GnVy6bckblablatruć';
$range = '2017!A1:AH';

$client = new \Google_Client();
$client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
$client->setAccessType('offline');

$fh = fopen($jsonFile, "r");
$client->setAuthConfig(json_decode(file_get_contents($jsonFile), true));
fclose($fh);

$sheets = new \Google_Service_Sheets($client);
$data = $sheets->spreadsheets_values->get($spreadsheetId, $range, ['majorDimension' => 'ROWS']);

print_r($data);

?>

Izvor: www.phillipshipley.com

Leave a Reply

Your email address will not be published. Required fields are marked *