グループトークでGASを用いてメッセージを送信する際、以下の2つの値が必要となります。
・メッセージを送信したいLINEのグループID
・チャネルアクセストークン(長期)
前回の記事で、"チャネルアクセストークン(長期)"は取得できるようになりました。
-
-
【LINE】GASを使って自分にメッセージを送信する
2025/7/12 GAS, LINE, MessagingAPI
今回はこのうちの"メッセージを送信したいLINEのグループID"を取得したいと思います。
ただ、その方法を私は知りません。
そこでChatGPTに聞いてみると、Webhookイベントを受信するとグループLINEのIDが分かるとのことです。

"なんちゃってプログラマ"の略でなんグラマです。プログラムを書いたり、ガジェットを紹介したりします。
・お問い合わせ
・プライバシーポリシー
Webhookとは

突然webhookと言われても分かりません。もう一度ChatGPTに聞いてみると、「メッセージ送信などのイベントがあったときに、自分のサーバ宛に通知をする仕組み」とのことです。そして、この通知の中にLINEのグループIDが入っているそうです。
LINEのグループIDを取得する方法を考える
さて、このwebhookイベントですが主に以下のイベントの時にLINEのグループIDを取得できるようです。
イベント | type | 説明 |
---|---|---|
参加イベント | join | LINE公式アカウントが、グループトークに参加した時に起きるイベント。 |
退出イベント | leave | LINE公式アカウントがグループトークから退出した時に起きるイベント。 |
メッセージ送信イベント | message | グループトークでユーザがメッセージを送信した時に起きるイベント。 |
LINEのグループIDを取得するのは最初の一回だけでよいので、参加イベントの時に取得するようにします。
参加イベントの中身

【実装】コードを書く
準備をする
①自分のGoogleドライブを開く
②任意の場所にスプレッドシートを作成する

③"Extenisions"(拡張機能)→"Apps Script"の順にクリックする

コードを書く
以下のコードを張り付けて、スプレッドシートのIDを記述してください。
スプレッドシートのIDは、スプレッドシートのURLの'd/'と'/edit'の間にある文字列です

// スプレッドシートID
const SPREADSHEET_ID = 'スプレッドシートID';
function doPost(e) {
try {
// JSONオブジェクトに変換
var events = JSON.parse(e.postData.contents).events;
} catch (errror) {
return ContentService.createTextOutput(JSON.stringify({ content: 'invalid JSON', message: err.message })).setMimeType(ContentService.MimeType.JSON);
}
// events配列のチェック
if (!events || events.length === 0) {
return ContentService.createTextOutput(JSON.stringify({ 'content': 'no events' })).setMimeType(ContentService.MimeType.JSON);
}
// イベントデータを取得
var event = events[0];
Logger.log("event.type: " + event.type);
// 参加イベントでかつグループトークであるとき
if (event.type == 'join' && event.source.type == 'group') {
// グループIDを取得
var groupId = event.source.groupId;
Logger.log("受信したグループ ID: " + groupId);
// スプレッドシートを取得
const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow === 0) {
// スプレッドシートが空の場合、初回の記録
sheet.appendRow(["Date", "GroupID"]); // ヘッダー行を追加
sheet.appendRow([new Date(), groupId]); // 初回データを追加
} else {
// スプレッドシート内の全グループIDを取得して重複確認
const data = sheet.getRange(2, 2, lastRow - 1).getValues().flat();
if (data.includes(groupId)) {
return ContentService.createTextOutput(JSON.stringify({ 'content': 'already recorded' })).setMimeType(ContentService.MimeType.JSON);
}
// 新しいグループ ID を記録
sheet.appendRow([new Date(), groupId]);
}
}
return ContentService.createTextOutput(JSON.stringify({ 'content': 'post ok' })).setMimeType(ContentService.MimeType.JSON);
}
デプロイする
①「Deploy」→「New deployment」の順にクリック

②設定アイコンを押し、「Web app」を押す

②アクセス権を"Anyont"(全員)にして、「Deploy」を押す

③アクセス権の承認をする
▼詳細
A.「Authorize access」を押す

B.自分のアカウントを選択

C.「Advanced」を押す

D.「Go to Unlitled project(unsafe)」を押す

E. 「Allow」を押す

④Web app URLをコピーする

設定をする
Webhookの設定
①LINE Developersにアクセスする
②作成した公式LINEアカウント名の個所を選択する

③"Messaging API設定"を押す

④先ほどコピーしたWebHookのURLを張り付けて、「更新」を押す

⑤「Webhookの利用」をONにする

公式LINEアカウントの設定
①LINE Official Account Managerにログインする
②「設定」を押す

③"アカウント設定"から「グループ・複数人トークへの参加を許可する」を押す

④"応答設定"から「応答メッセージ」の設定をOFFにする

⑤"Messaging API"でMessaging APIが有効になっているか確認する。
以下の画面になっていればOK

グループIDを取得する
グループトークに公式アカウントを招待したのち、作成したスプレッドシートを確認してください。すると、2行目にグループIDが記述されています。これが、さきほど公式アカウントを追加したグループトークのグループIDです。

【まとめ】やることが多すぎ
グループトークにメッセージを送るための準備でこれだけの作業数をする必要があるのはなかなかの苦行です。
ただ、準備は終わったので次はいよいよグループトークでメッセージを送信していきます。