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

使用Invoke-RestMethod调用Google API追加表格数据遇400错误求助

问题根源与解决方法

你的核心问题是Google Sheets API的values字段格式错误:API要求values是二维数组(外层是行集合,内层是每行的单元格值集合),但你传入的是键值对哈希表,API无法识别Field1这类键名,因此返回400错误。

修正步骤

1. 调整请求体结构

把values从哈希表改成二维数组,按表格列的顺序(A到F)传入值,不需要带字段名:

$body = @{
    range = 'SheetName!A1:F195';
    values = @(
        @('Test', 'Test', 'Test', 'Test', 'Test', 'https://test.com')
    );
};
  • 外层@()表示行的集合,这里是一行数据,所以只包含一个数组
  • 内层@()是该行的单元格值,顺序要和表格A-F列完全对应

2. 补充必要的请求参数

追加数据时,建议在请求URL中指定valueInputOption参数(默认是RAW,如果需要解析公式或格式可以用USER_ENTERED),同时可以简化range的写法,不用指定到F195,直接指定列范围更灵活:

# 简化请求URL,指定valueInputOption参数
$requestUri = "https://sheets.googleapis.com/v4/spreadsheets/$SpreadsheetID/values/SheetName!A:F:append?valueInputOption=RAW"

3. 完整修正代码

$SpreadsheetID = "你的表格ID"
$accessToken = "你的有效AccessToken"

# 简化并修正请求URL
$requestUri = "https://sheets.googleapis.com/v4/spreadsheets/$SpreadsheetID/values/SheetName!A:F:append?valueInputOption=RAW"

# 修正后的请求体,values为二维数组
$body = @{
    values = @(
        @('Test', 'Test', 'Test', 'Test', 'Test', 'https://test.com')
    );
};

# 转换为JSON,注意指定Depth避免嵌套截断
$test = ConvertTo-Json -InputObject $body -Depth 3

# 发送请求
$response = Invoke-RestMethod -Headers @{Authorization = "Bearer $accessToken"} -Uri $requestUri -Method POST -ContentType 'application/json' -Body $test

额外说明

  • range参数可以进一步简化为SheetName:append,API会自动识别表格的有效数据范围并追加到末尾
  • 如果需要追加多行数据,只需在values的外层数组中添加更多内层数组即可:
    values = @(
        @('Test1', 'Test1', 'Test1', 'Test1', 'Test1', 'https://test1.com'),
        @('Test2', 'Test2', 'Test2', 'Test2', 'Test2', 'https://test2.com')
    );
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:35:15