部長の予定も電話番号もわからない...！LINE Botにお任せください★

### こんな経験ありませんか？

- [x] 部署の人たちの<strong>予定<strong>を取引先に聞かれたけどわからない:frowning2:
- [x] 異動したばかりでみんなの<strong>電話番号<strong>が分からない:scream:

日々の業務に追われて意外と新しく入ってきた人やあまり連絡とらない方の電話番号が
抜けてたりする私です...（上長の予定も当日確認...）
そんなそんなマメに生きるのが苦手あなたたちへ送る<font color="red"><strong>LINE Bot!!!!<strong></font></h1>

本日は素人ながら人生の苦手を克服するために作ってみたLINE Botの作成過程をご紹介いたします。

<details><summary><font color="green"><strong>目次</strong></font></summary>
<dl>
  <dt>・出来上がると</dt>
  <dd>トーク画面のスクショ</dd>
  <dt>・何ができるの？</dt>
  <dt>・MAKEのシナリオ</dt>
  <dt>・Google Spread Sheet</dt>
  <dd>1つ目・2つ目</dd>
  <dt>・手順</dt>
  <dd>手順①~⑦</dd>
  <dt>・以上！</dt>
  <dd>あとがき等</dd>
 

</dl>

</details>

<details><summary><font color="green"><strong>使用したツール一覧<strong></summary>

