reandimo / google-sheets-helper
一组用于轻松处理Google Sheets API的函数
Requires
- php: >=5.4.0
- google/apiclient: ^2.12
Requires (Dev)
- phpunit/phpunit: 9.5.x-dev
README
Google电子表格API助手 - 一组用于轻松处理Google Sheets API的函数
这个库是一个辅助库,封装了Google APIs Client Library for PHP (文档),以实现简单的使用。
概述
需求
此库需要以下内容
- 依赖于Google Client API
- PHP 5.4或更高版本,具有命令行界面(CLI)和
- 安装了PHP扩展JSON
- 一个启用了API的Google Cloud Platform项目。要创建项目并启用API,请参阅创建项目并启用API
安装
在您的项目中运行Composer
composer require reandimo/google-sheets-helper
然后,根据您的PHP框架在Composer加载后调用它
require __DIR__ . '/vendor/autoload.php'; $credentialFilePath = 'path/to/credentials.json'; $tokenPath = 'path/to/token.json'; $sheet1 = new \reandimo\GoogleSheetsApi\Helper($credentialFilePath, $tokenPath);
此外,您可以使用putenv()来设置credentials.json和token.json,如下所示
require __DIR__ . '/vendor/autoload.php'; putenv('credentialFilePath=path/to/credentials.json'); putenv('tokenPath=path/to/token.json'); $sheet1 = new \reandimo\GoogleSheetsApi\Helper();
现在,当您创建一个新的实例时,类会自动检测路径。这是推荐的方法。
凭证
Google API Client需要验证两个文件credentials.json和token.json,后者可以使用包中包含的名为firstauth的脚本生成。您可以使用它来生成此文件,以便首次授予对API的访问权限。
在您的项目根目录中执行php ./vendor/reandimo/google-sheets-helper/firstauth
并按照步骤操作。
这是一个基于谷歌文档中提到的quickstart.php的3步脚本(https://developers.google.com/sheets/api/quickstart/php)。
使用
创建实例
设置电子表格属性
您可以拥有多个电子表格实例,只需像您想要的次数一样多次调用辅助程序即可
use reandimo\GoogleSheetsApi\Helper; putenv('credentialFilePath=path/to/credentials.json'); putenv('tokenPath=path/to/token.json'); $sheet1 = new Helper(); $sheet1->setSpreadsheetId('somespreadsheetid'); $sheet1->setWorksheetName('Sheet1'); $sheet1->setSpreadsheetRange('A1:A20'); $sheet2 = new Helper(); $sheet2->setSpreadsheetId('somespreadsheetid'); $sheet2->setWorksheetName('Sheet2'); $sheet2->setSpreadsheetRange('B1:B20');
获取值
从范围获取值
$sheet1->setSpreadsheetRange('A1:A3'); $insert = $sheet1->get();
追加数据
追加单行
$sheet1->setSpreadsheetRange('A1:A3'); $insert = $sheet1->appendSingleRow([ 'some', 'useful', 'data', ]);
该函数将返回更新的行数,以int形式。因此,您可以像这样检查是否完成
if($insert >= 1){ echo 'Insert done Hackerman.'; }
追加范围
$sheet1 = new Helper(); $sheet1->setSpreadsheetId('somespreadsheetid'); $sheet1->setWorksheetName('Sheet1'); $sheet1->setSpreadsheetRange('A1:A'); $i = $sheet1->append([ ['test4', 'this4', 'shit4'], ['test2', 'this2', 'shit2'], ['test3', 'this3', 'shit3'], ]);
更新数据
更新单个单元格
$sheet1 = new Helper(); $sheet1->setSpreadsheetId('somespreadsheetid'); $sheet1->setWorksheetName('Sheet1'); $update = $sheet1->updateSingleCell('B5', "Hi i'm a test!"); if($update->getUpdatedCells() >= 1){ echo 'Cell updated.'; }
更新范围
$sheet1 = new Helper(); $sheet1->setSpreadsheetId('somesheetid'); $sheet1->setWorksheetName('Sheet1'); $sheet1->setSpreadsheetRange('A1:F5'); $update = $sheet1->update([ ['val1', 'test2', 'int3', 'four', '5', 'six6'], ['val1', 'test2', 'int3', 'four', '5', 'six6'], ['val1', 'test2', 'int3', 'four', '5', 'six6'], ['val1', 'test2', 'int3', 'four', '5', 'six6'], ['val1', 'test2', 'int3', 'four', '5', 'six6'], ]); // Get updated cells if($update->getUpdatedCells() >= 1){ echo 'Range updated.'; }
工作表
复制工作表
$sheet1 = new Helper(); $sheet1->setSpreadsheetId('somesheetid'); $sheet1->setWorksheetName('Sheet1'); // select the Worksheet you want to duplicate $newWorksheetName = 'New Duplicated Sheet'; // The name of the new sheet $sheet_id = $sheets->duplicateWorksheet($newWorksheetName); // Get updated cells if($sheet_id){ echo 'The sheet was duplicated B)'; }
更改范围背景色
$sheet1 = new Helper(); $sheet1->setSpreadsheetId('somespreadsheetid'); $sheet1->setWorksheetName('Sheet1'); $sheet1->setSpreadsheetRange('A1:Z10'); $sheet1->colorRange([142, 68, 173]);
杂项
通过字母计算列索引
如果您需要计算列的字母位置,这是方法
Helper::getColumnLettersIndex('AZ'); // this will return 52
提示
在不深入挖掘的情况下,Google的文档中的一些事情并不非常清楚,所以我会在这里留下提示
-
要在插入或更新时使单元格为空,必须使用此常量:
Google_Model::NULL_VALUE
。示例
$sheet1->appendSingleRow([ 'John Doe', 'jhon@doe.com', Google_Model::NULL_VALUE, 'Sagittarius', ]);
许可证
此软件包是开源的,并按照MIT许可证发布。有关更多信息,请参阅LICENSE文件。
有问题吗?问题?
请随时提出建议、问题和问题。
幕后之人
Renan Diaz,我从2017年开始处理PHP,从2019年开始处理Google的API。请随时给我写信(请勿发送任何多级垃圾)。