#withmake 六曜をLINEbotで瞬間検索！　JSONパースできずとも 力業で値取得した話


 今回は👇の記事を参考に、 <font color="Red">**六曜を取得するLINEbotを完成させます！**</front>
 
 https://qiita.com/s5xttke4u/items/def9cb30e687e77b2eed

## 【六曜】気にされる方は多いらしい

 スーパーなどの小売店ではお祝いの品や高額品は「大安」に購入される傾向が強く、
 仏滅時はお届け指定日でも避ける傾向があるそうです。
 従業員のシフト作りにも、大切な要素の一つになるとのこと。

 **LINEbotでサクッと「六曜」を知ることができたら、急な時など便利ですよね。**

 [参考記事①：Node-REDで六曜お知らせLINEBotを作ってます](https://qiita.com/tanaka_LV5/items/d8b61123b646dd738456)
 [参考記事②：運を味方につけたい！！大安や仏滅をLINE Botで知る](https://qiita.com/tanaka_LV5/items/f1f89d02d404245a2c56)
 [参考記事①：【LINE BOT】WebAPIを使用し自動返信BOTを作ってみた](https://qiita.com/Toshiki0324/items/96c5dcb47eea5fcf302f)

 <details><summary>そもそも六曜とは？</summary>
「先勝」「友引」「先負」「仏滅」「大安」「赤口」の６つのことで、その日の吉凶を占う指標とされています。
もっと知りたい方はこちら

https://tokubai.co.jp/news/articles/1563
</details>

## 人気の六曜取得APIが使えなくなった

 調べてみると**上3つの参考記事のLINEbotは、全て使えなくなっていました。**
 というのも、[こちらのAPI](https://kijtra.com/article/date-info-api-v1/)が使えなくなっている模様。
 [別のAPIから挑戦している記事](https://qiita.com/s5xttke4u/items/def9cb30e687e77b2eed)もありましたが、22年5月8日現在、上手く動かない様子。
 ということで[こちら](https://qiita.com/s5xttke4u/items/def9cb30e687e77b2eed)の記事を参考に、 <font color="Red">**六曜取得LINEbotを作っていきます！**</front>

## makeでノーコード作成 (モジュールの中身アリ)

 できたものはこちら👇 4桁の数字を打つと、指定日時の六曜を返してくれます。
 
 https://twitter.com/okinakamasayos1/status/1522960710807871489

　【使用ツール】
 ・[make](https://us1.make.com/)
 ・[LINE Developers](https://developers.line.biz/ja/)
 ・[六曜のAPIサイト](http://koyomi.zing2.org/)

 [こちらの手順](https://qiita.com/s5xttke4u/items/def9cb30e687e77b2eed#%E7%B0%A1%E5%8D%98%E3%81%AA%E6%89%8B%E9%A0%86)を参考に作成。結果完成したmakeのシナリオ図は下記の通り。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/db2ddd88-fbbb-8059-8143-782789b7df93.png)

 モジュールの中身①(拡大して見てください)
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/79348739-cfaf-37c7-6901-17e9c76e0acc.png)

 モジュールの中身②
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/82d11777-3c83-65be-8809-318e32278e2c.png)

## 難しかったところ

 **①打ち込んだ4桁の値を「月」と「日」に分割してHTTPに渡す**

 下記の記事を参考に、`Substring`を使って数値を取得。

 https://integromat.ethical.works/contents/three-features-for-working-with-strings

 0～2文字目の手前までを「月」　その後の2文字を「日」として取得 しHTTPへ
 コード無しで、直感的に数値や要素を取り出せるmakeすごい。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/3723ed6b-e99a-d8ee-de3e-1aafcbf54bfa.png)

**②JSONパースができず 情報を抜き取れない**

 Parse Jsonモジュールで"rokuyou"の値を取り出したいが、JSONの中身が下記の通り
 日付によって毎回変わるので、上手く取り出せない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/19c52a2c-0adc-abb5-a71e-9fda60b6ef12.png)
 そこで、先ほどの`Substring`を使ってJSON内で"rokuyou"が何文字目かを特定し、
 要素を抜き出そうとしたが失敗。日付によっては文字数が変わるので、
 〇〇文字目から〇〇文字目、と指定してもずれてしまう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/3b40cbb0-d40a-b304-88d7-5260c31975d1.png)

**③力業で六曜の値を取得**

 試行錯誤の末、`indexOf`で「要素検索」、要素の「開始位置」を取得できることを発見。
 参考：https://www.integromat.com/en/help/string-functions
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/18ef50d9-7dc6-25ba-0c2b-4fc8f788fae4.png)

 `indexOf`と`Substring`を組み合わせて、下記の通り六曜の値の取得に成功。
 "rokuyou"の開始位置検索から始めるので、それ以前が何文字になっていても取得できる。やった!!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/dbb16a68-bc7d-262a-c774-115cac11b608.png)

## 「大安」：やってはいけないことが何もない日

 本日2022年5月8日は「大安」で「やってはいけないことが何もない日」とのこと。
 今回のやり方は正攻法ではないかもしれませんが、**結果「六曜」を取得できたのでOK!!**

 <font color="Red">**あきらめずに色々な方法で試してみるって大切ですね💪**</front>

 大安日ついでに、最近作った意味のない作品も紹介させてください👇
 これからも色々楽しんで作っていくのでよかったら見てね(*^▽^*)

 https://twitter.com/okinakamasayos1/status/1522238956091285504