【GAS】LINEのgroupIDを返してくれるbot

## bot作成の目的
LINE messaging APIを使用してメッセージの送信を行うプロジェクトを開発する中で、グループに対してメッセージを送る場面に遭遇し、その際に必要なgroup idを取得するためにGASを使用してgroup idを返すbotを作成しました。
今回は、[こちら](https://qiita.com/hajimejimejime/items/5435fe1535b055d7e34d)の記事を参照して作成を行い、以下のようにgroup idを返すbotを作成しました。
<img width="400" alt="test画像" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/5a74e189-40ca-61af-8ed0-adfe9988085b.png">

## 使用したもの
・Google Apps Script(GAS)
・LINE messaging API

## 作成の流れ
1.LINE messaging APIでチャネルの作成
2.GASでgroup idを取得するプロジェクトをデプロイ
3.LINE messaging APIに上記のurlをwebhookとして登録
4.botを友達追加してテスト

## 実際にやってみる
### 1.LINE messaging APIでチャネルの作成
[LINE Developers](https://developers.line.biz/ja/services/messaging-api/)にLINEのアカウントでログインを行い、チャネルを作成します。今回は「groupID取得bot」としてチャネルを作成しました。

![スクリーンショット 2024-05-01 17.33.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/745d2158-85fb-0be7-b9a9-767506ee24c7.png)

作成したチェネルをクリックし、Messaging API設定からチャネルアクセストークンを取得します。（こちらは後で使用します）


### 2.GASでgroup idを取得するプロジェクトをデプロイ
group idを返す処理はGASを使用しました。
使用しているgoogle driveから新規>その他>Google Apps Scriptを選択して新しいプロジェクトを作成します。
![スクリーンショット 2024-05-01 17.25.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/b573a7fc-7124-e415-1436-947cf9f44879.png)
![スクリーンショット 2024-05-01 17.25.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/d13eb4ba-a54c-4a3b-83ee-3dfd1916ce21.png)

GASのプロジェクトが開けたらエディタに以下のコードを添付します。
(このコードは[こちら](https://qiita.com/hajimejimejime/items/5435fe1535b055d7e34d)からお借りしました）
この時に、```ACCESS_TOKEN``` は先ほどLINE messaing API設定にて取得した```チャネルアクセストークン```です。

```
// LINE developers記載のアクセストークン
var ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

function doPost(e) {
  // ----- 送られてきた値をパース -----
  var event = JSON.parse(e.postData.contents).events[0];

  // 応答用Token
  var replyToken = event.replyToken;

  // typeを取得 
  var type = event.source.type;

  // typeを判定して、idを取得
  if (type == 'user') {
    var id = event.source.userId;
  } else if (type == 'group') {
    var id = event.source.groupId;
  } else if (type == 'room') {
    var id = event.source.roomId;
  }

  // ----- メッセージ送信用パラメータ設定 -----
  var url = 'https://api.line.me/v2/bot/message/reply';

  var payload = {
    'replyToken': replyToken,
    'messages': [
      {
        'type': 'text',
        'text': type + '_id = '+ id
      }
    ]
  };

  var options = {
    'method': 'post',
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + ACCESS_TOKEN,
    },
    'payload' : JSON.stringify(payload)
  };

  // ----- lineメッセージ送信 -----
  UrlFetchApp.fetch(url, options)
}
```
コードを添付したらデプロイを行なっていきます。
エディタ右上のデプロイ>新しいデプロイをクリックし今回はウェブアプリとしてデプロイします。
<img width="400" alt="deploy" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/0b307d80-5cf8-8fa9-91d2-9fde3f908ca2.png">

以下のような画面が表示された場合、アクセスを承認>googleアカウント選択を行います。
<img width="400" alt="deploy" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/0442b1c4-291a-b01d-019c-67033422106a.png">

次に```Advanced```を選択し、画面左下のプロジェクト名をクリックします。

<img width="400" alt="caution" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/d71d3cdd-3236-285d-d010-647c8624bf60.png">
<img width="400" alt="caution" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/9d1643c5-1c94-c027-ce09-53d71281baf8.png">

遷移後の画面で```Allow```を選択するとデプロイが始まりurlが払い出されます。


## 3.LINE messaging APIに上記のurlをwebhookとして登録
LINE developersのmessaing API設定からwebhook設定を行います。
webhook URLには先ほどGASでデプロイしたurlを指定し、webhookの利用をONにします。

<img width="400" alt="caution" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/9851e78a-37b6-f4d1-c586-106c920a740d.png">

検証をクリックし、200番の成功が帰ってきていればOKです。

## botを友達追加してテスト
テストを行う前にLINE公式アカウント設定の「グループトークへの参加を許可する」が有効になっているか確認しましょう。
（これが無効になっているとグループへの追加をした後、すぐに退会してしまうようです）
<img width="400" alt="caution" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/e3b3e8e0-14a9-b63e-0629-386c736f8a73.png">


ここまでできたら、messaing API設定のQRコードを読み取り、botを友達追加>グループに招待します。
グループに対してメッセージを送ると以下のようにgroup idが帰って来ます。

<img width="400" alt="test画像" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552209/5a74e189-40ca-61af-8ed0-adfe9988085b.png">


## 参考
https://qiita.com/hajimejimejime/items/5435fe1535b055d7e34d