###【やりたいこと】
・Google Sheets Api を利用してスプレッドシートに値を書き込もうとリクエストを送った際、以下のエラーが発生するため解決したい
Invoke-WebRequest : リモート サーバーがエラーを返しました: (400) 要求が不適切です
###【環境】
Windows10 Pro
powershell 5.1
###【ソースコード】
powershell
1# 以下のPSファイルからAccessToken($accesstoken)を取得 2.".\Google_Token_Request.ps1" 3 4$headers = @{ 5 "Authorization" = "Bearer $accessToken" 6 "Content-Type" = "application/json;charset=UTF-8" 7} 8 9$body = @{ 10 requests = @( 11 @{ 12 updateCells = @{ 13 range = @{ 14 sheetsID = 0 15 startRowIndex = 0 16 endRowIndex = 1 17 startColumnIndex = 4 18 } 19 20 rows = @( 21 @{values = @( 22 @{userEnteredValue = @{stringValue = "文字列"}} 23 ) 24 } 25 ) 26 fields = "*" 27 } 28 29 } 30 ) 31} 32 33$metadata = $body | ConvertTo-Json -Depth 8 34 35####↓以下5種類のURLを用いてチャレンジしました↓##### 36$Uri1 = "https://sheets.googleapis.com/v4/spreadsheets/&alt=json&" + $SPREDSHEETID + "/values:batchUpdate?key=$APIKEY" 37 38$Uri2 = "https://sheets.googleapis.com/v4/spreadsheets/" + $SPREDSHEETID + ":batchUpdate" 39 40$Uri3 = "https://content-sheets.googleapis.com/v4/spreadsheets/" + $SPREDSHEETID + ":batchUpdate?access_token=" + $accessToken + "&alt=json&key=$APIKEY" 41 42$Uri4 = "https://sheets.googleapis.com/v4/spreadsheets/" + $SPREDSHEETID + ":batchUpdate?key=$APIKEY" 43 44$Uri5 = "https://content-sheets.googleapis.com/v4/spreadsheets/" + $SPREDSHEETID + ":batchUpdate?access_token=" + $accessToken + "&key=$APIKEY" 45 46Invoke-WebRequest $Uri -Method Post -Headers $headers -Body $metadata
json
1{ 2"requests": [ 3 { 4 "updateCells": { 5 "range": { 6 "startRowIndex": 0, 7 "endRowIndex": 1, 8 "startColumnIndex": 4, 9 "sheetsID": 0 10 }, 11 "rows": [ 12 { 13 "values": [ 14 { 15 "userEnteredValue": { 16 "stringValue": "文字列" 17 } 18 } 19 ] 20 } 21 ], 22 "fields": "*" 23 } 24 } 25 ] 26}
###【発生しているエラー】
Invoke-WebRequest : リモート サーバーがエラーを返しました: (400) 要求が不適切です
###【わからないこと】
・リクエストボディとして送信するJsonがあっているのかがわからない
・そもそもボディの送信方法があっているのかがわからない
###【補足・調べたこと】
・アクセストークンに関してはDriveAPI使用時に問題がないことは確認できています
・スコープは"https://www.googleapis.com/auth/drive"を利用しています
・5種類のURLで試したがいずれも同様のエラー(Invoke-WebRequest : リモート サーバーがエラーを返しました: (400) 要求が不適切です)が発生する
・わかりにくい点がありましたらご指摘いただけると幸いです
###【参考】
Google Sheets for Developers Sheets API batchUpdate Overview
あなたの回答
tips
プレビュー