reandimo/google-sheets-helper

一组用于轻松处理Google Sheets API的函数

v1.1.0 2023-10-13 15:41 UTC

This package is auto-updated.

Last update: 2024-09-14 18:58:33 UTC


README

Latest Stable Version License PHP Version Require

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。请随时给我写信(请勿发送任何多级垃圾)。