非認証のLINE公式アカウントでも友だちのユーザーIDを取得する簡単な方法

LINE公式アカウントでは「認証済」アカウントと「非認証」アカウントの2種類があります。

「認証済」アカウントは自社をPRしていく場合には最適ですが、会員制の場合などクローズドな環境で運用したい場合には、あえて「非認証」アカウントのままというパターンもあります。

他にも違いとしては色々あるのですが、何より「非認証アカウント」ではユーザーIDの一括取得ができないのが大きなデメリット。

ですが、一括取得ができないだけで、最初にしっかりと設定をしておけばユーザーIDの取得は可能です!

今回は「非認証」アカウントでLINEユーザーIDを取得する簡単な方法をご紹介します。

目次

LINEユーザーIDとは?

LINE上でそれぞれのアカウントに付されるIDのことで、公式アカウントからのメッセージの送信は、このユーザーIDを指定することで個人を特定してメッセージを送信しています。

LINE IDとは別物で管理画面から確認することができないことが特徴です。

「じゃあどこから確認するの?」となるのですが、メッセージを送ったり、友だち追加された時、LINEサーバーにこれらのイベント情報と共にユーザーの情報も送られています。

このイベント情報を待ち伏せし、サーバーに渡る情報をGoogleスプレッドシートに転記するプログラムを作成すれば、ユーザーIDを取得できるというものです。

法的に問題はないの?

この方法は「LINE公式HP」にも掲載、紹介されている内容です。

こちらの2番目に記載されている「WebhookからユーザーIDを取得する」という方法がこれにあたります。

このブログで紹介している内容は、「ユーザーIDを取得し、自動でスプレッドシートに転記する」だけのものですのでご安心ください。

また、LINEを使用時にほとんどの方が「プロフィール情報の取得」に同意しており、そもそも同意していない方はWebhookにユーザーIDが含まれることはありません。

ユーザーIDの獲得方法

LINE MessagingAPIは利用している前提でご説明します。

Googleスプレッドシートでシートを作成

まずはGoogleスプレッドシートにアクセスして、新しいシートを作成しましょう。

シートは空欄のままで構いません。

必要であれば、1行目のA列に「ユーザー名」、B列に「ユーザーID」とタイトルを入れておきましょう。

GASへコードを書く

スプレッドシートの上部ラベルから「拡張機能」→「Apps Script」を選択。

するとGoogle Apps Scriptが開きます。

以下のコードをGAS(Google Apps Script)のコードとしてそのままコピペします。

const ACCESS_TOKEN = "チャネルアクセストークン";
 
function doPost(e){
  let json = JSON.parse(e.postData.contents);
  let userId = json.events[0].source.userId;
  let groupId = json.events[0].source.groupId;
 
  const spst =  SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("シート名");
  let row = spst.getLastRow();
 
  spst.getRange(row + 1,1).setValue(getUserName(userId));
  spst.getRange(row + 1,2).setValue(userId);
  spst.getRange(row + 1,3).setValue(groupId);
  spst.getDataRange().removeDuplicates([2]);

}
 
function getUserName(userId) {
  const url = "https://api.line.me/v2/bot/profile/" + userId;
  const response = UrlFetchApp.fetch(url, {
              "headers" : {
              "Authorization" : "Bearer " + ACCESS_TOKEN
              }
  });
  return JSON.parse(response.getContentText()).displayName;
}
  • “チャネルアクセストークン”へはLINE Developersコンソールから取得した「チャネルアクセストークン」
  • “スプレッドシートのID”へは先ほどのスプレッドシートのID(なくても問題ないかも)
  • “シート名”にはスプレッドシートのシート名(初期値は「シート1」)

を入れてください。

デプロイ処理

作成したプログラムはWebアプリとして保存、公開するため右上の「デプロイ」→「新規デプロイ」をクリック。

Webアプリを選択して進みますが、ここで注意書きが出てきます。

全て自分が作成したプログラムで、何も問題はないため、そのまま承認します。

Webhook URLとして設定

デプロイが完了したらLINEDevelopersConsoleからWebhookURLとして登録します。

こうすることで、指定した公式アカウントを友だち追加したらユーザーIDが指定のスプレッドシートに保管されるシステムが出来上がります。

ユーザーIDの活用方法

MessagingAPIで個別のユーザーへのメッセージ送信

Messaging APIを使用した場合に、ユーザーIDで指定した人だけにメッセージを送れます。

公式のアカウントマネージャーはチャットをしたことがある人にしか個別のメッセージを送ることはできませんが、この方法ならチャットをしたことがない人にもメッセージが送信できます。

個別のユーザーへFlexMessageの送信

FlexMessageはMessagingAPIを使わないと送れないリッチなメッセージです。

このFlexMessageを友だち全員にではなく、指定した個人へのみ送ることが可能になります。

ユーザーへのタグ付けが容易になり、配信の効率アップ

ユーザーをタグ分けし、オーディエンスを設定することで特定のグループにだけメッセージを送ることができます。

ユーザーIDで分別することで、より確実に必要な方へ必要な情報を配信できます。

ユーザー名から個人を推測できないと意味がないので、この方法は小さな組織・コミュニティにおいて活用できる方法です。

まとめ

この記事では、LINEでユーザーIDを獲得し、効果的に活用する方法を解説しました。

ユーザーIDを上手に活用することでLINEはかなり効率的なコミュニケーションツールになります。

ぜひお試しください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

デスクのカスタマイズを推し進めてます。
家の造作デスクへ素人ながら穴を空け、グロメット式モニターアームを設置して無理やりテレワーク環境を構築。
そこから小さいデスクの可能性を追求するように。
Apple製品・Logicool製品大好き。

コメント

コメントする

CAPTCHA


目次