勤務シフトを確認できるLINEBotを作ってみる。

はじめまして。
金融業界で長年働いている事務員兼主婦です。

事務所の中でいつも飛び交うフレーズが、「今日の遅番誰？」「明日の早番は？」「明後日は何人いる？」しまいに休日に入ると「私、明日何時から出勤だっけ？？」となる始末。みんな簡単にサクッと確認できるモノがあったらなぁと、覚えたてのLINE Botで作ってみようと思いました。

# Let'sチャレンジ！LINE Botでシフト確認
社内にはシステムが導入されているので、スケジュールはＰＣ画面で確認出来ます。また、CSVデータでダウンロードも可能なので、誰もが見やすいようにエクセル表に加工して掲示板にも貼り付けてあります。

しかし、個人的にはあっちのシステム、こっちのシステムに入力、スマホや手帳に写してみたり、写真を撮ったり、卓上カレンダーに書いてみたり、いったい何度スケジュールに手間をかけるのか。せっかくデータはあるのだから、わかりやすいようにしよう！
というわけで、LINEで日付を入れると出勤予定が確認出来るBotを作成してみる事にしました。

# 使用ツール
・[Make](https://www.make.com "Make Home")
・[SSSAPI](https://sssapi.app "SSSAPI")
・Google Sheets
・LINE
・[LINE Developers](https://developers.line.biz/ja/ "LINE Developers")

# 製作開始
## １. APIデータに使用するGoogle Sheetsを作成
普段使用しているExcelデータに抽出用のシートを追加作成しGoogle Sheetsへ貼り付けします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/1f935c00-80c5-ef92-40ca-2823e7299155.png)


## ２. SSSAPIを使用してAPI化

https://sssapi.app/

こちらのサイトで名前を付けて、Google SheetsのURLを貼り付けします。Google Sheets側にも共有設定が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/3440af5f-d45f-8d93-e77f-3cd44765d582.png)

## ３. Makeでシナリオを作る
LINEでメッセージを受け取り→Toolsで日付文字列を読み取り→HTTPでデータを読み取り→JSONで変換し→LINEで返すイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/12c28bbb-0384-6a88-8d82-644f483f6ad9.png)

左下から
　1.LINEモジュールはLINE Developersで作成したLINEアカウントと紐づけ。
　2.Toolsモジュールは日付表記が`2023/11/01`のように`/`がある場合は必要です。入れない場合は不要。
　3.HTTPモジュールはデータに日付検索の結果を反映させたいのですが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/d0d0a394-ff61-0e49-91e1-ed2287c597b0.png)
いまだにデータ検索してもらえないので試行錯誤中です。
クエリを設定すれば、LINEで入力した文字列でフィルタリング出来ると記載されていますが、どうもうまく動いてくれません。

https://sssapi.app/help/api_call/#1%E4%BB%B6%E5%8F%96%E5%BE%97

　4.JSONモジュールに当該APIのサンプルを読み込ませ認識させます。

　5.一番右のLINEモジュールに応答部分の設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/f0c9065c-a35a-d14f-d8ee-d52569097e3b.png)
JSONにサンプルを読み込ませて認識できていればTextに上記のように設定できます。

# 試作品
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">うまくいかない・・・。<a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://twitter.com/hashtag/%E5%88%9D%E5%BF%83%E8%80%85?src=hash&amp;ref_src=twsrc%5Etfw">#初心者</a> <a href="https://twitter.com/hashtag/LINEbot?src=hash&amp;ref_src=twsrc%5Etfw">#LINEbot</a> <a href="https://t.co/LxY6nVQOVM">pic.twitter.com/LxY6nVQOVM</a></p>&mdash; kiku (@kiku_2005) <a href="https://twitter.com/kiku_2005/status/1722177968502685983?ref_src=twsrc%5Etfw">November 8, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

どうしても１行分のデータしか返してくれません。おそらくAPIの取得方法とHTTPモジュール設定の組み合わせに問題がありそうです。

# 引き続きチャレンジ
色々参考にして何度も作ってみているのですが、今のところまだうまく作動せず。~~他の方法にもチャレンジしていますが、まだまだ試行錯誤が必要なようです。~~
~~出来上がりましたら、ご報告させて頂きます。~~
引き続き、こちらの方法は時間をかけて到達させたいと思います。
今回は取り急ぎ、職場で必要に迫られているので、ノーコードでの作成を試みる事にしました。

# 再製作開始
## １. 直接モジュールとして使用するGoogle Sheetsを作成
普段使用しているExcelデータに抽出用のシートを追加作成しGoogle Sheetsへ貼り付けします。（今回、日付の表記は`/`無しにしてあります。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/cf6b9ed7-36d4-fe4e-4112-0b22aa23dfc1.png)

## ２. Makeでシナリオを作る
今回はGoogle Sheetsを直接モジュールとして使用するので、とてもシンプルです。LINEでメッセージを受け取り→Google Sheetsを読み取り→Routerで分岐→LINEで該当の日付があれば返す、無ければ「未登録です」のメッセージを返すイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/e6a286a0-f461-c21e-48f7-52bc0e852804.png)
左から
　1.LINEモジュールはLINE Developersで作成したLINEアカウントと紐づけ。
　2.Google Sheetsモジュールはシート名を選択、フィルター設定、行数設定がポイントとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/74da7989-c98e-a9b2-d547-5a9b4bdbb971.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/71f369b8-f63e-cca9-78fe-de04cd0c16e3.png)

   
　3.Routerの分岐は上の部分が該当の日付があれば結果を返す、下の部分は無ければ「未登録です」を返すように設定。

上の部分（該当ありの場合）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/2ad5dc0f-e473-f8f7-0337-24decef87897.png)


下の部分（該当無しの場合）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/4b9ec9e7-8a4b-c112-b17b-e2dbe102ce30.png)

  
　4.一番右のLINEモジュールに応答部分の設定をします。

上の部分（該当ありの場合、結果を返す。）   
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/0493c38f-2062-4a7a-efa3-e8de740173c7.png)

下の部分（該当無しの場合「未登録です」のメッセージを返す。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570716/8860248a-c953-5570-89df-0e81ad4733fb.png)


# 完成品
https://x.com/kiku_2005/status/1723005821422813672?s=20

# 感想
やっと応答が返ってきたこの達成感:raised_hands:たまらないです。
みなさんのアドバイスや先輩方の記事を参考にさせて頂きました。ありがとうございます！取り急ぎ、必要最低限で作成したとはいえノーコードだと本当に短時間でサクッと出来てしまいました。今度は一定時間にリマインドしてくれる機能を装備したいなーと早速考えてしまいました:laughing:
しかし、日付表記の部分でまだ到達していないモヤモヤ感が残っているので、そちらはまた引き続き試行錯誤していきたいと思います。


# 参考資料

https://www.youtube.com/watch?v=LjN0VW1bg5w

https://qiita.com/izumiya_t/items/743f48cf7c7b2b051019

https://qiita.com/tomowkrh/items/9c4a616bd1fd40e5e3b9



ここまでお付き合い頂きありがとうございました。