ハロー!7016です!
この記事ではGoogleAppsScriptを使って、Alexa(Echo dot)が毎朝当日のゴミの日をお知らせしてくれるツールを作成しましたので、紹介します。
Alexa端末(Echo dot)さえあれば、あとはすべて無料で作れちゃいます!
簡単なのでプログラミングの練習にも最適で、なおかつ作ったあとも実用性が高いので、皆さんぜひ真似しちゃってくださいね!
このツールを開発してから我が家ではゴミの出し忘れが0になりました!
燃えるゴミは毎週あるから忘れないんですけどね、燃えないごみとか紙布とか小型不燃とか缶・ビンとかって
隔週だったり月1だったりするので、気がつくと「あ、出すの忘れてた」ってなりますよね。
そういったことがこのツールで解消できます。
ツール概要
では早速テクニカルな説明に移ります。
処理概要ですが、大きく分けて2つの処理に分かれます。
作り自体はめっちゃシンプルで簡単です。
自治体から送られてくるゴミの日メールをGoogleAppsScriptでスケジュールに取り込む。
STEP2:
Alexaの定形アクションで登録されている当日の予定を読み上げる。
たったこれだけ。
これらの処理をすべて自動化することで、あとはほったらかしでも毎朝Alexaがゴミの日を教えてくれます。
・Alexa端末
・Googleアカウント
・住んでいる自治体のゴミの日メール
Alexa端末は一番安いEcho dotが5,000円以下で購入できます。
まだ持っていない人はこの際、勢いで購入してみてはいかがですか?結構便利ですよ。
それではSTEPごとに処理を分けて説明しますね。
STEP1:自治体から送られてくるゴミの日メールをGoogleAppsScriptでスケジュールに取り込む
1−1:ゴミの日メール登録
まずは自治体ごとにサービスとして提供されているゴミの日お知らせメルマガに登録しましょう。
※住んでいる自治体でゴミの日案内メールのようなサービスがない場合はこのツールは使えません・・・
→「”住んでいる市” ゴミの日メール」などでググれば、出てくるかと思います。
その際に登録するメールアドレスは必ずgmailを利用してください。
1−2:Gmailを開いてラベルを設定します。
後述しますが、このラベルを目印にGoogleAppsScriptで引き込みます。
対象のメールに対して下記のメニューより「メールの自動振り分け設定」を選択します。
ラベルを付けるから、自分で作ったラベルを選択しましょう。
ここでは事前に作っておいた「ゴミ」というラベルを選択します。
タグの名前はなんでもOKです。この設定をしておくと、メールを受信した際に自動的にラベルが付与されます。
1-3:GoogleAppsScriptでプログラミング
googleアカウントでログインしたら下記のページからGoogleAppsScriptを書きましょう。
スプレッドシートのメニューから「スクリプトエディタ」を開きましょう。
スクリプトエディタを開いたら「新規作成」より「プロジェクト」を作成しましょう。
私が作成したソースを貼っておきますので参考にしてください。
// ゴミの案内メールを取得
var result = [];
var threads = GmailApp.getUserLabelByName(‘ゴミ’).getThreads();
for (var i = 0; i < threads.length; i++) {
var messageBody = threads[i].getMessages()[0].getPlainBody();
var gomi = messageBody.match(/ごみの種類.*/g);
var messageList = gomi.toString().split(‘:’);
Logger.log(‘gomi:’ + messageList[1]);
}// カレンダー取得
var calendar = CalendarApp.getDefaultCalendar();
Logger.log(calendar.getName());var title = messageList[1]+’を捨てる日ですよ。忘れないでね。’;
var date = new Date();
date.setDate(date.getDate() + 1);var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();var tommorow = String(year) + “/” + String(month) + “/” + String(day);
var startTime = new Date(tommorow +’ 07:30:00′);
var endTime = startTime;
var option = ‘自動登録’;
Logger.log(startTime);calendar.createEvent(title, startTime, endTime, option);GmailApp.moveThreadsToTrash(threads); // スレッドを削除
console.log(threads.length + ‘件のゴミメールを削除しました。’);
}
注意:ソースの
console.log(threads.length + ‘件のゴミメールを削除しました。’);
の部分でメールの削除処理を行っています。
→一度読み込んだメールを再び重複して読み込まないように。
PGをテストする際にはメールが消えないようにこの部分をコメントアウトするなどした方が良いと思います。
この処理でメールからGoogle Calendarへの引き込み登録が完了します。
実際にGoogle Calendarを見てみるとメールに書かれているゴミの日が登録されているかと思います。
こうなっていれば成功!
1-4:自動実行するようにスケジューラーをセットします。
自治体からのゴミの日メールが夕方にとんでくるので私は適当に6時〜7時に動くようにしています。
自動実行のタブから実行したい時間を入力してこれでSTEP1は完了です。
つまりこれでデータのINPUTは完了となります。
STEP2:Alexaの定形アクションで登録されている当日の予定を読み上げる
ここからはSTEP2、OUTPUTです。
Google Calendarに登録した予定をAlexaに読み上げてもらいましょう。
ここまでくれはあとは簡単、Alexaアプリから設定をするだけです。
このツールの機能としてはAlexaのスケジュール読み上げ機能を利用しています。
・今日の予定は?と聞くと、スケジュールに登録されている予定を答えてくれる。
・定形アクションを設定しておけば毎日決まった時間にスケジュールを読み上げてくれる。
2−1:連携するスケジューラを選択する
2−2:定形アクションで当日の予定を読み上げる
これで家族を驚かせてみよう!
夜の間にこっそり仕込んでおけば、いきなり朝になってAlexaが「ゴミ出しを忘れないでね」とか言い出したら家族はびっくりですね!
家族からは「すごい!!」と称賛されること間違いなしです(笑)
そんでもって実用性が神がかっていますので、感謝もされます(笑)
ちょっとプログラミング勉強したいと思っているそこのあなた!
ぜひゴミの日お知らせツールを作ってみてはいかがでしょうか?
今回の仕組みを流用すれば他にもいろんな自動化ツールができちゃうかもしれませんよ。
ぜひ考えてみてください。
以上、参考になれば幸いです。
コメントを書く