survos/google-sheets-bundle

该捆绑包使用Google API管理Google电子表格。

资助包维护!
kbond

安装: 59

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle


README

灵感来自 / 分支自 https://github.com/Gabb1995/EXS-GoogleSheetsBundle

有用参考

EXS-GoogleSheetsBundle

非常简单的Google电子表格集成包装器

这个捆绑包在做什么?

此捆绑包将Google API电子表格服务的基本方法作为Symfony服务提供。
方法:获取|创建|更新|清除|删除

用法

配置

  1. 设置您的Google项目并获取客户端密钥文件。
    点击此处获取客户端密钥并设置项目应用程序名称

  2. 将客户端密钥文件保存为'client_secret.json'到您的项目中。

  3. 在Symfony配置文件中添加客户端密钥文件位置、项目应用程序名称和凭证位置

survos_google_sheets:
    application_name: 'Google Sheets API'
    credentials: '%kernel.root_dir%/config/sheets.googleapis.com.json'
    client_secret: '%kernel.root_dir%/config/client_secret.json'

设置捆绑包中的文件位置后,捆绑包将创建凭证。
默认位置: '/Credentials/sheets.googleapis.com.json'

创建访问令牌

创建Google API的访问令牌。

  1. 通过命令行执行服务。
    服务将为您提供获取验证码的链接。
bin/console googlesheets:execute --function=token
  1. 从链接复制验证码,然后将其输入到命令行中。

输入

id: 电子表格id
title: 表格(选项卡)标题
header: 表头行数。
data: 网格数据的二维数组。

$data = [
    [ COL1_HEADER, COL2_HEADER, ...],
    [ ROW1COL1_CELL_VALUE, ROW1COL2_CELL_VALUE, ...],
    [ ROW1COL2_CELL_VALUE, ROW2COL2_CELL_VALUE, ...],
    ....
];

方法

SETUP(所有方法通用)。

注入GoogleSheetsApiService或从容器中获取它。

例如:使用要管理的电子表格ID设置API客户端。

    public function __construct(
        private readonly GoogleApiClientService $clientService,
        private readonly GoogleSheetsApiService $sheetService,
    )

$sheetService->setSheetServices(YOUR_SPREADSHEETS_ID_HERE);
GET

获取现有的电子表格

$spreadsheets = $service->getGoogleSpreadSheets(); 
CREATE

在Google电子表格中创建新表格。
返回:插入到新表格中的数据行数。
如果您不提供数据调用函数,它将创建一个空表格。

例如:创建包含数据的表格

$sheetTitle = 'my test sheet';
$data = [
    [ COL1_HEADER, COL2_HEADER, ...],
    [ ROW1COL1_CELL_VALUE, ROW1COL2_CELL_VALUE, ...],
    ....
];
$response = $service->createNewSheet($sheetTitle, $data);
UPDATE

更新现有的电子表格表格。
返回:更新到表格中的数据行数。

如果您只想更新单元格值,而不是表头,请定义表头行数。
例如:仅更新网格数据值。

$header = 1;
$sheetTitle = 'my test sheet';
$data = [
    [ ROW1COL1_CELL_VALUE, ROW1COL2_CELL_VALUE, ...],
    [ ROW2COL1_CELL_VALUE, ROW2COL2_CELL_VALUE, ...],
    ....
];
$response = $service->updateSheet($sheetTitle, $data, $header);
CLEAR

清除整个表格的值。
返回:清除的行数。

$sheetTitle = 'my test sheet';
$response = $service->clearSheetByTitle($sheetTitle);
DELETE

删除电子表格中的现有表格。
返回:布尔值

$sheetTitle = 'my test sheet';
$response = $service->deleteSheetByTitle($sheetTitle); 



示例

创建带表头的表格,然后更新它以包含数据

// setup the service
$service = $this->getContainer()->get('survos_google_sheets.sheets_service');
$service->setSheetServices(YOUR_SPREADSHEETS_ID_HERE);

// create the sheet
$sheetTitle = 'my test sheet';
$data = [
    [ COL1_HEADER, COL2_HEADER, COL3_HEADER]
];
$service->createNewSheet($sheetTitle, $data);

// update grid data
$header = 1;
$data = [
    [ ROW1COL1_CELL_VALUE, ROW1COL2_CELL_VALUE, ROW1COL3_CELL_VALUE],
    [ ROW2COL1_CELL_VALUE, ROW2COL2_CELL_VALUE, ROW2COL3_CELL_VALUE],
    [ ROW3COL1_CELL_VALUE, ROW3COL2_CELL_VALUE, ROW3COL3_CELL_VALUE],
    [ ROW4COL1_CELL_VALUE, ROW4COL2_CELL_VALUE, ROW4COL3_CELL_VALUE]
];
$service->updateSheet($sheetTitle, $data, $header);