忙しいママの味方！「買い物リスト」を自動作成して、家族で楽しく共有できる仕組みを作ってみた

##忙しい毎日。とにかく家事を効率化したい！
共働きの夫婦にとって、**毎日の家事をいかに効率化できるかは課題**です！
なかでも、私が特にストレスに感じているのが、**平日夕方の買い物**です。
私が買い物リストを作成して、夫に買い物をお願いすることが多いのですが、正直ここがうまく機能していません。その結果、かえって非効率となり、更なるストレスになることも・・・。
現在の課題を、下表にまとめてみました。

|現在の課題<br>（買い物リスト）|今回解決したいこと|
|:---|:---|
|作成が手間|現在はスマホのメモ帳に入力。<br>平日夕方は手がふさがっていることが多く、後回しになって入力を忘れる。**GoogleHomeで自動化**したい！|
|連携不足|帰宅途中の夫には、"買ってきて欲しいもの"を連絡して、買い物を依頼。<br>しかし、連携を忘れて間に合わないことが多いため、リストを**タイムリーに共有**したい。|

わが家では、昨年「Google Home」を購入しました。
実生活には活用しきれていませんが、子どもは「Google Home」に興味を持っており、よく話かけています。
今回、「IFTTT」とアプリケーション連携ができることが分かり、**家族で楽しく使うことができたらいいな**と思い、以下のツールを作ることにしました。
なお、**子どもが一緒に使えるような機能として、オプションを追加**しています。
（詳細は、以下①IFTTTを参照）

##NEW！「買い物リスト」
実際に作った買い物リストは、こちらです。
リストが更新がされた場合、夫と私の双方のLINEに通知するようにしています。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">お買い物リスト、完成！😊<br>アプリケーション連携して、何とかLINEに繋がりました！<br>googlehomeで音声を吹き込み、リストを自動で作って、LINEに飛ばしています🙂<a href="https://twitter.com/hashtag/LINEBot?src=hash&amp;ref_src=twsrc%5Etfw">#LINEBot</a> <a href="https://twitter.com/hashtag/%E8%B2%B7%E3%81%84%E7%89%A9?src=hash&amp;ref_src=twsrc%5Etfw">#買い物</a><br> <a href="https://twitter.com/hashtag/googlehome?src=hash&amp;ref_src=twsrc%5Etfw">#googlehome</a> <a href="https://twitter.com/hashtag/%E8%87%AA%E5%8B%95%E5%8C%96?src=hash&amp;ref_src=twsrc%5Etfw">#自動化</a> <a href="https://t.co/btzk4hO1gA">pic.twitter.com/btzk4hO1gA</a></p>&mdash; くるみ@5歳児、子育て中 (@Kokano23) <a href="https://twitter.com/Kokano23/status/1398881516751491074?ref_src=twsrc%5Etfw">May 30, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


###デモ動画
デモ動画は、以下リンクよりご覧いただけます。（Google Home → スプレッドシート）
合言葉は、以下の３種類です。

①「OK,Google！ 買い物リストに XX を追加して」
②「OK,Google！ リストに XX を追加して」
③「OK,Google！ パパに XX 頼んで」　　※③は子ども用です。

https://youtu.be/tlGDAqu5ejw


##手順
作成にあたっては、以下のサービスを使いました。
当初は、「IFTTT」を使ってLINEまで連携させようとしましたが、無料プランでは入力1・出力1までと制限があったため、少々複雑でしたが、以下のとおりとしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280625/3c75536b-ef21-5185-aa6c-b5884234c9e7.png)

###①IFTTT
デモ動画のとおり、「Google Home」から音声を拾って、買い物リスト（Googleスプレッドシート）に追加されるようにしました。参考までに、アプレットも掲載します。
子どもも登録ができるように、「**パパに XX 頼んで**」というフレーズにも反応するようオプションを追加しました。
（日常生活でも、子どもからもよく買い物を頼まれているので、そこから発想。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280625/5585cde4-7e17-b999-5752-d71792a8b1c1.png)



