尝试在PHP中向Google Spreadsheet添加一行

pra*_*ine 5 php google-sheets google-api-php-client

我通过Composer(https://packagist.org/packages/google/apiclient)使用Google的客户端API ,我已成功通过身份验证并收到了访问令牌.

我试图在我的驱动器中添加一行到Google表格,但我找不到任何专门针对PHP的相关文档.

这是我到目前为止所得到的:

$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);
Run Code Online (Sandbox Code Playgroud)

这将返回以下错误:

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
Run Code Online (Sandbox Code Playgroud)

我对" Google_Service_Sheets_ValueRange()"对象的格式以及如何将一行附加到工作表的末尾而不是必须指定特定范围感到困惑.

我非常感谢对这个问题的任何帮助.

rap*_*2-h 14

我有同样的问题,缺乏关于此的文档.但我找到了解决方案.这是一个工作示例:

// ...

// 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);
Run Code Online (Sandbox Code Playgroud)

我认为这是奇怪的语法,我没有找到关于它的明确文档,我只是尝试了一些组合,现在它的工作原理!不确定这是正确的方式,希望它可以帮助.

  • 仅供参考,我们在文档中添加了一个小样本:https://developers.google.com/sheets/guides/values#writing_to_a_single_range (4认同)
  • @EricKoleda 嘿 Eric,这些是 **API 参考**,而不是 **代码示例**。过去,Google 为 API 提供了大量 PHP 代码示例,但最近,PHP 显然是事后才想到的。 (2认同)

小智 7

有一个新的 append 方法:(我使用的是服务帐户。)

$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);
Run Code Online (Sandbox Code Playgroud)