プログラム

【LINE・GAS】グループトークにメッセージを送信するための苦行

2025年6月12日

当サイトはアフィリエイト広告による収入を得ています

グループトークでGASを用いてメッセージを送信する際、以下の2つの値が必要となります。

・メッセージを送信したいLINEのグループID
・チャネルアクセストークン(長期)

前回の記事で、"チャネルアクセストークン(長期)"は取得できるようになりました。

今回はこのうちの"メッセージを送信したいLINEのグループID"を取得したいと思います。
ただ、その方法を私は知りません。
そこでChatGPTに聞いてみると、Webhookイベントを受信するとグループLINEのIDが分かるとのことです。

なんグラマ
なんグラマ

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

Webhookとは

LINEログインのAPIの仕組み

突然webhookと言われても分かりません。もう一度ChatGPTに聞いてみると、「メッセージ送信などのイベントがあったときに、自分のサーバ宛に通知をする仕組み」とのことです。そして、この通知の中にLINEのグループIDが入っているそうです。

LINEのグループIDを取得する方法を考える

さて、このwebhookイベントですが主に以下のイベントの時にLINEのグループIDを取得できるようです。

イベントtype説明
参加イベントjoinLINE公式アカウントが、グループトークに参加した時に起きるイベント。
退出イベントleaveLINE公式アカウントがグループトークから退出した時に起きるイベント。
メッセージ送信イベントmessageグループトークでユーザがメッセージを送信した時に起きるイベント。

LINEのグループIDを取得するのは最初の一回だけでよいので、参加イベントの時に取得するようにします。

参加イベントの中身

参加イベントの中身

【実装】コードを書く

準備をする

①自分のGoogleドライブを開く
②任意の場所にスプレッドシートを作成する

Googleドライブの画像

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

スプレッドシートの画像

コードを書く

以下のコードを張り付けて、スプレッドシートのIDを記述してください。

スプレッドシートのIDは、スプレッドシートのURLの'd/'と'/edit'の間にある文字列です

スプレッドシートのIDを取得
// スプレッドシート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」を押す

app画面

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

app画面

E. 「Allow」を押す

アクセス権設定画面

④Web app URLをコピーする

Web app URL画面

設定をする

Webhookの設定

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

チャネル選択画面

③"Messaging API設定"を押す

チャネル管理画面

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

messaging API設定画面

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

messaging API設定画面

公式LINEアカウントの設定

LINE Official Account Managerにログインする
②「設定」を押す

LINE Official Account Manager管理画面

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

LINE Official Account Manager管理画面

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

LINE Official Account Manager管理画面

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

LINE Official Account Manager管理画面

グループIDを取得する

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

スプレッドシートの画像

【まとめ】やることが多すぎ

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

おすすめ記事

ブログ 雑談

2025/8/2

僕の経歴とブログを始めた経緯

このブログを運営している"なんグラマ"といいます。「なんちゃってプログラマ」の略です。 本業は接客業をしていて、日々お客様と接しています。接客業も好きでこの仕事をしているのですが、他にもいくつか好きなこと(モノ)があります。 それは、 プログラミング ガジェット スイーツ です。 当ブログでは、この3つのジャンルを中心に投稿しています。この投稿では、自己紹介として私の人生の一部を話す中で、ブログを始めた理由も話していきます。 【幼稚園~中学時代】将来の夢は列車の運転士だった 幼稚園くらいの頃から列車が好き ...

オーディオ

2025/7/12

【WH-1000XM6】人生初のヘッドホン購入

自宅でパソコンを触るときはよくワイヤレスイヤホンで作業用のBGMを流しています。ただ、イヤホンは長時間つけっぱなしにすると耳が痛くなってきます。なので、耳の痛くなりにくいヘッドホンが欲しいと思い、ヘッドホン探しをしていたのです。ちょうどその時、SONYのWH-1000XM6が発表されました。価格は約6万円と高めですが、思い切って奮発しました。 いざ、開封 箱を開けると、ケースと取り扱い説明書がでてきました。ケースを開けると、 ヘッドホン本体とケーブルが出てきました。ヘッドホンはブラックを選択しました。高級 ...

