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

调用Google Sheets API v4获取表格时报无法解析为XML错误如何解决

错误根因

  • 你使用的asimlqt/php-google-spreadsheet-client类库是基于 Google Sheets API v3 开发的,v3 响应格式为 XML,而你切换到的 v4 版本所有响应均为 JSON 格式,SpreadsheetFeed 仍尝试将 JSON 传入SimpleXMLElement做XML解析,自然会触发解析错误,日志中出现的{字符就是JSON响应的起始标记。
  • 你当前getSpreadsheets方法调用的API端点错误:v4/spreadsheets/[指定文件ID]?fields=sheets.properties.title是用于获取单个指定电子表格的内部工作表名称,无法获取你Google Drive下所有电子表格的列表。

解决方案

方案一:改造现有代码适配v4接口

  1. 调整权限与请求端点
    要获取Drive下所有电子表格,需要调用Google Drive API的文件列表接口,为你的Access Token添加https://www.googleapis.com/auth/drive.readonly权限,请求地址改为https://www.googleapis.com/drive/v3/files?q=mimeType='application/vnd.google-apps.spreadsheet'
  2. 重写SpreadsheetFeed解析逻辑
    将原XML解析逻辑替换为JSON解析:
public function __construct($jsonResponse)
{
    $responseData = json_decode($jsonResponse, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new \Exception("响应解析失败:" . json_last_error_msg());
    }

    $spreadsheets = [];
    foreach ($responseData['files'] as $file) {
        // 需同步调整Spreadsheet类的构造逻辑,适配传入的数组结构
        $spreadsheets[] = new Spreadsheet($file);
    }
    parent::__construct($spreadsheets);
}
  1. 调整Spreadsheet类逻辑
    原类接收SimpleXMLElement对象,改造后接收数组,表格名称直接取$file['name'],表格ID取$file['id']即可。

方案二:使用官方Google PHP Client库(更稳定)

直接使用Google官方维护的客户端库,无需手动处理响应解析,示例如下:

  1. 安装依赖
composer require google/apiclient:^2.0
  1. 调用示例
$client = new Google\Client();
$client->setAccessToken($token->access_token);
$client->addScope('https://www.googleapis.com/auth/drive.readonly');

$driveService = new Google\Service\Drive($client);
$fileList = $driveService->files->listFiles([
    'q' => "mimeType='application/vnd.google-apps.spreadsheet'",
    'fields' => 'files(id,name)'
]);

foreach ($fileList->getFiles() as $spreadsheet) {
    echo "表格名称:" . $spreadsheet->getName() . ",表格ID:" . $spreadsheet->getId() . "\n";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:08