You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google APIs PHP客户端创建带初始数据的Google表格

一次请求创建带自定义首行的谷歌表格

要在创建表格的同时为每个工作表填充首行自定义数据,你可以利用Google Sheets API的Spreadsheet对象中的sheets[].data字段,通过GridData、RowData和CellData类定义单元格内容,实现单次请求完成创建与数据填充。

修改后的核心代码

重点调整set_spreadsheet_with_sheets方法,同时确保引入所需的API类:

<?php
// 确保导入所需的类
use Google\Service\Sheets\Sheet;
use Google\Service\Sheets\SheetProperties;
use Google\Service\Sheets\GridData;
use Google\Service\Sheets\RowData;
use Google\Service\Sheets\CellData;
use Google\Service\Sheets\ExtendedValue;

class GoogleSheetFunctions {

    public function create_new() {
        $client = $this->get_client();

        if ( is_null( $client ) ) {
            return false;
        }

        $service = new Google\Service\Sheets($client);
        $spreadsheet = $this->set_spreadsheet_title();
        $spreadsheet = $this->set_spreadsheet_with_sheets( $spreadsheet );

        try {
            $response = $service->spreadsheets->create( $spreadsheet );
            $spreadsheet_id = $response->spreadsheetId;
            return $spreadsheet_id;
        } catch ( Exception $ex ) {
            error_log($ex->getMessage());
            return false;
        }

        // 移除原代码中未定义的$permission无效判断
    }

    protected function set_spreadsheet_with_sheets( Google\Service\Sheets\Spreadsheet $spreadsheet ) {
        // 定义每个工作表的名称和对应的首行自定义数据
        $sheet_configs = [
            [
                'name' => 'sheet-no-1',
                'header' => ['ID', '名称', '创建时间']
            ],
            [
                'name' => 'sheet-no-2',
                'header' => ['产品ID', '价格', '库存']
            ],
            [
                'name' => 'sheet-no-3',
                'header' => ['订单号', '用户', '状态']
            ]
        ];

        $sheets = [];

        foreach ( $sheet_configs as $config ) {
            // 创建工作表属性
            $sheet_properties = new SheetProperties();
            $sheet_properties->setTitle( $config['name'] );
            $temp_sheet = new Sheet();
            $temp_sheet->setProperties( $sheet_properties );

            // 构建首行数据
            $cell_data_list = [];
            foreach ($config['header'] as $cell_value) {
                $cell_data = new CellData();
                $extended_value = new ExtendedValue();
                $extended_value->setStringValue($cell_value);
                $cell_data->setUserEnteredValue($extended_value);
                $cell_data_list[] = $cell_data;
            }

            $row_data = new RowData();
            $row_data->setValues($cell_data_list);

            $grid_data = new GridData();
            $grid_data->setRowData([$row_data]);
            // 设置数据从第1行第1列开始(索引从0开始)
            $grid_data->setStartRowIndex(0);
            $grid_data->setStartColumnIndex(0);

            // 将数据关联到工作表
            $temp_sheet->setData([$grid_data]);
            $sheets[] = $temp_sheet;
        }

        $spreadsheet->setSheets( $sheets );
        return $spreadsheet;
    }

    protected function set_spreadsheet_title() {
        $month            = current_datetime()->format( 'F-Y' );
        $spreadsheet_name = $month;
        $spreadsheet_props = new Google\Service\Sheets\SpreadsheetProperties();
        $spreadsheet_props->setTitle( $spreadsheet_name );
        $spreadsheet       = new Google\Service\Sheets\Spreadsheet();
        $spreadsheet->setProperties( $spreadsheet_props );

        return $spreadsheet;
    }

    protected function get_client( $scopes = [] ) {
        $credential    = 'location/of/credential.json';

        $scopes = [
            'https://www.googleapis.com/auth/drive',
            'https://www.googleapis.com/auth/spreadsheets',
        ];

        return new Google\Client( [
            'credentials' => $credential,
            'scopes'      => $scopes,
        ] );
    }
}

关键说明

  • 类导入:必须导入GridData、RowData等相关类,否则无法构建单元格数据结构。
  • 工作表配置:将工作表名称和首行数据放在$sheet_configs数组中,便于统一管理和修改。
  • 数据构建:通过ExtendedValue设置单元格的字符串值,再依次封装为CellData、RowData和GridData,最终关联到对应的工作表。
  • 无效代码移除:原代码中$permission变量未定义,已移除该无效判断,避免逻辑错误。

内容的提问来源于stack exchange,提问作者sapayth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:20:25