【GAS】特定の場所の天気予報を指定の日まで毎日お知らせしてくれるLineBot（後編）

# はじめに
当記事は`GAS`から`OpenWeatherMap`を用いて、お天気`LineBot`を作成した記事の後編です。
前編→[こちら](https://qiita.com/leafeon00000/items/bf8697c3e7932d4a9045)

後編の内容はそこまでないとはいえ遅くなって申し訳ありませんでした。~~(期待している人なんていない)~~

各所に変なコードの記述や分かりにくい部分があるかもしれませんが、優しくご指摘いただけると幸いです。
また、[GitHub](https://github.com/leafeon00000/GAS-Weather-LINE-Bot)にもコードをあげてみたので万が一物好きな方がいれば見てみてください。

# どういうもの？
こんな感じです。

![IMB_vHcKzO.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/5ba5918b-3079-099c-e478-012287feece1.gif)


簡単に説明すると、
1. 地名を入力する。
2. 入力した地名の住所が表示され、合っているか聞かれる。
3. はいを選択した場合は日付ピッカーが表示され、選択して送信するとスプレッドシートに登録され、現在発表されているその日その地点の天気を教えてくれる。
4. いいえを選択した場合は泣いて許しを請います😭
5. 「確認」と入力すると、現在登録されている日時・地点の天気予報を教えてくれます。
6. 朝7時ぐらいに自動的に現在登録されている日時・地点の天気予報を教えてくれます。

# 作成
作成手順を記します。
大まかな流れは以下の通りです。

|タスク |記事|
|:---|:---|
|①各種APIキーを集める。| [前編](https://qiita.com/leafeon00000/items/bf8697c3e7932d4a9045) |
|②めっちゃコード書く。| [前編](https://qiita.com/leafeon00000/items/bf8697c3e7932d4a9045) |
|③LINE Developersに登録する。| 後編 |
|④定期作業のトリガーを設定する。| 後編 |

## ③LINE Developersに登録する。
前回、大量に書いたコードを`LINE Developers`に登録する必要がありますが、その前にちゃんとLINEと連携できるかを確認します。

LINE　アクセストークンを取得した際に表示されるQRコードを読み取って、あらかじめ友達登録をしておきます。
![スクリーンショット 2021-09-21 17.10.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/cbbc73b3-769c-79f9-3e2c-d79743202143.png)
`test.gs`に以下のコードを書いてみます。

```javascript:test.gs
// LINE Message API アクセストークン
let ACCESS_TOKEN_TEST = "[前回の①各種APIキー集める。で取得したLINEのアクセストークン]";

function test() {

  try{
    UrlFetchApp.fetch("https://api.line.me/v2/bot/message/broadcast", {
    
      method: "post",
      headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer " + ACCESS_TOKEN_TEST,
      },
      payload: JSON.stringify({
        messages: [
          {
              type: 'text',
              text: 'メッセージテスト'
          },
        ]
      }),
    });
  } catch (e) {
    logger(e);
  };
}
```


スクリプトエディタの実行ボタンを押下します。
![スクリーンショット 2021-10-25 1.09.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/22a08e29-5c94-5a20-97f0-cb174b8eefa6.png)

LINEに以下のちゃんとメッセージが送られることを確認します。
![IMG_7558.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/aaecc11b-63f6-e358-f6fa-5757fd562692.jpeg)

確認がとれたら、`デプロイ`から`新しいデプロイ`を押下します。
![スクリーンショット 2021-10-25 1.14.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/86e05449-193b-e6ca-bbb1-20be7b7816c1.png)

特に何も変更せず`デプロイ`ボタンを押下します。
![スクリーンショット 2021-10-25 1.15.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/2c990118-a8a8-4b17-b02d-ce94e2d0eb61.png)

`ウェブアプリ`の`コピー`ボタンを押下します。
![スクリーンショット 2021-10-25 1.16.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/47553f71-8e83-888c-ba0f-56baa890465a.png)

`LINE Developers`の`Messaging API設定`を押下し、`Webhook設定`の`Webhook URL`に先ほどコピーしたURLを貼り付けます。
![スクリーンショット 2021-09-22 0.32.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/4d153d3d-794c-1315-f08f-3ca489b5dce9.png)

その後表示される`検証`ボタンできちんとURLが生きているか調べることもできます。

動作を確認してみます。

![IMG_7562.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/288adbcb-769f-a5fd-0ac1-f302d4f98276.png)

![IMG_7563.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/7d860a30-dae1-835a-d42d-2f6f7d234ee1.png)

きちんと登録されましたね！！

LINEに発言するたびに余計な返信がある場合は`Messaging API設定`→`応答メッセージ`→`編集`→`応答設定`→`詳細設定`→`応答メッセージ設定`からステータスをオフにすれば余計な返答が無くなります。
![スクリーンショット 2021-10-25 2.01.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/01bcb443-56bf-7460-c7f3-708599a4626f.png)


これで`LINE Developers`への登録方法は終了です。

## ④定期作業のトリガーを設定する。
スクリプトエディタの左側の`トリガー（目覚まし時計マーク）`を押下し、`トリガーを追加`ボタンを押下します。
すでに一つトリガーを設定したものがありますが、気にしないでください。
![スクリーンショット 2021-10-25 1.25.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/89df5c7e-a034-6124-9767-241a72cc4e68.png)

以下のように登録します。

|項目 |値|
|:---|:---|
|実行する関数を選択|regularWork|
|イベントのソースを選択|時間主導型|
|時間ベースのトリガーのタイプを選択|日付ベースのタイマー|
|時刻を選択|お好きな時間を|

![スクリーンショット 2021-10-25 1.29.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/a05f8f95-92a4-743d-c7d1-d6ed101a01de.png)

* `実行する関数`は`reglarWork`を定期的に実行したいので設定します。
* 時刻を選択`はだいたい下限ギリギリの時間にきます。

`保存`ボタンを押せば完成です！
![IMG_7560.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/dbee72c4-88c4-7a51-7798-16b5bdda68d7.png)
毎朝8時前にモーニング天気予報をしてくれます！
（写真は名前が微妙に違いますが、同じ機能のものです。説明用に一から作ったものを今まで写真で示しています。）

# 後編　おわりに
色々と時間が取れずに後編の執筆が滞り申し訳ありませんでした。
初めて本格的なLINE Botを作れてとりあえず満足しています。
特に苦労したところはLINE Botの設定等ではなく、日本標準時やUNIX時間や世界標準時…時間の変換の作業でした。
コードがおかしかったりもっとこうした方がいいよ！等ありましたらご指摘していただくと幸いです。
長々と見てくださりありがとうございました。

# 便利だったサイトやアドオン等

* [Talend API Tester](https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm)
    * APIを整形してくれたり、パラメーターやJSONデータを見やすく表示してくれたりする神すぎるアドオン 
* [JSON Formatter](https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa?hl=ja)
    * Chrome上に表示されたJSONデータを見やすく表示してくれるアドオン。
* [UNIX時間変換ツール](https://tools.m-bsys.com/development_tooles/unix_time.php)
    * UNIX時間と人間が分かる時間を相互に変換してくれるサイト。
* [Google Apps Script GitHub アシスタント](https://chrome.google.com/webstore/detail/google-apps-script-github/lfjcgcmkmjjlieihflfhjopckgpelofo?hl=ja)
    * GASに書いたコードをGitHuｂと連携してくれるアドオン。
* [GASのスクリプトプロパティをコードで設定する方法](https://auto-worker.com/blog/?p=2365)
    * プロパティストアの設定方法はこちらに詳しく書かれています。
* [いらすとや](https://www.irasutoya.com/)
    * 皆さんご存知いらすとや。適当なLINEBotのアイコン作成するときにお借りしました。