尝试将行附加到 PHP 中的 Google 电子表格
Trying to append a row to a Google Spreadsheet in PHP
我正在通过 Composer (https://packagist.org/packages/google/apiclient) 使用 Google 的客户端 API,并且我已成功验证并收到访问令牌。
我正在尝试向驱动器中的 Google sheet 添加一行,但我找不到任何专门针对 PHP.[=16= 的相关文档]
这是我目前得到的:
$service = new Google_Service_Sheets($a4e->google); // my authenticated Google client object
$spreadsheetId = "11I1xNv8cHzBGE7uuZtB9fQzbgrz4z7lIaEADfta60nc";
$range = "Sheet1!A1:E";
$valueRange= new Google_Service_Sheets_ValueRange();
$service->spreadsheets_values->update($spreadsheetId,$range,$valueRange);
此returns以下错误:
Fatal error: Uncaught exception 'Google_Service_Exception' with message '{ "error": { "code": 400, "message": "Invalid valueInputOption: INPUT_VALUE_OPTION_UNSPECIFIED", "errors": [ { "message": "Invalid valueInputOption: INPUT_VALUE_OPTION_UNSPECIFIED", "domain": "global", "reason": "badRequest" } ], "status": "INVALID_ARGUMENT" } } ' in /usr/share/nginx/vendor/google/apiclient/src/Google/Http/REST.php
关于“Google_Service_Sheets_ValueRange()
”对象的格式,以及如何在 sheet 的末尾追加一行,而不是必须指定特定范围,我感到很困惑.
如果您能就此问题提供帮助,我将不胜感激。
我遇到了同样的问题,缺少这方面的文档。但我找到了解决办法。这是一个工作示例:
// ...
// Create the value range Object
$valueRange= new Google_Service_Sheets_ValueRange();
// You need to specify the values you insert
$valueRange->setValues(["values" => ["a", "b"]]); // Add two values
// Then you need to add some configuration
$conf = ["valueInputOption" => "RAW"];
// Update the spreadsheet
$service->spreadsheets_values->update($spreadsheetId, $range, $valueRange, $conf);
我认为它的语法很奇怪,我没有找到关于它的明确文档,我只是尝试了一些组合,现在它可以工作了!不确定这是正确的方法,希望它能有所帮助。
$client = $this->getClient();
$service = new Google_Service_Sheets($client);
$spreadsheetId = '1bFh8FYeez6c1snPCHZF_olsHOLRqEENJbChLKbE9xg0';
$range = 'A1:S1';
$values = [
['col 1', 'col 2', 'col 3'],
['col 1', 'col 2', 'col 3'],
['col 1', 'col 2', 'col 3']
];
$requestBody = new Google_Service_Sheets_ValueRange(array(
'values' => $values
));
$params = [
'valueInputOption' => 'RAW'
];
print_r($requestBody);
$response = $service->spreadsheets_values->update($spreadsheetId, $range, $requestBody, $params);
有一个新的追加方法:
(我正在使用服务帐户。)
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setSubject($delegated_user);
$client->addScope(Google_Service_Sheets::SPREADSHEETS);
$service = new Google_Service_Sheets($client);
$range = 'Sheet1!A:E';
$values = [
["a", "b", "C", "D", "E"]
];
$body = new Google_Service_Sheets_ValueRange([
'values' => $values
]);
$params = [
'valueInputOption' => "RAW"
];
$result = $service->spreadsheets_values->append($spreadsheet_id, $range, $body, $params);
我正在通过 Composer (https://packagist.org/packages/google/apiclient) 使用 Google 的客户端 API,并且我已成功验证并收到访问令牌。
我正在尝试向驱动器中的 Google sheet 添加一行,但我找不到任何专门针对 PHP.[=16= 的相关文档]
这是我目前得到的:
$service = new Google_Service_Sheets($a4e->google); // my authenticated Google client object
$spreadsheetId = "11I1xNv8cHzBGE7uuZtB9fQzbgrz4z7lIaEADfta60nc";
$range = "Sheet1!A1:E";
$valueRange= new Google_Service_Sheets_ValueRange();
$service->spreadsheets_values->update($spreadsheetId,$range,$valueRange);
此returns以下错误:
Fatal error: Uncaught exception 'Google_Service_Exception' with message '{ "error": { "code": 400, "message": "Invalid valueInputOption: INPUT_VALUE_OPTION_UNSPECIFIED", "errors": [ { "message": "Invalid valueInputOption: INPUT_VALUE_OPTION_UNSPECIFIED", "domain": "global", "reason": "badRequest" } ], "status": "INVALID_ARGUMENT" } } ' in /usr/share/nginx/vendor/google/apiclient/src/Google/Http/REST.php
关于“Google_Service_Sheets_ValueRange()
”对象的格式,以及如何在 sheet 的末尾追加一行,而不是必须指定特定范围,我感到很困惑.
如果您能就此问题提供帮助,我将不胜感激。
我遇到了同样的问题,缺少这方面的文档。但我找到了解决办法。这是一个工作示例:
// ...
// Create the value range Object
$valueRange= new Google_Service_Sheets_ValueRange();
// You need to specify the values you insert
$valueRange->setValues(["values" => ["a", "b"]]); // Add two values
// Then you need to add some configuration
$conf = ["valueInputOption" => "RAW"];
// Update the spreadsheet
$service->spreadsheets_values->update($spreadsheetId, $range, $valueRange, $conf);
我认为它的语法很奇怪,我没有找到关于它的明确文档,我只是尝试了一些组合,现在它可以工作了!不确定这是正确的方法,希望它能有所帮助。
$client = $this->getClient();
$service = new Google_Service_Sheets($client);
$spreadsheetId = '1bFh8FYeez6c1snPCHZF_olsHOLRqEENJbChLKbE9xg0';
$range = 'A1:S1';
$values = [
['col 1', 'col 2', 'col 3'],
['col 1', 'col 2', 'col 3'],
['col 1', 'col 2', 'col 3']
];
$requestBody = new Google_Service_Sheets_ValueRange(array(
'values' => $values
));
$params = [
'valueInputOption' => 'RAW'
];
print_r($requestBody);
$response = $service->spreadsheets_values->update($spreadsheetId, $range, $requestBody, $params);
有一个新的追加方法: (我正在使用服务帐户。)
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setSubject($delegated_user);
$client->addScope(Google_Service_Sheets::SPREADSHEETS);
$service = new Google_Service_Sheets($client);
$range = 'Sheet1!A:E';
$values = [
["a", "b", "C", "D", "E"]
];
$body = new Google_Service_Sheets_ValueRange([
'values' => $values
]);
$params = [
'valueInputOption' => "RAW"
];
$result = $service->spreadsheets_values->append($spreadsheet_id, $range, $body, $params);