【GAS】Nature Remo APIを使って気温、湿度、明るさセンサー、人感センサーをスプレッドシートへ定期的に記録する

# はじめに

>Nature Remo とは？
Nature Remo（ネイチャーリモ）は、お使いの家電をインターネットに繋げることで、手軽にスマートホームを実現するスマートリモコンです。例えば、外出先からスマートフォンでエアコンを操作したり、Google Home（グーグルホーム）、Amazon Echo（アマゾンエコー）、Apple HomePod（アップルホームポッド）等のスマートスピーカーから音声でテレビや照明を操作することができます。
※Nature Remoは、スマートスピーカーがなくても、スマートフォンがあれば利用可能です。Apple HomePodとは、Siriショートカット経由での操作での対応になります。
>> https://nature.global/jp/top

Nature Remoには気温、湿度、明るさセンサー、人感センサーなどが取得できるAPIがあるので
Google Apps Scriptを使いスプレッドシートに記録する方法を紹介します。

## このような感じに記録します
<img width="750" alt="スクリーンショット 2019-10-14 午前1.17.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/a9497980-b03c-fc34-d06e-e29e38be8e65.png">

``human_sensor``は人を検知している場合は``1``で、検知しない場合は``0``です。


``※取得のAPIだけではなく、登録してある家電の操作などもAPIから操作できます。``

[API仕様はこちら](https://developer.nature.global/)

# 手順

## API Tokenを発行
こちらのURLからAPI Tokenを発行する
https://home.nature.global/

以下のボタンを押したら
<img width="229" alt="スクリーンショット 2019-10-14 午前1.06.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/ef7698ac-1571-d73d-ae4c-594304802a63.png">
API Tokenが発行させるのでメモっておく
<img width="1311" alt="スクリーンショット 2019-10-14 午前1.07.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/82ed93f9-8a05-4417-f342-dbae71a58232.png">

## スプレッドシートを作成
こちらのURLから新しいスプレッドシートを作成
https://docs.google.com/spreadsheets/u/0/?tgif=d

以下のように一行目に項目名を入力する
<img width="734" alt="スクリーンショット 2019-10-14 午前1.09.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/60fb05a9-7404-452a-2b0f-600ec744adc9.png">

[ツール]→[スクリプトエディタ]
<img width="301" alt="スクリーンショット 2019-10-14 午前1.12.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/3141ee16-fc8c-38d9-5d5b-d343b94ff7d4.png">

## ソースコード

以下のソースコードを``コード.gs``に貼り付けて
[ファイル]→[保存]

``` js:コード.gs
//この関数をトリガーに設定する
function getRemoData() {
  var url = 'https://api.nature.global/1/devices';
  //取得したアクセストークンを入力★★★★★★
  var token = '';
  //★★★★★★★★★★★★★★★★★★★★★
  var headers = {
    "Authorization": 'Bearer ' + token
  }

  var options = {
    "headers": headers
  }

  // GETリクエスト
  var response = UrlFetchApp.fetch(url, options);
  // HTMLの結果を取得（引数のcharsetは設定したほうが良い）
  var content = response.getContentText("UTF-8");

  var res_data = JSON.parse(content)[0].newest_events;
  Logger.log(res_data);
  setData({
    temperature: res_data['te'].val,
    humidity: res_data['hu'].val,
    llluminance: res_data['il'].val,
    human_sensor: res_data['mo'].val
  });
}

//現在の時刻を取得する関数
function getNowDate() {
  var d = new Date();
  return String(Utilities.formatDate(d, 'JST', 'yyyy-MM-dd HH:mm'));
}

//スプレッドシートに書き込む関数
function setData(data) {
  //★★★★★★★★★★★★★★★★★★★★★★★★★★★
  //スプレッドシートのIDとシート名を入力
  //スプレッドシートのIDは　https://docs.google.com/spreadsheets/d/○○○/
  //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★　↑この○○○の部分です。
  var spreadsheet = SpreadsheetApp.openById('');
  var sheet = spreadsheet.getSheetByName('シート1');
  //★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  var last_row = sheet.getLastRow() + 1;

  sheet.getRange(last_row, 1).setValue(getNowDate());
  sheet.getRange(last_row, 2).setValue(data.temperature);
  sheet.getRange(last_row, 3).setValue(data.humidity);
  sheet.getRange(last_row, 4).setValue(data.llluminance);
  sheet.getRange(last_row, 5).setValue(data.human_sensor);

}
```

以下のように``getRemoData``を選択し、左の「▶」ボタンを押すと、いろいろとポップアップが出てくるので承認なりしてあげてください。


<img width="217" alt="スクリーンショット 2019-10-14 午前1.19.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/799f806c-cf50-fe45-1d2b-b45c81e411ff.png">

成功すると以下のようにシートに値が入力されているはずです。
<img width="723" alt="スクリーンショット 2019-10-14 午前1.22.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/0c3558dc-04b0-cd62-e887-fa7c628d2e35.png">

## 時間主導型トリガーを設定する
スクリプトエディタから[編集]→[現在のプロジェクトのトリガー]を選択

<img width="378" alt="スクリーンショット 2019-10-14 午前1.23.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/2dddc4ff-893b-99ee-8b83-17e9ff775f5b.png">

トリガーを追加ボタンがあるので、クリック
<img width="203" alt="スクリーンショット 2019-10-14 午前1.24.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/dda494d8-5a45-7e86-4d5b-63b6ebc52dbf.png">

トリガーを以下のように設定すると、決まった時間間隔でコードが実行され、シートに書き込まれる
<img width="720" alt="スクリーンショット 2019-10-14 午前1.25.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/a4082d70-21cd-9e2c-46f1-b37511ffb4d8.png">

しばらく放置して以下のようになれば成功です！！
<img width="756" alt="スクリーンショット 2019-10-14 午前1.26.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252959/646c24c9-adb5-7e30-960d-1ff270a6a56a.png">