PHP调用Google Sheets API生产环境无法追加行问题排查
问题:Google Sheets API追加行本地正常,生产环境无数据(无错误返回)
- 本地测试向Google Sheet追加1013行数据完全正常
- 生产环境调用同一Sheet的append接口,无任何行被追加,但调用后无错误返回
- 不清楚需要提供哪些信息来排查问题
代码实现
//print_r($clients); // Récupération du Client API Google JT $client = ExtractionManager::getClient(); $service = new \Google_Service_Sheets($client); try { $spreadsheetId = 'XXXXXXXXXXXXXXXXXXXXXXX'; // id du document google sheet test client // Create the value range Object $valueRange = new \Google_Service_Sheets_ValueRange(); // You need to specify the values you insert //$valueRange->setValues($clients); $valueRange->setValues($clients); // Then you need to add some configuration $conf = ['valueInputOption' => 'RAW']; // mettre le nom de l(onglet que vous optenner dans le googlesheet $range = 'Sheet1'; // Update the spreadsheet $result = $service->spreadsheets_values->append($spreadsheetId, $range, $valueRange, $conf); print_r($result); } catch (Exception $e) { var_dump('Message: ' . $e->getMessage()); } return json_encode([ 'Nombre de client ajoute' => ($result->updates->updatedRows == null)?0:$result->updates->updatedRows, 'Nombre de client a ajouter' => count($clients) ]);
API返回结果
Google\Service\Sheets\AppendValuesResponse Object ( [spreadsheetId] => XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [tableRange] => Sheet1!A1:K1 [updatesType:protected] => Google\Service\Sheets\UpdateValuesResponse [updatesDataType:protected] => [internal_gapi_mappings:protected] => Array ( ) [modelData:protected] => Array ( ) [processed:protected] => Array ( ) [updates] => Google\Service\Sheets\UpdateValuesResponse Object ( [spreadsheetId] => XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [updatedCells] => [updatedColumns] => [updatedDataType:protected] => Google\Service\Sheets\ValueRange [updatedDataDataType:protected] => [updatedRange] => Sheet1!A2 [updatedRows] => [internal_gapi_mappings:protected] => Array ( ) [modelData:protected] => Array ( ) [processed:protected] => Array ( ) ) )
排查建议
- 验证生产环境的API客户端权限:确认生产环境使用的服务账号/授权凭证已被添加到目标Sheet的共享列表中,且拥有编辑权限。本地可能使用个人账号授权,而生产环境的服务账号可能未获得Sheet访问权限
- 检查
$clients数据结构:Google Sheets API要求values参数必须是二维数组(每行数据对应一个子数组)。生产环境的$clients可能为空数组、一维数组,或者数据格式不符合要求,导致API仅操作了单个单元格(返回的updatedRange为Sheet1!A2) - 记录生产环境的请求日志:添加日志输出
count($clients)的值,以及$clients的具体结构,确认生产环境确实有数据要提交;也可以开启Google API的请求日志,查看实际发送的请求内容 - 补充append配置参数:尝试在
$conf中添加'insertDataOption' => 'INSERT_ROWS',强制API插入新行而非覆盖现有单元格。默认的OVERWRITE模式下,如果目标单元格无内容,可能不会触发新行插入 - 检查Sheet状态:确认目标Sheet没有被设置为“仅查看”权限,也没有达到行列数量限制(单Sheet最大100万行)
内容的提问来源于stack exchange,提问作者pepito
相关产品推荐
相关产品推荐