オーディオ

2025/7/23

【Soundcore Liberty 5】1.5万円の最高イヤホン

安くて高性能と話題になっていたSoundCore Liberty 4の後継機がついに発売されました。しばらくイヤホンを買っていなかったので、これを機に買ってみることにしました。 Anker Soundcore Liberty 5 posted with カエレバ 楽天市場 Amazon Soundcore Liberty 5のスペック 詳細なスペック 詳細なスペックは下記です。「これだけの機能があって、この値段でいいの!?」という具合です。 Soundcore Liberty 5Soundcore Lib ...

プログラム

2025/7/28

【LINE】GASでシフト希望の募集を自動化する(無料)

接客業で働き始めて早3年。3年経ったということで、最近はバイトの方のシフト管理を任せられることになりました。シフト管理をすることで見えてきた改善できそうなことに対して今回は取り組んでいきたいと思います。 こんな方におすすめの記事 お金をかけずにシフト募集を自動化したい方 GASを勉強したい方 現在の実態と目標 現在はバイトの方とのグループLINEで週一回シフト希望を聞いて、回答をもとにシフトを考え共有しています。しかし、これは時間の無駄でかつめんどくさいんです。なので、これらの作業を自動化していきたいと思 ...

スマホ

2025/7/12

【Galaxy S25 Ultraレビュー】すべてが最高峰。でも高い

私はスマホにはストレスのない最高のものを使いたいと思っています。なぜなら、毎日触れるから。今までGalaxy Z Fold5を使っていて、大きな不満はなかったのですがカメラだけはいまいち使い勝手がよくないなと思っていました。(十分綺麗なのに)そしてこの、Galaxy Z Fold5はドコモのいつでもカエドキプログラムで借りていて、9月に返却しないといけません。どうせ9月には新しい端末を購入するから「予約特典のある早いうちに買った方がいいじゃね?」と思って買ったGalaxy S25 Ultraのレビューをし ...

ガジェット

2025/7/12

【便利。だけど高い】NFCボタン搭載のPITAKAのスマホケース

突然ですが、今までGalaxy S25 Ultraで使っていたスマホケースがこれです ↓ このケースは前面は保護されていますが、カメラ部分が全然保護されない。。という不満を持っていました。20万も出して買ったスマホのレンズに傷がついたらかなりショックだなと思っていた矢先、InstagramでPITAKAのスマホケースの広告が流れてきました。 カメラ部分もしっかり保護してあります。そして、何やら左側面の3つのボタンにショートカットを割り当てられるそうです。任意のアプリが割り当てられそうで、「絶対便利じゃん! ...

  • この記事を書いた人

なんグラマ

福岡県在住の23歳。高校を卒業後2年くらいシステムエンジニアをして、接客業に転職。プログラムを書くことが今でも好きで、ChatGPTなどを活用して仕事やプライベートを楽する方法を探しています。ガジェット、甘い食べ物が大好き。

こんな記事もいかがですか?

1

自宅でパソコンを触るときはよくワイヤレスイヤホンで作業用のBGMを流しています。ただ、イヤホンは長時間つけっぱなしにすると耳が痛くなってきます。なので、耳の痛くなりにくいヘッドホンが欲しいと思い、ヘッ ...

2

安くて高性能と話題になっていたSoundCore Liberty 4の後継機がついに発売されました。しばらくイヤホンを買っていなかったので、これを機に買ってみることにしました。 Anker Sound ...

3

私はスマホにはストレスのない最高のものを使いたいと思っています。なぜなら、毎日触れるから。今までGalaxy Z Fold5を使っていて、大きな不満はなかったのですがカメラだけはいまいち使い勝手がよく ...

-プログラム
-, ,