10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

bot作成の目的

LINE messaging APIを使用してメッセージの送信を行うプロジェクトを開発する中で、グループに対してメッセージを送る場面に遭遇し、その際に必要なgroup idを取得するためにGASを使用してgroup idを返すbotを作成しました。
今回は、こちらの記事を参照して作成を行い、以下のようにgroup idを返すbotを作成しました。
test画像

使用したもの

・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にLINEのアカウントでログインを行い、チャネルを作成します。今回は「groupID取得bot」としてチャネルを作成しました。

スクリーンショット 2024-05-01 17.33.06.png

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

2.GASでgroup idを取得するプロジェクトをデプロイ

group idを返す処理はGASを使用しました。
使用しているgoogle driveから新規>その他>Google Apps Scriptを選択して新しいプロジェクトを作成します。
スクリーンショット 2024-05-01 17.25.36.png
スクリーンショット 2024-05-01 17.25.42.png

GASのプロジェクトが開けたらエディタに以下のコードを添付します。
(このコードはこちらからお借りしました)
この時に、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)
}

コードを添付したらデプロイを行なっていきます。
エディタ右上のデプロイ>新しいデプロイをクリックし今回はウェブアプリとしてデプロイします。
deploy

以下のような画面が表示された場合、アクセスを承認>googleアカウント選択を行います。
deploy

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

caution caution

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

3.LINE messaging APIに上記のurlをwebhookとして登録

LINE developersのmessaing API設定からwebhook設定を行います。
webhook URLには先ほどGASでデプロイしたurlを指定し、webhookの利用をONにします。

caution

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

botを友達追加してテスト

テストを行う前にLINE公式アカウント設定の「グループトークへの参加を許可する」が有効になっているか確認しましょう。
(これが無効になっているとグループへの追加をした後、すぐに退会してしまうようです)
caution

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

test画像

参考

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?