Googleスプレッドシートには、以下のように情報がストックされていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280625/4c5ce444-d485-59cc-2903-1c5ab9e7a8c1.png)


###②GAS
①でストックしたGoogleスプレッドシートに、スクリプトを書き込みます。
integromatのWebhook URLに、textを渡す役割です。
この辺りは苦戦したため、以下の別記事にまとめています。

https://qiita.com/kokano23/items/5e1d0f963eee2e370e27

```Javascript
function myOutgoingFunction(){
 // Webhook URL
 //Integromatで作成したWebhookのURL(末尾にパラメータ用の「?text=」を付ける)
 const URL='https://hook.integromat.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX?text=';

 //シートは一つしかないのでID指定の必要なし
 const sheet = SpreadsheetApp.getActiveSheet();

  //セルと取得する行数を指定する方法(A1から15行分取得)
 var name = sheet.getRange("A1:A15").getValues().toString();

 //カンマを改行に置換しながらGETリクエストを投げる。
 UrlFetchApp.fetch(URL + encodeURIComponent(name.replace(/,/g,'\n')));
 
 }
```

トリガーは、タイムリーに共有する目的から、"スプレッドシートの編集時"に実行される設定にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280625/7b872745-bee4-e929-9107-853a6f15af03.png)


###③Integromat

GASからWebhookを受け取り、LINEBotに繋げています。
設定にあたっては、以下の記事が大変分かりやすかったので、参考にしました。

https://qiita.com/shoito66/items/2f67e4de549dd844c0f4

LINEのMessages等の設定イメージは、以下のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280625/f26e4944-862e-f830-a83f-6a2fb04544b3.png)

LINEの通知は、夫と私の双方に飛ばすようにするため、[LINE Developer](shttps://developers.line.biz/ja/)上で以下のとおり設定しました。
■Messaging API＞グループチャットへの参加を"許可"に変更（以下「Enabled」）＞夫と私のLINEでBotのQRコードを読み取り、それぞれ友だち追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1280625/8a13a229-a56d-da62-0948-9205ae7fc694.png)


##作ってみて気づいたこと
実際に作ってみて、気づいたことは以下のとおりです。

- 「Google Home」の音声認識がうまくできるか心配でしたが、誤変換等もなく、スムーズにスプレッドシートに入力できました。子どもの声も、うまく拾ってくれています。
- ストレスに感じていた買い物リストも、**家事や子育ての合間に楽々作成**できます！忘れがちだった夫への共有も自動で通知してくれるので、かなりの**時短**になりそうです！

##今後に向けて
今後、改善したいと思った点は以下のとおりです。いつか機能を充実させたいと思います。

- 買い物リストには、**購入する個数（3個）**や**量（100g）**の情報があった方が便利。
- リストからLINEに引き渡すデータは、わが家の買い物の経験上から、**MAX15個**に設定。<br>（買い物を短時間で済ませるため、本当に必要なものに厳選。）<br>一方、今後データ数が増えると対応しきれないため、A列がnullになるまで取得する設計も検討。<br>（プログラミング初心者のため、コード勉強中です）
- 購入済みのものは、**リストからの削除も自動化**できるとよい。
- もしも子どもがイタズラした場合、大量のデータが登録・通知されてしまう懸念もあり。制御方法は要検討。

##参考記事
▶[Integromatを使ってWebhookで受け取った内容をLINE Botに流す](https://qiita.com/shoito66/items/2f67e4de549dd844c0f4)
▶[「GAS」から「integromat」への連携で、スクリプト部分に苦戦した話](https://qiita.com/kokano23/items/5e1d0f963eee2e370e27)
▶[「IFTTT」で「Google Assistant」を連携させる方法](https://qiita.com/kokano23/items/73291cb5389df7d2980b)