【LINEでおすすめレシピ提案♪】MakeでLINE Bot作成

献立を考えている時や、チラシを見て「あら、安いやん」と思った時に、気軽にレシピを検索できたらなぁ…と思ったことはありませんか？

私はよくあります！

なので、**LINEでキーワードを送ったらおすすめレシピが返ってくる**✨LINE Botを作ってみることにしました。

プログラム未経験のド素人ですが、ノーコードのツールを駆使してチャレンジいたします！

はたして本当に作ることができるんでしょうか・・・:interrobang:


# 結論、なんとかできました！

https://twitter.com/kykadono/status/1569100452305960961?s=21&t=_ktaSx74PD8nA9ciikhklQ

![linebot_0907_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/963c427f-c413-e215-c3ea-993d48044749.png)

メニューである「サラダ」や、食材「豚肉」などのキーワードで、おすすめレシピがちゃんと返ってきました！

# 早速、作り方をご紹介いたします

###### 使用したツール

・ [Make](https://www.make.com/en)
・ [LINE Developers](https://developers.line.biz/ja/)
・ [楽天レシピAPI](https://webservice.rakuten.co.jp/)
・ Googleスプレッドシート


## 準備

それぞれのアカウント登録を行います。

楽天レシピさんは、一覧とランキングの2種類のAPIが使用可能になります。
・楽天レシピカテゴリ一覧API
・楽天レシピカテゴリ別ランキングAPI

https://webservice.rakuten.co.jp/documentation/recipe-category-ranking


## Makeでシナリオ作成

完成形はこんな感じになりました。
![linebot_make_0907_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/87d402f9-2532-c6d4-23b1-a82e9f7c7d3a.png)
モジュールという丸いヤツをつないで、それぞれ処理をしてもらいます。

LINEのモジュールについてはこちらを参考にさせていただきました。

https://zenn.dev/inoue2002/articles/3067c574b3a605



## まずはAPIを繋ぐ
![linebot_make_0907_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/102983b3-42d7-36d8-6f94-c3f23b9a1808.png)
HTTPモジュールを追加して、楽天レシピAPIのURLを入力します。
クエリに何を入れるかなんですが、APIの中身を見てみると、categoryIdで呼び出せそうな感じです。
![linebot_make_0907_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/c06053c4-fa2b-9ec9-fa19-6eaa81993d0d.png)
クエリを「categoryId」で設定し、あとは、Parse JSONモジュールで自動でJSONを分解してもらいます。
![linebot_make_0907_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/e352dcef-daf4-ff43-71bd-3863a8741406.png)
楽天レシピさんはランキング4位までのレシピを呼び出せますので、LINEモジュールSend a Reply Messageには、 4つのレシピタイトルとURLを返してもらえるように設定します。
![linebot_make_0907_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/35f3b910-d0b9-c329-4da2-b51601eb1511.png)

![linebot_0907_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/1d04aa22-c0ac-5140-90a5-25bdef9c6829.png)


:::note info
できました！
:::

ちなみに32番は魚料理のレシピです。

なんだかいける気がしてきました:laughing:

categoryIdでは、どの料理が何番か覚えていないとリクエストができません。
「魚」でリクエストするためにカテゴリーネームを入れてみました。
![linebot_make_0907_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/c516a7d5-02d0-897d-3e83-710a30f88e47.png)
![linebot_0907_2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/ee61f472-3ad6-8b28-a62d-7be2c73f9789.png)

:::note alert
失敗しました！
:::

総合ランキング上位の人気レシピが返ってきているようです。

## カテゴリ一覧のリスト化

「魚」で返してもらうためには、まずカテゴリ一覧で検索をして、ヒットしたキーワードのcategoryIdを取得する必要があるみたいです。

https://qiita.com/konitech913/items/7ffa7907a6c03c8909fc

どうやってリスト化できるかを考えてみました。
テーブルツール？JSON？Python？？
私にはまだまだ難しすぎます。。。

そこで、自分でGoogleスプレッドシートでカテゴリ一覧を作成しよう！と思い、APIのJSONデータをまるっとコピーしてExcelに貼り付けるという反則技を使うことにいたしました。

## Google Sheetsを連携

追加する場所は、LINEとHTTPの間です。

A列の「categoryName:」をLINEで送ったキーワードでフィルタをかけて、D列の「CategoryId」を返す設定です。
![linebot_make_0907_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/c2fd310b-67b9-a967-5341-f379640faf0c.png) ![linebot_make_0907_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/5edd811f-5eab-9853-46e2-42e6e5fda27c.png)


おまけで、フィルタの結果が「0の時はエラー」、「1の時はHTTPに進む」分岐を作成しました。

# 最後に
やっとなんとか形になりました。

## 試行錯誤のあと・・・
カテゴリ一覧APIをうまくリスト化することはできませんでした。
### 以前に記載していた試行錯誤

>とりあえず「Make（integromat）・API・テーブル」で検索してみると、別のテーブルツールがヒットして、私には扱うのは難しいなと思うものばかりでした。
>
>そんなときとつぜん、~~神からの啓示~~ 仲間から大ヒントをいただきました:bangbang:
>
>「Google SheetsモジュールでGoogleスプレッドシートと連携できる」
>
>それなら、APIからGoogleスプレッドシートにデータ取りだせそう:bangbang:な気がする:bangbang:
>
>早速Google Sheetsモジュールを見てみたところ、それっぽいものがありました。
>「Make an API Call」
>![linebot_make_0907_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/212d986d-b13a-83ec-dcd6-0704b0635bd0.png)
使い方を検索してみましたがうまく探すことができず、唯一見つけたのがこちらです。
>
>https://www.make.com/en/use-cases/how-to-make-an-api-call-tutorial
>
>全然Google Sheetsと関係ない説明ですが、「Make an API Call」の使い方は同じかも？と思い、同じように設定してみました。・・・が、やはりうまくいきませんでした。。。
>
### 現在進行形の試行錯誤
ずーーーっと、どうすればリスト化できるのか考えていろいろ調べてみましたが、記載していたGoogle Sheetsモジュールの「Make an API Call」は <font color="Red">なんか違う</font>ということは分かりました。

https://www.make.com/en/help/app/google-sheets

他の記事もいろいろ参考にさせていただき、やりたいことはなんとなーく分かってきました。
![linebot_make_0907_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2801955/2cb939b9-50e2-e7c4-be22-8144146b0114.png)
この大量に返ってくるカテゴリ一覧をいい感じのリストにするだけ！

・・・なんですが、**何を使ってやればいいのか**が分からず、いろんなモジュールを試してみましたが、そうこうしているうちに、Makeから無料お試し版の操作上限通知が来てしまいましたので、またもやここで断念いたします:cry:

## まとめ
反則技を使ったことで個人的には~~あまり~~<font color="Red">全然</font>スッキリはしていませんが。。。

ド素人の私が、はじめから100点満点を目指すのはおこがましいので、今回はこれで良しといたします。

やりたいことができるようになるまで、まだまだ先は遠そうですが、チャレンジしたこと自体は楽しめました！
また懲りずにチャレンジいたします:bangbang:


参考にさせていただいた記事は、本当にものすごく参考になりました。ありがとうございます。

そして、ここまでご覧いただいた皆さまも、ありがとうございました。