Power AutomateでLINEに通知するフローを作成した話。
今回はLINEグループのグループIDの取得方法を解説。WebhookとGASを使った仕組みと、実際の取得手順を具体例付きでまとめます。
LINE通知で特定のグループに送信する方法を検討
公式アカウントのチャネルアクセストークンを使って公式アカウントからメッセージを送信すると、設定やAPIの使い方によっては、意図しない宛先に送信されてしまう可能性があることが分かりました。
前回の記事でお伝えした通り、公式アカウントは不特定多数の人に友達登録されてしまう可能性があるため、無作為に発言されてしまうのは避けたいところ。
LINEはID指定で宛先を制御可能
LINEのグループにはグループID(1対1のチャットだとユーザーID。以下グループID表記で統一。)が存在し、LINEのMessaging APIではグループIDを指定してメッセージを送信することが可能とのこと。
まずはこのグループIDを特定します。
LINEのグループID取得までの流れ
普段LINEを使っていても、グループIDを見る機会はないですが、Webhookを使えばLINEのグループIDを取得することが可能とのこと。
- グループIDを特定したいグループで発言(公式アカウントではなく自分で送信する)
- Webhook経由でGoogle Apps Scriptにイベントが届く
- そのイベント情報からグループIDを取り出す
- そのIDを公式アカウントの発言としてチャットに送信する
この流れでグループIDを取得していきます。
Google Apps ScriptでIDを返す仕組みを作っていく
手順としては、まずGoogle Apps Script側の設定から始めます。
GoogleスプレッドシートからApps Scriptを作成する

Googleスプレッドシートから
- 「拡張機能」をクリック
- 「Apps Script」をクリック
これで、Googleスプレッドシートに紐づく形でApps Scriptのエディタ画面に入ります。
チャネルアクセストークンの扱い
前回の記事で、LINE Developersから取得したチャネルアクセストークン(長期)が必要になります。
取得したチャネルアクセストークンについては、コードに直接書かず、スクリプトプロパティに保存しておくことを推奨します。

- 「プロジェクトの設定」を押す
- 「スクリプトプロパティを追加」を押す
- 「プロパティ」に任意の値を入力する
- 「値」にチャネルアクセストークン(長期)の値を入力する
- 「スクリプトプロパティを保存」を押す
これでGASの方ではプロパティ(画像の例だとLINE_API_KEY)でチャネルアクセストークンを呼び出せるため、GASのコードにチャネルアクセストークンを記入する必要がなくなります。
後でグループIDも保存できるように先に枠だけ用意します。(画像の例だとLINE_GROUP_ID_GPとLINE_GROUP_ID_USER)
Google Apps Scriptのコードを記述する

- 「エディタ」をクリック
- 「コード.gs」をクリック
ここにコードを記述していきます。
以下のコードは、公式LINEを個人用途で検証するためのサンプルです。
セキュリティ対策(署名検証等)は省略しており、本番環境や公開Botでの利用は推奨しません。
コードは生成AIを用いて作成しており、利用は自己責任でお願いします。
function doPost(e) {
// スクリプトプロパティでLINE_API_KEYにAPIキーを設定
const token = PropertiesService.getScriptProperties().getProperty('LINE_API_KEY');
// LINEからのデータを受け取る
const event = JSON.parse(e.postData.contents).events[0];
let targetId;
// 送信元が「グループ」ならグループIDを、それ以外ならユーザーIDを取得
if (event.source.type === 'group') {
targetId = event.source.groupId;
} else {
targetId = event.source.userId;
}
// 取得したIDをその場所に返信(プッシュ通知)する
const url = 'https://api.line.me/v2/bot/message/push';
const payload = {
'to': targetId,
'messages': [{
'type': 'text',
'text': '宛先IDを特定したやで!\n\n' + targetId + '\n\n↑これをコピーしてメモしてな!'
}]
};
const options = {
'method': 'post',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
},
'payload': JSON.stringify(payload),
'muteHttpExceptions': true // エラー内容をログに残すための魔法の1行
};
UrlFetchApp.fetch(url, options);
}
デプロイを実行してWebhook用のURLを入手する
コードの記述が終わったらデプロイ操作を実行します。
初回のデプロイ操作

- 右上の「デプロイ」をクリック
- 「新しいデプロイ」をクリック

- 種類の選択をクリック
- 「ウェブアプリ」をクリック

- 説明文を任意で入力
- 自分を選択
- 自分のみになっているものを「全員」に変更
- デプロイをクリック

- アクセスを承認をクリック
※※初回は、このGoogle Apps ScriptにGoogleアカウントへのアクセスを許可するか確認されます。
自分で作成したGASで、コード内容と許可する権限を確認できている場合のみ、以下の操作で許可してください。

- Advancedをクリック

- Go to 無題のプロジェクト(unsafe)をクリック(プロジェクト名設定してたら名前が変わります)

- Select allをクリックして、許可する内容にチェックする
※今回のコードでは、スプレッドシート操作と外部サービス接続を使うため、両方の許可が必要です - Continueをクリック

- ウェブアプリの値をコピーして控えておく
- 完了をクリック
これで初回のデプロイ操作は完了。
二回目以降のデプロイ操作
もし何か編集して二回目のデプロイ操作を実行する場合は下記の通りに実行します。

- 右上の「デプロイ」をクリック
- 「デプロイを管理」をクリック


- 「編集」をクリック
- 「新バージョン」を選択
- ウェブアプリのURLをコピーして控えておく
- 次のユーザーとして実行を「自分」に設定
- アクセスできるユーザーを「全員」に設定
- 「デプロイ」をクリック
- 次の画面で「完了」をクリック
これでGoogle Apps Script側の設定は完了。
LINEで実際にグループIDを取得
基本的な準備は終わったのでLINE側で設定の実施と、実際にグループIDを取得します。
LINE DevelopersでWebhookの設定をする
次に、LINE Developersを開きます。
トップ画面から
作成した公式アカウントを選択>Messaging API設定>Webhook設定

- Webhookの利用にチェックを入れる
- 編集ボタンを押して先ほどGASでコピーしたウェブアプリのURLを入力する。
最後に更新ボタンを押して、LINE側の準備完了。
LINEでメッセージを送信してみる
適当にLINE公式アカウントが入っているグループで発言してみました。

すると自動で発言が返ってきて、無事グループIDを取得することができました。
使い分けができたらという想定で、私・公式LINEアカウントのグループIDと、私・夫・公式LINEアカウントのグループIDを取得して、先ほどのGASのスクリプトプロパティに保存しておきます。
これで、実際の確認通知をLINEで受け取る準備ができました。
次回は、Googleスプレッドシートに書き込んだデータをもとに、Google Apps Script(GAS)でLINE通知を送る仕組みの完成まで。



