lavaei/laravel-google-sheets
Composer 安装命令:
composer require lavaei/laravel-google-sheets
包简介
Google Sheets API v4
README 文档
README
Requirements
- PHP >= 7.4
- Laravel >= 6.0
Versioning
- Basic : semver
- Drop old PHP or Laravel version :
+0.1. composer should handle it well. - Support only latest major version (
masterbranch), but you can PR to old branches.
Installation
Composer
composer require revolution/laravel-google-sheets
Laravel
-
This package depends on https://github.com/pulkitjalan/google-apiclient
-
Run
php artisan vendor:publish --provider="PulkitJalan\Google\GoogleServiceProvider" --tag="config"to publish the google config file// config/google.php // OAuth 'client_id' => env('GOOGLE_CLIENT_ID', ''), 'client_secret' => env('GOOGLE_CLIENT_SECRET', ''), 'redirect_uri' => env('GOOGLE_REDIRECT', ''), 'scopes' => [\Google\Service\Sheets::DRIVE, \Google\Service\Sheets::SPREADSHEETS], 'access_type' => 'online', 'approval_prompt' => 'auto', 'prompt' => 'consent', //"none", "consent", "select_account" default:none // or Service Account 'file' => storage_path('credentials.json'), 'enable' => env('GOOGLE_SERVICE_ENABLED', true), -
Get API Credentials from https://developers.google.com/console
EnableGoogle Sheets API,Google Drive API. -
Configure .env as needed
GOOGLE_APPLICATION_NAME= GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= GOOGLE_REDIRECT= GOOGLE_DEVELOPER_KEY= GOOGLE_SERVICE_ENABLED= GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION=
Demo
Another Google API Series.
- https://github.com/kawax/laravel-google-photos
- https://github.com/kawax/laravel-google-searchconsole
Usage
| id | name | |
|---|---|---|
| 1 | name1 | mail1 |
| 2 | name2 | mail2 |
https://docs.google.com/spreadsheets/d/{spreadsheetID}/...
Basic Laravel Usage
use Sheets; $user = $request->user(); $token = [ 'access_token' => $user->access_token, 'refresh_token' => $user->refresh_token, 'expires_in' => $user->expires_in, 'created' => $user->updated_at->getTimestamp(), ]; // all() returns array $values = Sheets::setAccessToken($token)->spreadsheet('spreadsheetId')->sheet('Sheet 1')->all(); // [ // ['id', 'name', 'mail'], // ['1', 'name1', 'mail1'], // ['2', 'name1', 'mail2'] // ]
Basic Non-Laravel Usage
use Google\Client; use Revolution\Google\Sheets\Sheets; $client = new Client(); $client->setScopes([Google\Service\Sheets::DRIVE, Google\Service\Sheets::SPREADSHEETS]); // setup Google Client // ... $service = new \Google\Service\Sheets($client); $sheets = new Sheets(); $sheets->setService($service); $values = $sheets->spreadsheet('spreadsheetID')->sheet('Sheet 1')->all();
Get a sheet's values with the header as the key
// get() returns Laravel Collection $rows = Sheets::sheet('Sheet 1')->get(); $header = $rows->pull(0); $values = Sheets::collection($header, $rows); $values->toArray() // [ // ['id' => '1', 'name' => 'name1', 'mail' => 'mail1'], // ['id' => '2', 'name' => 'name2', 'mail' => 'mail2'] // ]
Blade
@foreach($values as $value) {{ data_get($value, 'name') }} @endforeach
Using A1 Notation
$values = Sheets::sheet('Sheet 1')->range('A1:B2')->all(); // [ // ['id', 'name'], // ['1', 'name1'], // ]
Updating a specific range
Sheets::sheet('Sheet 1')->range('A4')->update([['3', 'name3', 'mail3']]); $values = Sheets::range('')->all(); // [ // ['id', 'name', 'mail'], // ['1', 'name1', 'mail1'], // ['2', 'name1', 'mail2'], // ['3', 'name3', 'mail3'] // ]
Append a set of values to a sheet
// When we don't provide a specific range, the sheet becomes the default range Sheets::sheet('Sheet 1')->append([['3', 'name3', 'mail3']]); $values = Sheets::all(); // [ // ['id', 'name', 'mail'], // ['1', 'name1', 'mail1'], // ['2', 'name1', 'mail2'], // ['3', 'name3', 'mail3'] // ]
Append a set of values with keys
// When providing an associative array, values get matched up to the headers in the provided sheet Sheets::sheet('Sheet 1')->append([['name' => 'name4', 'mail' => 'mail4', 'id' => 4]]); $values = Sheets::all(); // [ // ['id', 'name', 'mail'], // ['1', 'name1', 'mail1'], // ['2', 'name1', 'mail2'], // ['3', 'name3', 'mail3'], // ['4', 'name4', 'mail4'], // ]
Add a new sheet
Sheets::spreadsheetByTitle($title)->addSheet('New Sheet Title');
Deleting a sheet
Sheets::spreadsheetByTitle($title)->deleteSheet('Old Sheet Title');
Specifying query parameters
$values = Sheets::sheet('Sheet 1')->majorDimension('DIMENSION_UNSPECIFIED') ->valueRenderOption('FORMATTED_VALUE') ->dateTimeRenderOption('SERIAL_NUMBER') ->all();
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/get#query-parameters
Use original Google_Service_Sheets
$sheets->spreadsheets->... $sheets->spreadsheets_sheets->... $sheets->spreadsheets_values->... Sheets::getService()->spreadsheets->...
see https://github.com/google/google-api-php-client-services/blob/master/src/Google/Service/Sheets.php
LICENSE
MIT
Copyright kawax
lavaei/laravel-google-sheets 适用场景与选型建议
lavaei/laravel-google-sheets 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 03 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「google」 「laravel」 「sheets」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 lavaei/laravel-google-sheets 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 lavaei/laravel-google-sheets 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 lavaei/laravel-google-sheets 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Magento 2 Social Login extension is designed for quick login to your Magento 2 store without procesing complex register steps
MvcCore - Extension - View - Helper - Assets - to group, render, minify and cache javascript and css files, to prepare all application assets for final application packing.
Google Client library for use with ProcessWire CMS/CMF.
Client for Google Directions API to add interpolated points to a route consisting of given coordinates.
Alfabank REST API integration
PHP compressor merge multiple css and js files into one file
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-03-22