自己紹介
開発経験もない文系プログラミング初心者です。
コードは拙いかもしれませんが、少しでも参考になれば幸いです
参考記事
以下の記事を参考にさせていただきました!
どうやってやるか
- アクセストークンを取得(10回ボタン押して隠しボタン出す。上記の記事参考)
- デバイスIDを取得(下記を参考)
- それらをもとにGASでHTTPリクエストを送る
全コード
*注意* アクセストークンが知られてしまうと誰でも制御可能になってしまいます
*注意* 絶対に知られないようにしましょう
function switchBot() {
//header情報として取得したトークンを設定
var headers = {
"Authorization" : "ここに自分の開発者トークンを貼り付ける",
"Content-type": "application/json; charset=utf-8" //Content-typeとはリクエストbodyはjson形式ですよと言うやつ
};
var data = {
"command": "turnOn",//turnOffにすれば消えます
"parameter": "default",
"commandType": "command"
};
//UrlFetchApp.fetch()の第二引数optionsの設定部分
var options = {
'method' : 'post',
"headers" : headers,
"payload" : JSON.stringify(data)
//jsonオブジェクトを作る→json形式でサーバで制御→jsonオブジェクトとしてresponseを制御するため
// ↑ ↑
//これがJSON.stringify() これがJSON.parse()メソッド
};
var deviceid = "自分が取得したデバイスIDを入れる";//制御したいdeviceid
var url1 = `https://api.switch-bot.com/v1.0/devices/${deviceid}/commands`;
var response = UrlFetchApp.fetch(url1,options); //gas版http request パラメータあり
var json=JSON.parse(response.getContentText());//これがJSON.parse()メソッド
console.log(json)//成功したか確認
}
deviceIDの一覧取得方法
function deviceid() {
//header情報として取得したトークンを設定
var headers = {
"Authorization" : "自分のアクセストークンを取得してください",
"Content-type": "application/json; charset=utf-8" //Content-typeとはリクエストbodyはjson形式ですよと言うやつ
};
var url = "https://api.switch-bot.com/v1.0/devices";
var options = {
'headers': headers
};
var reply = UrlFetchApp.fetch(url, options);
var json=JSON.parse(reply.getContentText());
console.log(json['body']['deviceList'])//ログから取得したいdeviceIdを選んでください
}
やってみた感想
初心者の僕でも一日で出来たので比較的分かりやすいと思います。文章が拙かったらすいません。
また、組み合わせ次第でなんでも、自動化出来そうだと思いました。
スマートスピーカー、スマートスイッチ、SwitchBot、IFFFT、Zapier、IOSショートカットなど組み合わせればなんでも
出来そうですね。