ksenonda / my-g-s
Google spreadsheet client
dev-main
2021-06-01 08:51 UTC
Requires
- google/apiclient: 2.*
This package is auto-updated.
Last update: 2024-10-29 06:19:33 UTC
README
Google Spreadsheet Client for PHP. This requires 'google/apiclient' package.
Get started
1. Get key file
- Log in Google Developer Console
- Create new project
- Create Service Account credentials in the project
- Download key file as JSON
2. Create spreadsheet
- Create a new spreadsheet in Google Drive
- Authorize the email address, which is found as 'client_email' in key file, to read and edit.
- Save the file ID from address bar.
3. Access by PHP
$client = Google_Spreadsheet::getClient('the/path/to/credential.json'); // Get the sheet instance by sheets_id and sheet name $sheet = $client->file('XXXxxxXXXXxxxXXXX')->sheet('Sheet1'); // Fetch data from remote (or cache) $sheet->fetch(); // Flush all rows in the sheet var_dump($sheet->items);
Usage
Initialize sheet
The target sheet must be empty
$sheet->init(array( 'id', 'name', 'age', 'email', 'note' ));
Select rows
// Array $items = $sheet->select(array( 'id' => '1' )); // Closure $items = $sheet->select(function($row){ return (int) $row['age'] < 30; });
Insert a new row
// Insert a new row $sheet->insert(array( 'name' => 'John', 'age' => 23, 'email' => 'john@example.com' )); // Get up-to-date items $items = $sheet->fetch(true)->items;
Update rows
// Update rows selected by array $sheet->update( array( 'email' => 'tom@example.com' ), array( 'name' => 'Tom' ) ); // Update rows selected by closure $sheet->update( array( 'email' => 'tom@example.com' ), function($row){ return $row['name'] === 'Tom'; } ); // Get up-to-date items $items = $sheet->fetch(true)->items;
Delete rows
// delete rows selected by array $sheet->delete( array( 'name' => 'Tom' ) ); //delete rows selected by closure $sheet->delete( function($row){ return $row['name'] === 'Tom'; } ); // Get up-to-date items $items = $sheet->fetch(true)->items;
Update cells
edit
method let you to update cells' value manually
// Update `B2` cell $sheet->edit(2, 2, 'Tom'); // Update `C1:C4` cells $sheet->edit(3, 1, array(1, 'John', 23, 'john@example.com'));
Get up-to-date table data
// Pass `true` to ignore cache $items = $sheet->fetch(true)->items;
Save cache option
$sheet->config(array( 'cache' => true, 'cache_dir' => __DIR__ . '/cache', 'cache_expires' => 360 ));
Requirement
- google/apiclient (Apache License v2.0)