无法写入Google表格((400)错误请求)

时间:2017-01-27 21:03:27

标签: powershell google-api google-sheets-api

我正在尝试使用API​​和PowerShell网络请求写入私人Google表格文档。我知道我已正确处理了身份验证,因为我可以使用以下代码从表单中读取:

$read = Invoke-WebRequest -Uri "https://sheets.googleapis.com/v4/spreadsheets/$sheet/values/Sheet1!A1:B2?access_token=$($token.access_token)"

当我尝试写入同一张纸时(在清除单元格中的所有内容之后)出现问题:

$json = @”
{
  "range": "Sheet1!A1:D2",
  "majorDimension": "ROWS",
  "values": [
    ["Door", "15", "2", "3/15/2016"],
    ["Engine", "100", "1", "3/20/2016"]
  ]
}
“@

Invoke-WebRequest -Uri "https://sheets.googleapis.com/v4/spreadsheets/$sheet/values/Sheet1!A1:D2:append?valueInputOption=USER_ENTERED&access_token=$($token.access_token)" -Method Post -Body $json

我明白了:

Invoke-WebRequest : The remote server returned an error: (400) Bad Request.

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的Invoke-WebRequest缺少ContentType参数,当Method设置为动词以发送数据(例如Post)时,这是必需的。

  
    

Content-Type字段的目的是充分描述正文中包含的数据,以便接收用户代理可以选择适当的代理或机制来向用户呈现数据,或以其他方式处理数据。适当的方式。

  
     

The Content-Type Header Field

在您的情况下,参数将为-ContentType "application/json"。例如:

Invoke-WebRequest -Uri "https://sheets.googleapis.com/v4/spreadsheets/$sheet/values/Sheet1!A1:D2:append?valueInputOption=USER_ENTERED&access_token=$($token.access_token)" -Method Post -ContentType "application/json" -Body $json 

Invoke-WebRequest ContentType Documentation

相关问题