★[MAKE](https://www.make.com/en)

★[LINE Official Account Manager](https://manager.line.biz/account/@359oyjrw/richmenu)

★[Google Spread Sheet](https://workspace.google.com/products/sheets/)

</details>

## :white_flower:完成系の動画
https://x.com/kitsunadawaka/status/1823010309633949975

動作動画はXからご覧ください。

[⑦](https://qiita.com/drafts/8dc5f54c94725dcea59a/edit#white_check_mark%E6%89%8B%E9%A0%86line%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E8%BF%94%E7%AD%94%E8%A8%AD%E5%AE%9A-2.md)

## :iphone:<strong>トーク画面はこのようになります<strong>

<img width="275" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/42b38af9-13c2-3dca-4a7f-eccc9a03f883.png">

## :ideograph_advantage:このLINE Botでできること
<dl>
  <dt>・予定を知る</dt>
  <dd>該当者の役職と日付を組み合わせて入力することでその日の予定を知ることができます。</dd>
  <dt>・電話番号を知る</dt>
  <dd>氏名・社員番号・役職のいづれかを入力することで電話番号が返ってきます。</dd>
</dl>



## <strong>:gear:MAKEのシナリオ<strong>
![MAKEシナリオ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/98f24bdf-c377-fc93-b1d9-088a8655210d.png)

## :page_facing_up:<strong>Google Spread sheet（以下スプレッドシート）の内容<strong>
### :pencil2:<strong>1つ目<strong>
![スプレッドシート②.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/7777f3d0-605e-725a-95c5-8490e4a5745d.png)

### :pencil2:<strong>2つ目<strong>
![スプレッドシート①.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/e5814375-4f88-3822-7d69-264521bed0bd.png)


それではここから手順説明です。
## :pushpin:手順

### :white_check_mark:手順①～1つ目のフィルターを設定しよう～

まずは予定を知りたい場合です。

1つ目のスプレッドシートの<strong>A列（役職＆日付）</strong>がLINE上で入力された場合に対象となる<strong>D列（予定）</strong>の値を返すというフィルター設定をします。

![①指し示し.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/64030c23-e89d-ca14-5838-93045dc49d8f.png)

フィルターの中身
![最初のフィルター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/b76efdf8-1016-5f8f-60b2-6c64d1d5bba0.png)

:::note warn
Text operators:Equal to A列
利用者がLINEで入力する値と同じだった場合ということです。
:::

### :white_check_mark:手順②～LINEモジュールの返答設定①～
続いて1つ目のフィルターの斜め上にあるLINEモジュールの返答設定です。

![返答①指し示し.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/4cb60e4b-785b-afb6-a02e-bcf92253aa3d.png)

LINEの中身
![①LINE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/b9c5710b-4d5d-1342-f4be-83747284ec86.png)

手順①で指定した条件に対して返答を返します。
任意のメッセージを入力してください。

:::note warn
予定を知りたいので<strong>D列（予定）</strong>は必ず指定します。
:::

はい！ここまでで〇〇さんの×月×日の予定なんだっけ？が解消されました！
一旦保存します。（何度も保存し忘れて吹っ飛んだ人:eye:）

### :white_check_mark:手順③～２つ目のフィルターを設定しよう～
次は2つ目のスプレッドシートを使用して電話番号を知るフェーズです。
LINEで以下のテキストのいづれか
<strong>★「氏名」「社員番号」「役職」★</strong>
が入力された場合に対して<strong>該当者の電話番号</strong>を返します。

まずは2つ目のフィルター設定をして分岐させます。
ここでは<strong>「LINEに入力されたテキストが1つ目のスプレッドシートのA列内にはない」</strong>ということをフィルターに入力します。

つまりA列にない文字が入力されたら2つ目のスプレッドシートから探そう！という指令を出すわけです。

![②指し示し.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/b0f759b5-088d-9725-72fd-238ef510d2d9.png)

2つ目のフィルターの中身
![二個目のフィルター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/0daf0775-9134-b5db-cb1f-59b630f271d9.png)

:::note warn
Basic operators: Exists
先ほどはA列同じ場合ということでEqualでしたが今回はA列の値以外の場合なのでExistsになります。
:::

フィルターが設定し終わったら2つ目のスプレッドシートのモジュールを入れます。

### :white_check_mark:手順④～３つ目のフィルターを設定しよう～

続いていよいよ2つ目のスプレッドシートの内容に関してのフィルターを設定します。

![③指し示し.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/512e9143-372f-ef56-656b-b9b145beb340.png)

LINEに入力されたテキストが<strong>「氏名」「社員番号」「役職」</strong>のいづれかの場合ですから
2つ目のスプレッドシートで当てはまるのは<strong>D列（氏名）またはB列（社員番号）またはA列（役職）</strong>ということになります。

3つ目のフィルターの中身
![3つ目のフィルター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/2f53f220-2fdb-8faf-7d06-fe3d387b7e1b.png)

:::note warn
Add OR rule で▲または●という指定になります。
こちらもまた当てはまる場合なのでText Operators: は Equal toです。
:::

### :white_check_mark:手順⑤～LINEモジュールの返答設定②～

手順④で当てはまった場合のLINEモジュールの返答を入力します。

![2つ目のLINE指し示し.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/94a8fc0d-5783-0e3b-db26-c00badaf2231.png)

LINEの中身
![返答③指し示し.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/831c0853-810e-e118-e147-2d5e9fca8568.png)

<strong>Textのところに任意の値を入力します。</strong>
今回はC列（会社スマホ）の電話番号のみ返ってきても味気なかったので
A列（役職）とD列（氏名）も返すように設定しました。

### :white_check_mark:手順⑥～4つ目のフィルターを設定しよう～

いよいよ終わりに近づいてきました！
どちらのスプレッドシートにもない情報がLINEで送られてくる場合もありますよね。そんな時用に分岐を作ります。

手順⑤ではフィルターで<strong>LINEに入力された値が１つ目のスプレッドシートにも、２つ目のスプレッドシートにも当てはまらない</strong>場合を指定します。

４つ目のフィルターを設定します。

![４つ目のフィルター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/f0241372-acca-cfa5-7108-77ca2ee3f2ee.png)

フィルターの中身
![４つ目のフィルター中身.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/ef7a1820-f7af-90d1-b7d7-432bcda4903a.png)

実は手順②と一緒です。

:::note warn
手順②では１つ目のスプレッドシートに当てはまらないという条件でしたが
手順⑤では１つ目のスプレッドシートにも当てはまらない<strong>[且つ]</strong>２つ目のスプレッドシートにもないという条件です。
:::

ここまできたら後は２つのスプレッドシートに当てはまらない場合の最後はLINEの返答を作って完了です。


### :white_check_mark:手順⑦～LINEモジュールの返答設定③～

右下のLINEモジュールの設定をします。

![LINE3つ目指し示し.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/8e295536-61e7-9042-35cd-d977364a56d3.png)

LINEの中身
![3つ目のLINEの中身.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/f0e34365-58f7-4ebe-e85f-80ca83ba7e4b.png)

１つ目のスプレッドシートにも当てはまらない<strong>[且つ]</strong>２つ目のスプレッドシートにもないテキストがLINEで来てしまったら間違ってるよ！と教えてくれます。

## :relaxed:あとがき～反省と今後～

ここからはあとがきです。

反省点と次頑張りたいこととしては

今回はスプレッドシートをつかいましたが本当はHTTPとかJSONとか使いたかったのですが
なかなかうまく組み込めず断念してしまいました。

役職名＆日付のところはエクセルのような数式感が出てしまったので
役職だけ入れれば日付も呼び出して指定した日の予定を出すというようにできたらいいなあと思っております。


さらにこれは自己満ですが使用者に対しておすすめのアーティストや今日の１曲といったようなTMIもしたかったのですがSpotifyさんの認証を突破できずこちらも断念しました。

![Spotify.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/2e330580-8ecd-301e-9ecf-39efaf479f6b.png)
IDやURIもすべて見つけたのに承認されず...また頑張ります。

やりたいと思ってできたこととしてはリッチメニューの導入で
このLINEbotはこういうことができますよというのを使用者に事前知らせることができました。
こちらは[LINE Official Account Manager](https://manager.line.biz/account/@359oyjrw/richmenu)から設定することができます。

![リッチメニュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826220/f9c7b600-5cfa-4d71-074a-867d3f952985.png)

すごく公式LINEぽくなります。:raised_hands:
ここまで読んでいただきありがとうございました。

------------------------------------------------------------------