EC最安値を教えてくれるLINE Botを作ってみた

### 店舗巡回の際、その場でECの最安値はわからずあきらめてた
こんにちはtnsatoです。
今回LINEBotに触れる機会があり、活用することで日々の仕事や生活で今までより良くできることはないかと考え、以下のように挑戦してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/1c56e36c-d823-5157-baa4-55e72dd9d393.png)
私は小売業の会社に勤務しており、市場価格の変動が激しくそのチェックに手間がかかります。特に需要が高まり続ける競合の一つであるECは、参入プレーヤーも多いことから価格変動スピードが店頭よりも速く追うのが大変です。

自社店舗や競合店の巡回時に店頭価格を見た際、現場では携帯しか使用できないため「ECと比較してどうなのか」を確認するのは大変効率が悪いために、あきらめていました。
そこで、LINE Botを活用すれば解決方法があるのではないかと考え着手しました。


# 目次
[いざ着手](#-いざ着手)
[Makeを使ったシナリオの構築](#-Makeを使ったシナリオの構築)
[APIはどうする？](#-APIはどうする？)
[Make内でモジュールの設定](#-Make内でモジュールの設定)
[TEST](#-TEST)
[完成です！](#-完成です！)


# いざ着手
今回、LINE Botを学んだうえでAPIは何たるやも学びました。そこで前述の通りEC市場価格を調査するため、主たるECサイトAmazon Rakuten Yahooそれぞれの価格を引張ってこれるAPIはないものかと探しました。しかしながら、全く検索にひかからず...　
あとで分かったのですが楽天APIなるものもあり、楽天だけでも一部の価格データベース連携することができたようです。調べる力が足りてませんね。

そこで、知見にあふれた先輩へ相談したところ、やはり既存では見つからないようでした。ところが代案としてアイデア下さったのが、「スプレッドシートを活用したSSSAPI使ってみたら」！なんじゃそりゃ。Sが多いわ、と思いながらも一緒に教えて頂いたSSSAPIについて解説してる記事サイト読むと、非常にわかりやすくできそうな気がしてワクワクしました。


ECの価格はリアルタイムではなくなってしましますが、業務上定期的に調査しているEC商品価格一覧を、スプレッドシートに更新することで出先でも簡単に価格チェックを行えることはできそうです。

そして、いざ着手しようとすると疑問だらけでパニックです。触れ段階ではわかった気になっていたようで、やはりよくわかっていなかったことを自覚しました。再度、情報をすべておさらいし、郵便番号から各地の天気が返ってくるとお天気API設定を使用したチュートリアルをやり直しました。そのおかげもあって、少し理解が深まったような気がして自信をもって再挑戦です。

# Makeを使ったシナリオの構築
今回は、以下の内容をLINEBotを作成してみよう考えました。
「LINEに商品JANコード(商品バーコードの下に書いてる数字）を打ち込むとAmazon Rakuten Yahooの最安値が返ってくる」

そのためにはMakeを活用して4つのモジュールで何とかなりそうなことまではわかりました。

:::note info
**「LINE」Watch Events**
**「HTTP」Make a request**
**「JSON」Parse JSON**
**「LINE」Send a Reply Message**
:::

下記の陣形で臨みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/8ffab81c-4f44-9677-92b5-b3be4807bc03.png)


# APIはどうする？
もう一度、教えてもらったSSSAPIの記事を落ち着いてら読んだら非常にわかりやすく希望に燃えました。出遅れオジサンでもなんとかできる気がしました。こういうわかりやすい記事の発信力を身に着けたいですね。

**参考記事**

https://www.mythos-jp.com/blog/2820-sssapi/


概要としては、「GoogleスプレッドシートをJSON形式で返却するAPIを作成できるWebをサービス」をなんと無料で使用できるらしいです。また、一般的にはGoogleスプレッドシートをAPIで扱う場合は、GoogleAPIを使用して　なんちゃらかんちゃら　とのこでめちゃくちゃ難しいそうです。よってSSSAPIはとても便利なサービスだということが直感的に理解できました。

下記準備だけで事前準備完了です。

:::note info
**SSSAPIにGoogleアカウントを使用して登録**
**同様のGoogleアカウントのドライブにスプレッドシートを作成**
**SSSAPI側にはスプレッドシートのURLを連携**
**スプレッドシート側にはSSSAPIの閲覧権限を追加**
:::
たったこれだけAPIの設定ができるなんてすばらしすぎます、UIも優れてます。
今までスプレッドシートがなにかもわからずお恥ずかしいレベルなのですが、通称**スプシ**と呼ぶことがわかりました。かっこいいので使ってきます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/bb705fee-8925-e51e-8d47-bbd67cb5b564.png)

作成したサンプルスプシ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/6ceef4b6-f4fb-24bf-7a7f-6b45cb15cb53.png)





# Make内でモジュールの設定

### 「HTTPモジュール」の設定
先程のSSSAPIでAPIのURLを取得しモジュールに設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/d88bee38-8055-0884-c972-4bf24d92a290.png)

### 「JSONモジュール」
JSON stringは　Data　名前は任意です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/30e58b54-d8f5-5ab4-f3da-253f5e3e3d33.png)

### JSONをコピー
SSSAPI内で「Open API URL」クリックするとJSONが開きますのでコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/58ad6751-5df7-8059-ea21-4b4b9710b2bd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/2ef493d7-f360-8ca5-a503-81d32aeecff1.png)

### 「JSONモジュール」
sample dataへ先程コピーしたJSONを貼付け

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/5f6467d2-4462-7cc3-b4ed-fadea6239ac7.png)

### 「LINE　Send a Reply Message　モジュール」
返してほしいメッセージのテンプレを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/00d5b3a5-393d-ca5a-95a8-adb6ffda8a93.png)

以上で設定は完了です。

# TEST

さっそく、商品コードを打ってみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/083e11b6-0ec6-141c-e635-16903448ffd3.png)

やった！成功だ！と思ったのもつかの間、
何を打っても同じ内容が返ってきます....
検索で調べていくとどうやらHTTPモジュールの設定に問題だがあったようです。
ここ一番つまずきました...

:::note warn
どうやらスプシの中の検索したいキーとなる列のヘッダーを、
**「filter__検索したいヘッダー__exact」** としなければならないようです。
**__は半角アンダーバーx2**です。
:::


HTTPのNameに設定しリトライ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519202/3e593993-6220-d0aa-6ec7-ddd0a48a88e2.png)

# 完成です！

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">LINE Bot 初号機 <a href="https://t.co/LjMXU7wHXu">pic.twitter.com/LjMXU7wHXu</a></p>&mdash; tnsato (@tnsato2000) <a href="https://twitter.com/tnsato2000/status/1690463176117370880?ref_src=twsrc%5Etfw">August 12, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

今回は残念ながらリアルタイムでの価格情報取得は技術と知識がないため断念しましたが,
まずは一歩です！スプシとSSSAPIの更新をRPA化できればも少し実用性が上がるかもしれません。今後学びを高める中で、リアルタイムでの情報取得と更新ができる方法を模索していきます。
**不出来でも最初の一歩に意義があること実感しました。**

追記(2023/08/20):記事として少々見づらかったので、タイトルおよび一部削除・参照リンクなど修正しました。