eng-mahmoud-elgml / google-integration
本软件包可简化与Google Drive和Google Sheets的集成。
Requires
- google/apiclient: ^2.0
README
概述
这是一个用于帮助与Google服务集成的laravel软件包,主要包括两个服务。
- Google Drive
- Google Sheets
安装
使用CL安装
composer require eng-mahmoud-elgml/google-integration
运行 php artisan vendor:publish --provider="EngMahmoudElgml\GoogleIntegration\Providers\GoogleServiceProvide" --tag="config"
默认情况下,该软件包处理Google回调并返回访问令牌,但您可以覆盖它并使用自己的路由和回调函数。在回调函数中,您只需要从GoogleConnection
类创建对象并使用handleCallback()
方法,将$request['code']
传递给它即可返回访问令牌。
现在,在Google开发者控制台中创建您的Google项目,获取OAuth2凭据,并将其作为json文件下载。从文件中获取值并将其设置在google配置文件或.env文件中。
此外,您将在config/google.php中找到一个名为token的数组,您将在使用Google账号登录后获得它,以获取Google登录链接。
您可以从GoogleConnection
类创建对象并使用getAuthUrl
方法获取链接。
登录后,如果软件包自行处理Google回调,您将在登录后直接获得访问令牌,复制其值并将其粘贴到config/google.php
中的token
数组内。
此外,如果您想将令牌保存在数据库中,您可以在创建任何GoogleFile
或SpreadSheet
对象时,将令牌手动作为构造函数的第二个参数传递。现在您可以开始使用该软件包的功能了。
用法
1- Google Drive功能
要使用drive功能,您必须从GoogleFile
类创建对象并将Google文件ID传递给构造函数,然后您可以
a- 复制它
使用$googleFileObject->copy()
可以复制文件。如果您想以特定名称复制它,可以将名称传递给第一个参数,否则名称将是随机数字。如果您想将其放在特定文件夹中,可以将文件夹ID传递给第二个参数。
和如果要将它保存在特定文件夹中,可以将文件夹ID传递给第二个参数。
b- 导出它
使用$googleFileObject->export()
可以导出文件内容,默认MIME类型为application/pdf
。如果您想更改它,可以将MIME类型传递给第一个参数。但首先请查看:[Google支持MIME类型](https://developers.google.com/drive/api/guides/ref-export-formats)
如果您想直接将其保存到本地磁盘,可以将路径传递给第二个参数,将文件名传递给第三个参数。
c- 删除它
使用$googleFileObject->delete()
可以删除文件。
d- 分享它
使用$googleFileObject->share($email,$role)
可以将文件与特定电子邮件共享,您可以在第二个参数中传递角色,如reader
、writer
或owner
。
2- Google Sheets功能
要使用Google Sheets功能,您必须从SpreadSheet
类创建对象并将工作表ID传递给构造函数,然后您可以
a- 列出工作表文件中的工作表
使用 $spreadSheetObject->list()
可以获取工作簿文件中的所有工作表。
b- 获取工作表数据(读取工作表)
使用 $spreadSheetObject->read($sheetName)
可以获取工作簿文件中特定工作表的所有数据。可以通过传递范围作为第二个参数来获取特定范围的数据。
示例
$spreadSheetObject->read('Sheet1','A1:B2');
c- 更新单元格值
使用 $spreadSheetObject->updateCells($sheetName,$cellesWithItsValues)
可以更新工作簿文件中特定工作表的单元格值。
示例
$spreadSheetObject->updateCells('Sheet1',[ 'A1'=>'value1', 'B1'=>'value2', 'A2'=>'value3', 'B2'=>'value4', ]);
d- 批量更新工作表
如果您想更新工作表中的所有单元格,可以使用 $spreadSheetObject->override($sheetName,$data)
并将工作表名称作为第一个参数,将数据作为第二个参数传递,数据应为数组数组的形式。主数组中的每个数组是工作表中的一行,每个内部的数组是该行中的一个单元格。示例
$spreadSheetObject->override('Sheet1',[ ['value1','value2'], ['value3','value4'], ]);