sectsect / google-spreadsheet-to-db
通过Google的API获取Google电子表格数据并将其保存到WordPress数据库中。
Requires
- php: >=5.5
- google/apiclient: ^2.16
Requires (Dev)
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^7.5 || ^9.5
- squizlabs/php_codesniffer: ^3.7
- szepeviktor/phpstan-wordpress: ^1.3
- wp-coding-standards/wpcs: ^3.0
- yoast/phpunit-polyfills: ^2.0
- dev-master
- v6.4.1
- v6.4.0
- v6.3.0
- v6.2.3
- v6.2.2
- v6.2.1
- v6.2.0
- v6.1.0
- v6.0.0
- v5.1.0
- v5.0.1
- v5.0.0
- v4.1.0
- v4.0.1
- v4.0.0
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.6.0
- v2.5.3
- v2.5.2
- v2.5.1
- v2.5.0
- v2.4.0
- v2.3.1
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.0
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-dependabot/npm_and_yarn/webpack-5.94.0
- dev-feature/phpunit
- dev-feature/github-actions
- dev-feature/update-202106
- dev-typescript
- dev-dev
This package is auto-updated.
Last update: 2024-08-30 19:15:16 UTC
README
"Google Spreadsheet to DB"插件是为WordPress设计的,它通过使用Google的Sheets API (v4)将数据从Google表格导入WordPress数据库。它支持在保存之前进行数据处理,并且可以通过WordPress管理界面进行配置。
特性
- 数据导入:从Google表格中拉取数据并将其直接保存到WordPress数据库中。
- 自定义:提供定义常量、电子表格ID、名称以及配置数据格式的设置。
- 管理界面:提供了一个管理页面,方便管理和配置插件设置。
要求
- PHP版本8.0或更高。
- 使用Composer管理PHP依赖。
开始使用
1. 将此存储库克隆到您的wp-content/plugins目录中。
cd /path-to-your/wp-content/plugins/
git clone git@github.com:sectsect/google-spreadsheet-to-db.git
2. 从.gitignore文件中删除vendor/。
cd google-spreadsheet-to-db
nano .gitignore
- vendor/
3. 安装composer包。
cd functions/composer/
composer install
4. 通过WordPress中的“插件”菜单激活插件。
设置
为程序访问准备您的电子表格
默认情况下,新的电子表格无法通过Google的API访问。我们需要前往Google API控制台创建一个新项目并设置以公开电子表格的数据。
- 前往Google API控制台。
- 创建一个新项目。
- 点击启用API。搜索并启用Google Sheets API。
- 为Web服务器创建用于访问应用程序数据的凭据。
- 命名服务帐户并授予它编辑项目角色的项目角色。
- 下载JSON文件。
- 将JSON文件复制到您的应用目录并将它重命名为
client_secret.json - ⚠️ 在服务器上设置
client_secret.json的位置以拒绝Web访问。
我们现在有一大块身份验证信息,包括Google所说的client_email,它唯一地表示了这个OAuth服务帐户。
从您的client_secret.json中获取client_email的值,然后回到您的电子表格。点击右上角的共享按钮,并将client_email值粘贴到字段中以赋予它编辑权限。
发送。这就完成了!👌
- 在
wp-config.php中设置client_secret.json的define()常量。
define( 'GOOGLE_SS2DB_CLIENT_SECRET_PATH', '/path/to/your/client_secret.json' );
- 前往WordPress管理面板中的
设置->Google Spreadsheet to DB。 - 设置以下值并保存。
- 要存储在数据库中的数据格式
- json_encode
- json_encode (JSON_UNESCAPED_UNICODE)
- 点击
从Google电子表格导入按钮。🎉
- 电子表格ID
- 电子表格名称(可选)
- 单个电子表格名称
- 顶部标题行
- 标题(可选)
过滤器
过滤数组
您可以在将数据保存到数据库之前使用add_filter( 'google_ss2db_before_save', $function_to_add )在您的functions.php中编辑从Google API获取的数组。
add_filter( 'google_ss2db_before_save', function ( $row, $worksheet_id, $worksheet_name, $sheet_name ) { // Example if ( $worksheet_name === 'My Spreadsheet' && $sheet_name === 'Sheet1' ) { // Do something. return $something; } return $row; }, 10, 3 );
并且也可以使用add_filter('google_ss2db_after_save', $return_array )对返回值进行任何处理。
add_filter( 'google_ss2db_after_save', function ( $data ) { if ( 'My Spreadsheet' === $data['worksheet_name'] ) { // $id = $data['id']; // $date = $data['date']; // $title = $data['title']; // $value = $data['value']; // $work_sheet_id = $data['worksheet_id']; // $work_sheet_name = $data['worksheet_name']; // $sheet_name = $data['sheet_name']; // $result = $data['result']; // `int|false` The number of rows inserted, or false on error. // Example my_callback( $data ); } });
API
new Google_Spreadsheet_To_DB_Query();
参数
使用示例
获取所有行
$sheet = new Google_Spreadsheet_To_DB_Query(); $rows = $sheet->getrow(); foreach ( $rows as $row ) { $id = $row->id; $date = $row->date; $val = json_decode( $row->value ); }
按ID升序从第4行获取3行数据
$args = array( 'orderby' => 'id', 'order' => 'ASC', 'limit' => 3, 'offset' => 3, ); $sheet = new Google_Spreadsheet_To_DB_Query( $args ); $rows = $sheet->getrow(); foreach ( $rows as $row ) { $id = $row->id; $date = $row->date; $val = json_decode( $row->value ); }
获取特定ID的行
$args = array( 'where' => array( array( 'key' => 'id', 'value' => 3, ) ), );
按ID排序获取特定工作表中的3行数据
$args = array( 'orderby' => 'id', 'order' => 'ASC', 'limit' => 3, 'where' => array( array( 'key' => 'worksheet_name', 'value' => 'My Spreadsheet', 'compare' => '=' ), ), );
获取大于或等于指定日期时间的行
$args = array( 'where' => array( array( 'key' => 'date', 'value' => '2020-08-01 12:34:56', 'compare' => '>=', ) ), );
获取满足多个条件的行
$args = array( 'orderby' => 'id', 'order' => 'DESC', 'limit' => 10, 'offset' => 10, 'where' => array( 'relation' => 'AND', // or 'OR' array( 'key' => 'date', 'value' => '2020-08-01 12:34:56', 'compare' => '>=' ), array( 'key' => 'worksheet_name', 'value' => 'My Spreadsheet', 'compare' => '=' ), ), );
注意
- 在WordPress v6.3.1上测试过
开发者
-
此插件将电子表格数据保存到全局区域,而不是每个帖子。如果您想要为单独的帖子拥有电子表格数据,可以将数据
ID与自定义字段关联。 -
数据以JSON编码数组的形式添加并存储在
wp_google_ss2db表中。 -
为了防止大量来自广大受众的支持请求,此插件不在 wordpress.org 仓库中托管。
故障排除
未捕获错误:调用未定义的方法 GuzzleHttp\Utils::chooseHandler()
您正在使用的某些WordPress插件或Composer包依赖于HTTP客户端 Guzzle 版本6(旧版)。
您可以通过更新到 版本7 相关版本来解决此错误。
变更日志
查看 CHANGELOG 文件。
许可协议
查看 LICENSE 文件。
✌️
由 @sectsect 执行的小项目