いつも飲み過ぎちゃうから、LINE Notifyが終了しても注意してくれるようにしたお話。

### この記事で書くこと

いつも飲み過ぎちゃう自分に対して、シラフの自分がしっかり[注意してくれるようにしてみた](https://qiita.com/pilot_fish/items/65d57a7e5227785cd4c7)のですが、[LINE Notify が終了する](https://notify-bot.line.me/closing-announce)ことになったので、別の方法でもっと注意するようにしたお話です。

変化の多い世の中です。
使用しているサービスが終了しても、外的要因に右往左往せずカイゼンを繰り返していくのです。
生涯成長期を目指して、カイゼンしていくための試行錯誤を書きます。
　
### この記事で書かないこと

LINEで注意された結果、どうなったのか？は書きません。
~~そんな注意、アルコールの前では無力だと何度言ったら・・・！~~
成功していたら、カイゼンはしていません。


# 前回の振り返り

## 前回の反省

前回の仕組み化はどうだったのか振り返ってみます。
何事も検証と改善ですよね。

* よかったこと
  * メールでも警告が届く
  * LINEでも警告が届く
* 改善が必要なこと
  * LINE Notify が終了してしまうので、代替手段を用意しなければいけない

## 改善の方向性

* メール＋LINE通知は効果的だったので、LINE通知を継続できるようにしたい
* [LINE Notify提供終了のお知らせ](https://notify-bot.line.me/closing-announce)で書かれているMessaging APIで代替する

# いつも飲み過ぎちゃうから、LINE Notifyが終了しても注意してくれるようにしたお話。

## 準備

### 用意するもの

* Googleカレンダー
* [前回のGAS](https://qiita.com/pilot_fish/items/65d57a7e5227785cd4c7#gas%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%81%97%E3%82%88%E3%81%86)
* LINEアカウント

### 使うもの

* [LINE 公式アカウント](https://entry.line.biz/start/jp/)
* [LINE Developers](https://developers.line.biz/ja/)
* [Messaging API](https://developers.line.biz/ja/docs/messaging-api/overview/)

### 仕組み

LINE Notify を使ってLINE通知していた仕組みを、Messaging APIで代替してみる。

## 実際に作ってみる。

### 公式LINEを作る

こちらを参考にさせていただきました。
[【公式】LINE公式アカウントの作り方｜作成方法や料金プランを紹介](https://www.lycbiz.com/jp/column/line-official-account/technique/20190418-3/)

### Messaging API を準備する

こちらを参考にさせていただきました。
[Messaging APIを始めよう](https://developers.line.biz/ja/docs/messaging-api/getting-started/)


### GASをカスタマイズしよう！

```javascript
function sendAlertMail() {

  // 自分のカレンダー
  const myCalendar = 'jibun_no_mail@example.com';
  
  // カレンダーオブジェクト取得
  const calendarData = CalendarApp.getCalendarById(myCalendar);

  // 今日の日付を取得
  const today = new Date();

  // 今日の予定を配列で取得
  const schedules = calendarData.getEventsForDay(today);

  // メールを送信するかフラグ
  let sendMailFlg = false;

  // LINEの情報
  const accessToken = "ACCESS_TOKEN";
  const userId = "USER_ID";
  const url = "https://api.line.me/v2/bot/message/push";

  // 予定がある場合のみ実行
  if (schedules.length != 0) {

    // 予定の件数だけ実行
    for (schedule in schedules) {

      // 飲み会っぽい文字がある時はメールを送る
      if(schedules[schedule].getTitle().includes('飲') || schedules[schedule].getTitle().includes('🍺') || schedules[schedule].getTitle().includes('🍻') || schedules[schedule].getTitle().includes('会食')){
        sendMailFlg = true;
      }

    }
  }

  // 飲み会がある時はメールを送信する。
  if(sendMailFlg){

    // メール件名
    const subject = '【要注意】本日は飲み会があります。';

    // 送付先メールアドレス
    const address = 'jibun_no_mail@example.com'

    // メール本文テンプレート
    const body = `本日は飲み会があります。

あなたは、過去何回も飲みすぎて失敗しています。

お酒は程々に`;

    // メール送信
    GmailApp.sendEmail(address, subject, body);

    // LINEにも送信
    const payload = {
      to: userId,
      messages: [
        {
          type: "text",
          text: body
        }
      ]
    };

    const options = {
      method: "post",
      headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer " + accessToken
      },
      payload: JSON.stringify(payload)
    };

    try {
      const response = UrlFetchApp.fetch(url, options);
      Logger.log("Response: " + response.getContentText());
    } catch (e) {
      Logger.log("Error: " + e);
    }
  }

}
```


### とりあえず手動で動かしてみた

飲み会の予定がある日は・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394384/465a99c8-15ca-4865-8996-088e79808337.png)



メールが飛んできた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394384/80cd814b-1b27-4bfe-98a9-83ac32611e93.png)



LINEも飛んできた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394384/1885ee04-319e-4b1a-85ac-4896b9bd3148.png)



**できた**

# まとめ

サービス終了前になんとかなりました。