【问题标题】:Google Sheet API v4 "Unable to parse range" when getting table data获取表格数据时,Google Sheet API v4“无法解析范围”
【发布时间】:2021-12-07 18:08:13
【问题描述】:

我正在尝试学习用于 PHP 的 Google Sheets API 以从工作表中读取数据。我正在使用 https://github.com/googleapis/google-api-php-client/ 阅读未发布到网络的 Google 表格。我已在我的 Google 帐户的 Google Sheets API 中设置访问权限。我的基本连接工作,使用这个:

// Connect the Google Sheets API client
require_once __DIR__ . '/vendor/autoload.php';

// Load service key
$googleAccountKeyFilePath = __DIR__ . '/service_key.json';
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $googleAccountKeyFilePath);

// Create new client
$client = new Google_Client();

// Set credentials
$client->useApplicationDefaultCredentials();

// Access for reading, editing, creating and deleting tables
$client->addScope('https://www.googleapis.com/auth/spreadsheets');

$service = new Google_Service_Sheets($client);

// Spreadsheet ID
$spreadsheetId = 'my_id';

$response = $service->spreadsheets->get($spreadsheetId);

// Get properties of spreadsheet
$spreadsheetProperties = $response->getProperties();

// spreadsheet name
var_dump($spreadsheetProperties->title);

var_dump 输出

string(4) "Test"

但是当我尝试时

$range = 'Test';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
var_dump($response);

转储表格测试中的所有单元格,我收到错误

Uncaught Google\Service\Exception: { "error": { "code": 400, "message": "Unable to parse range: Test", "errors": [ { "message": "Unable to parse range: Test", "domain": "global", "reason": "badRequest" } ], "status": "INVALID_ARGUMENT" } }

如何转储单元格数据的示例是什么?

【问题讨论】:

  • note for rangeThe A1 notation or R1C1 notation of the range to retrieve values from,因此 Test 不是有效范围。试试A1:A6 看看能不能给你什么。 (编辑)developers.google.com/sheets/api/quickstart/php 有一个更好的例子
  • 啊,这行得通,谢谢!将其添加为答案。顺便说一句,我的基本连接代码看起来不错吗?它比您链接的示例要简单得多。
  • 我真的不确定。我根本没有使用过 Sheets API,只是找到了它的文档。
  • 我阅读了一些文档,但只能解析其中的一些。我正在使用pocketadmin.tech/en/version-4-of-the-google-sheets-api-in-php

标签: php google-sheets-api


【解决方案1】:

根据documentation,范围必须使用 A1 表示法或 R1C1 表示法。所以范围应该是

$range = 'A1:A6';

$range = 'A[1]:A[6]';

如果您需要指定选项卡名称,请在范围之前指定。从the example,它看起来像

$range = 'Class Data!A2:E';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多