客注リマインドシステムでお客さまに御迷惑をおかけしない

　小売店に必要不可欠なのが客注ですね。
　例えばお見舞いに行くので●●月●●日に籠盛を作ってほしい、といったご注文をお客さまから承りますが、その対応を失念すると、店舗の信頼を大きく損なうことになります。
![images.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/85b5bf7b-a38c-2e0b-0618-9619f25f7bdd.jpeg)

　多くの店舗では客注ノート等、紙媒体で管理しているかと思いますが、私の経験上、このノートが案外見づらいです。というのも、**承った順にノートに記載していく都合上、案件がお渡し日順に並ばないため、見落とす可能性があるのです。**

　諸々、現場で工夫されていることと思いますが、デジタルツールで簡略化してみましょうというのが今回の企画です。

#作成したプロトタイプ
<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/6c9e5b5a-69b2-7465-4a4d-ad31e632c55d.jpeg' width = 50%>
スプレッドシートに記載した客注情報が
<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/c69dc9ed-8028-cb6b-74ba-0c913b991e4c.png' width = 50% alt = 'December 07, 2021 at 0442PM.png'>
当日朝になるとLINE Botに届きます。
<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/c37be359-5e6a-1ba4-7741-e84220078227.jpeg' width = 50%>
通知された客注情報は、スプレッドシート上にTRUEが入ります。

**後はチームメンバーにLINE Botに登録してもらうだけですね。**

また客注がない日は、売場責任者のアカウントに今日の客注がないことを通知するメッセージが届きます。


#構成

<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/49e8879f-187d-69ff-766e-cf0e8a08677e.jpeg' width = 50%>
 
[integromat](https://www.integromat.com/)とGoogleシート、LINE Messaging APIを使用しました。
始めはGASでスプレッドシートに仕込むことを考えたのですが、**毎日通知することを考えるとintegromatで常時監視にしてしまった方が早い**と考えました。
ノーコードで書けますしね。

##スプレッドシートの準備
A1～D1セルにそれぞれ、ヘッダーを事前に記載しておいてください。
今回のプロトタイプでは
**承り日、お渡し日、内容、通知**
と記載しています。

**お渡し日の列はYYYY/MM/DD表記（2021/12/7等）になるよう事前に設定してください。**

##Search Rows
<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/4e54687f-f44a-7027-5981-fd770e2f9ca6.jpeg' width = 50%>
　準備したスプレッドシートと紐づけたら、filterのところを赤線の通りに作成してください。
　特に**Equal to の後は画像の形式で作成してください。**ここの表記がブレていると適切な日程のフィルターをかけてくれません。
また、and 条件の通知D　Does not existがあると、通知されたかどうかが見やすいかと思います
　今回はサンプルデータの数が少ないのであまり影響はありませんが、日々活用していくことを考えると、**必ずしもデータがお渡し日順に並んでいるとは限らないので。**

##Send a Broadcast Message
<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/008061ab-f49a-41e0-8ee0-84289f7bc829.jpeg' width = 50%>
　先程のモジュールで該当日付の行番号を拾ってくれているので、textのところで**内容**列を記載すれば書いてあるメッセージをLINE Bot上に通知してくれます。

　Messaging APIまわりや、integromatとの連携では以下の記事がわかりやすいと思うので、御参照ください。

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

##Update a Row
<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/98fed68f-6894-4ea6-63d9-371c801de53b.jpeg' width = 50%>
　スプレッドシートに記載するモジュールです。Row numberの箇所には赤線の通り、[Row number] を入れてください。
　こちら、Search Rowsのモジュールで取得した行番号となりますので、その下の通知(D)列に [true]を入れておけば、上記の通り、通知した情報についてはTRUEを記載してくれます。

##Send a Notification (error handler)
<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/bf7ab9d7-c57f-a44b-cdb4-675d2334f68f.jpeg' width = 50%>
　その日の客注がない、すなわち該当する行番号が存在しない場合はエラーが返ってきますので、**エラー処理として客注がないことをLINE Notifyで返しています。**
　**Send a Broadcast Message** のモジュールを右クリックすると出てくる**Add error handler** でLINEのSend a Notificationを選択してください。エラー処理になっていれば赤枠のように白抜きのコネクタとして現れます。
　後は、送信したい方をnotifyで登録し、Messageの箇所に今日の客注はありません等のメッセージを挿入してください。

　流石に客注がない日まで毎日通知するのはパートタイム社員の方に申し訳なく、客注がないことは売場責任者等が把握していれば良い情報と考えて、Broadcast Messageは使用していません。
　また、途中にLINE IDを取得する過程もないためpush messageも使用できず、泣く泣くnotifyを使用しました。

##一日一回の通知をスケジュール化
<img src = 'https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2100048/8d550ac6-333f-2aad-d559-32d7e4b653d3.jpeg' width = 50%>
　一度試験的に動かすと、左下のスケジュールボタンが動かせるようになるので、赤枠の通り "ON" にしてください。
　Run scenarioをEveryday とし、通知してほしい時間を選択すれば完了です。

#実装するにあたり必要なこと
　現実的に、ノート管理している現場に導入していこうと考えると**ノートに記載している情報をわざわざシートに転記していくのは非常に手間**です。
　もちろん、**ノートとシートのダブルスタンダードは抜け漏れの原因**であり論外です。

　従って、承った客注を簡単にシートに記載していく仕組みが必要ということになるかと思います。

　ということで新しい企画ができましたので、続きは以下のアドベントカレンダーで考えてみます。

https://qiita.com/advent-calendar/2021/retailtech

　もちろん、スマホ持ってない、ライン入っていないという高齢の方がいらっしゃる現場も多いかと思います。**私も思い返してみて、●●店は行けると思うけど、▲▲店は厳しいだろうな等あります。**

　デジタル化することが重要なのではなく、あくまで現場が働きやすくなることが重要ですので、一つの選択肢としてとらえていただければ幸いです。