前提・実現したいこと
GASからNature RemoのAPIを経由して、エアコンを操作しようとしています。Payloadとして設定情報を載せているのですが、どうもうまく通りません。同じコマンドをCurl側から送ろうとすると通るので、何かしらGAS側の書き方が悪いのだと思っています。
発生している問題・エラーメッセージ
エアコンの電源が切られ、buttonがpower-offとなって返ってくるはずが、エアコンも動かず、Postの返り値も更新されていません。
エアコン自体からは音がするので、何かしらの信号が送られているようです。Nature Remoの仕様として、buttonの値が無い時には電源がオンにされる、というものがあるようで、Post自体は成功しているものの、Payloadが届かず、結果button = (null)の操作がされているのかと思われます。
{ temp: '23', temp_unit: 'c', mode: 'dry', vol: 'auto', dir: 'auto', dirh: '', button: '', updated_at: '2021-06-30T15:20:11Z' }
該当のソースコード
GAS
1function airconTest(){ 2 var url = "https://api.nature.global/1/appliances/[エアコンのID]/aircon_settings"; 3 var headers = { 4 "Content-Type" : "application/json", 5 "Authorization" : "Bearer " + access_token 6 }; 7 var postData = { 8 "button":"power-off" 9 }; 10 var options = { 11 "method" : "post", 12 "headers" : headers, 13 "payload" : JSON.stringify(postData) 14 //"payload" : JSON.stringify({"button":"power-off"}) 15 //"payload" : postData 16 //"payload" :{"button": "power-off"} 17 //"payload" :'{"button": "power-off"}' 18 }; 19 var reply = UrlFetchApp.fetch(url, options); 20 console.log(JSON.parse(reply)); 21} 22"Payload"の書き方はなんパターンか試してみたのですが、どれもうまく通らず、です。 23
試したこと
CURLで同等のコードを実行したところ
curl
1curl -X POST "https://api.nature.global/1/appliances/[エアコンのID]/aircon_settings" -H "Authorization: Bearer access_token" -d "button=power-off"
エアコンはちゃんと切られ、以下のようにpower-off状態となります。
{ "temp": "23", "temp_unit": "c", "mode": "dry", "vol": "auto", "dir": "auto", "dirh": "", "button": "power-off", "updated_at": "2021-06-30T15:22:49Z" }
参考情報
Nature Remo API
https://swagger.nature.global/
GASでのPOST方法
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。