[GAS, Messaging API] LINE BOTをGASで作成する方法

## はじめに
LINE BOTを作成するにはLINEが提供しているLINE Messaging APIを使用する必要があります。
このMessaging APIを使用することにより、定期的にメッセージを送信したり、メッセージに対してBOTが返信したりすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/7a70de66-687a-eadc-67b1-de5c3f65fef7.png)

## LINE BOTを作成する下準備
### LINE DevelopersにてMessaging APIチャネルを作成する
以下のリンクからLINE Developersにアクセスしてください。
https://developers.line.biz/ja/

![スクリーンショット 2023-04-09 15.32.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/1934b8e2-2cb7-bbd5-6c01-64d95d9a6ccf.png)
右上の赤く囲まれている部分(ログインボタン)をクリックし、LINEアカウントかビジネスアカウントのいずれかでログインします。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/56eb4494-7a67-75aa-b380-66e2cdabe7cf.png)
その後新規プロバイダー作成を押し、任意のプロバイダー名を入力する。
![スクリーンショット 2023-04-09 15.40.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/810f615d-6eb2-7774-7efc-2df1b0248d37.png)
チャネル設定が表示されたらMessaging APIを選択する。
![スクリーンショット 2023-04-09 16.18.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/7de1f050-e9cb-1c54-9c35-969e57329937.png)
チャネル名やチャネル説明を適宜入力する。(チャネル名はLINEに表示されるBOTの名前)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/633676a4-7648-0cf6-6973-06e406cbb466.png)
情報利用に関する同意についての同意をする。
以上でチャネルの作成が完了しました。
その後Messaging API設定を開く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/abe63f41-49de-24d0-0dd7-5784f5dac904.png)
応答メッセージの編集ボタンをクリックをすると、LINE Official Account Managerに遷移する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/d9151001-4599-fa42-fac8-bca26c918833.png)
そして以下のように設定する。

![スクリーンショット 2023-04-09 16.30.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/1d818d9d-a997-123a-0c41-7aa06a9267ab.png)

LINE DevelopersのLINE Messaging API設定に戻り、一番下のチャネルアクセストークンをメモしておく。

## BOTの動作内容をGASでかく
Google Spread Sheetを開き新しくシートを作成する。(Google Driveからでも可能)
拡張機能からApps Scriptを選び、クリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/fb0b45e0-29d5-f5ef-286d-d41c7fb20dd2.png)

以下のような画面が表示される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/4cf37d86-f36c-9da2-1cef-d301a2de7339.png)

そこに以下のコードを書き込む

```
const ACCESS_TOKEN = 'メモしたアクセストークンをここに書く';
const REPLY_URL = 'https://api.line.me/v2/bot/message/reply';

function doPost(e) {
  var json = JSON.parse(e.postData.contents);
  var replytoken= json.events[0].replyToken;
  if (typeof replytoken === 'undefined') {
    return;
  }
  var message = json.events[0].message.text;

  UrlFetchApp.fetch(REPLY_URL, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replytoken,
      'messages': [{
        'type': 'text',
        'text': 'こんにちは',
      }],
    }),
  });
  return ContentService.createTextOutput(
    JSON.stringify({'content': 'post ok'})
  ).setMimeType(ContentService.MimeType.JSON);
}
```

ACCESS_TOKENには先ほどLINE Developersでメモしておいたアクセストークンを記入する。
その後デプロイのボタンをクリックし、新しいデプロイを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/99d675c9-62a0-c58d-d682-8cb337e09b67.png)

種類の選択にて「webアプリ」を選択し、アクセスできるユーザーを全員にする。
![スクリーンショット 2023-04-09 16.45.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/1dd86544-b10e-646c-fa66-31fe371bec8c.png)

その後デプロイを選択し、アクセスを承認する。
デプロイが完了したらwebアプリのURLをコピーする。

先ほどコピーしたURLをWebhook URLにペーストし、Webhookの利用をONにする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/91c502bb-9b63-24dc-ed92-5bd2c2fc523e.png)

その後、更新を押し、検証
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651685/1ba8621e-2663-c67c-b7cc-d128bb2d6cc3.png)
を押し、成功と表示されたら完了です。

Botにメッセージを送るとおはようと返ってきます。