見出し画像

帰宅時間の傾向を GAS で調べてみた

2019 年に [PRESS] で掲載していたものを再編集しました。

https://pressblog.me

おかえりボタンを押すタイミング

おかえりボタンは去年 (2018 年) の 11 月に作った子どもの帰りをお知らせする IoT ボタンです。

運用開始から3ヵ月が経過しました。
玄関入ってすぐの、目立つところに設置をしていてシールも貼っているためか、先週(3/1)まで継続して押し続けられています。

あとどれくらい使える?

このボタンは、内蔵電池で動作します。今まで何回クリックされて、あとどれくらい使えるのか確認してみました。

AWS マネジメントコンソールにサインインして、デバイスの管理 から状態を確認すると、残りのライフ は 100% と表示されていました。

AWS IoT エンタープライズボタン の販売ページ では、約 2,000回利用可能 と記載されています。

おかえりメールを受信した数をカウントしてみたところ、3/1 時点で 322回クリックされたことが分かりました。これ以外に、システムを構築したころに検証を含めて 100回以上試行したので、最低でも 420回はクリックしているはずです。
残りのライフ は 2,000回を迎えるあたりから急激に低下していくのか、ボタンが摩耗してクリックできなくなるのが 2,000回あたりなのか?あるいは、ホームページは過小スペックで記載されているのか??

2,000回を迎えるまで分かりませんが、個人的にはまだまだ使えそうな印象です😙

長男のクリック回数が多い

おかえりメールを初めて受信したのは、2018/11/06 16:58:06 でした。2019/03/01 までに322回メールを受信していました。クリックした内訳は、長男が一番多く 130回、次男が102回、父が 90回という結果でした。

長男は サッカーやフットサルなどの習い事が多く、一番忘れずにクリックしていたため回数が伸びたようです。父が少ないのは、2019 年 2 月末まで 24 時間のシフト勤務をしていて、月に 13 日程度しか働かなかったことと、夜勤の日は泊まりで帰宅しなかったからだと思います。

時間ごとのクリック回数

次に、3人の帰宅時間を調べてみました。

次男は 17 時台にクリックしている回数が一番多かったです。これは、17 時まで学童保育でお世話になってから妻と帰宅するためです。
長男の帰宅時間が特定の時間帯に集中せず、夕方から夜にかけて分散しているのは、一度帰宅したあとにサッカーやフットサルに行って、もう一度帰宅するためです。
僕が午前 8 時に帰宅しているのは、夜勤の日と休みの日に息子たちの登校に同行しているからです。あと、夜勤明けで帰宅するのは 11 時台が多く、日勤帰りは 19 時台が多いことが分かりました。

曜日ごとのクリック回数

最後に、曜日ごとのクリック傾向をみてみました。

シフト勤務だと一週間を通して平均的に押しているのだろうと思っていたのですが、予想外に土日は少なかったです。そういえば、土日はやたらと夜勤が多かった気がします。あと、平日は子供の登校に付き添って 2 回/日クリックしていたからだと思います。
次男はプールに行く火曜と日曜のクリック回数が多いと思っていたのですが、月曜日が一番多かったのが意外でした。長男に関しては傾向がよく分かりませんでした。

分析には正しいサンプルが必要

この分析をしてみて思ったのですが、必ずボタンを押してもらわないと正しい結果が取得できないです。サンプルにはドアセンサーなどの IoT 機器が向いていると思いました。ドアセンサーは、将来設置した際に傾向分析をしたいと思います。

後半では、今回の分析に利用した GAS を紹介したいと思います。

Gmail からメールの内容を取得する

おかえりボタンは、Lambda を使って Amazon SNS でメールを送信しますが、その受信先を Gmail にしています。
そのため、Gmail の内容を Google Apps Script (GAS) を利用してスプレッドシートに書き出ししてみようと思います。

メールのフォーマット

Lambda が生成するメールのフォーマットは以下の通りです。

送信元:xxxx@gmail.com amazonses.com 経由
送信日時:2018116日(火) 16:58
送信先:自分
件名:11/06 16:58 次男 帰宅
本文:
次男が帰宅しました。
帰宅日時: 20181106日
帰宅時間: 1658

GAS で作るもの

GAS の処理ステップは

  1. Gmail に接続する

  2. メールをキーワードを元に抽出する

  3. スプレッドシートに書き出す

という感じで、とてもシンプルです。

公式リファレンス を元に作成していますので、ご不明点あれば確認してみてください。

1. Gmail に接続する

まず、GAS を書くために、スクリプトエディタ を開きます。Google スプレッドシートを開き、ツールからスクリプトエディタを選択します。

すると、スクリプトエディタが別タブで開きます。

タイトルは任意ですが、適当に変更しておくと後から判別できます。僕は okaeri_graph にしました。
次に「function」から「}」の間の行にコードを書きます。

var GM = GmailApp.get

この 1 行書くだけで、GAS からGmail を操作できるようになります。すごく洗練されていますね!
もっと言うと、実際に呼び出しているのは「GmailApp」の部分なので、たった8文字です。「メラ」とか「ギラ」みたいにポップな感じではないですが非常にシンプルです。VBScript でファイルシステムを呼び出すときには、

Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

と長かったので、GAS のスマートさに痺れます。

2.スプレッドシートを操作する

次に、スプレッドシートを操作するコードを書きます。

var SS = SpreadsheetApp;

これで 1 行目に記述した「GM」オブジェクト (= Gmail) が「SS」オブジェクト (= スプレッドシート) を操作できます。
現在開いているスプレッドシートに直接書き込みをするので、

var SS = SpreadsheetApp;
var Sheet = SS.getActiveSpreadsheet().getActiveSheet();

という感じで、Sheet オブジェクトに入れておきます。

3. スプレッドシートに書き出す

最後に GAS を実行すると、スプレッドシートに書き出しされました。

ここまでできれば、あとはスプレッドシート関数を使って色々加工できます。


この記事が気に入ったらサポートをしてみませんか?