2017-01-27 9 views
1

APIとPowerShellのWebリクエストを使用して私的なGoogleスプレッドシートに書き込もうとしています。Googleスプレッドシートに書き込めません((400)Bad Request)

$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. 

は私が間違って何をしているのですか?

+0

要求の構造と適切な承認。 400:Bad Requestを受け取った場合、リクエストに無効なものがあることを意味します。お役に立てれば。 –

+0

@ Mr.Rebotクエリの構造とクイックスタートページの構造の違いはありますか? – saltface

+1

@saltface '-ContentType" application/json "'を 'Invoke-WebRequest'に追加してみてください。これがあなたの問題を解決するかどうかはわかりませんが、それは価値があります。 – Toomaja

答えて

1

には、Methodがデータ送信用の動詞(たとえば、Post)に設定されている場合に必要な、ContentTypeパラメータがありません。

Content-Typeフィールドの目的は、受信ユーザエージェントは、ユーザにデータを提示するために適切な薬剤または機構を選択、または他の方法で扱うことができることを十分十分体に含まれるデータを記述することですデータを適切な方法で使用してください。あなたのケースでは

The Content-Type Header Field 、パラメータが-ContentType "application/json"になります。例:あなたが正しいを理解するためにドキュメント[GoogleスプレッドシートのAPIクイックスタート](https://developers.google.com/sheets/api/guides/concepts)をチェックすることをお勧めします

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

関連する問題