記事内に広告が含まれています。

ノンプログラマーが作る【GASでLINE構築】公式アカウント⑩ユーザーIDを取得しリスト化

【GAS・LINE】自治会・町内会編

自分で作ろう!プログラミングでLINE構築

こんにちは!

このブログにお越しいただきありがとうございます。管理人のmorrisです。

今回は、ノンプログラマーでも簡単にできる【GASでLINE構築】シリーズの第10回目として、「ユーザーIDを取得しリスト化する方法」をご紹介します。

LINEで友達追加されたタイミングでユーザーIDを取得し、スプレッドシートにユーザーリストを作成します。このブログを通じて、少しでも皆さんのLINE公式アカウント運用がスムーズになることを願っています。

それでは、さっそく始めましょう!

なお、うまく動かない方のために「ココナラ」でサポートをしています。

何故かエラーになる…と詰んでしまったときに気軽にどうぞ。

GASを用いたLINE構築のサポートをします ブログの説明だけではうまくいかない人向け
スポンサーリンク

フォローのタイミングでユーザーIDを取得するスクリプト

ノンプログラマーが作る【GASでLINE構築】公式アカウント⑦自動返信機能を実装しよう基本編で紹介した自動返信.gsのスクリプトのdoPost(e)を、以下のように変更します。

function doPost(e) {
  var event = JSON.parse(e.postData.contents).events[0];

 if(event.type == "follow" || event.follow.isUnblocked ){
    follow(e);
  } 

  if(event.type == "message") {
    if(event.message.type == "text"){
     reply_Message(e); 
    }
  } 
}

具体的には、 if(event.type == “follow” … の3行分を加えただけです。

これで、フォローイベントを取得してくれます。

ちなみに、制作側として動作確認しようとすると、すでにフォローしてしまっていると動作しません。なので、ブロック→ブロック解除時もユーザーIDを取得するように以下の内容を追加しています。

|| event.follow.isUnblocked

不要であればこの部分は削除してくださいね。

スプレッドシートとタブを準備する

ユーザーIDをストアするスプレッドシートに新たにタブを作成します。

サンプルでは、「フォローリスト」のタブ名にしました。

フォローリストタブのA1セルに「userName」B1セルに「userID」を入力します。

ユーザーIDを指定のスプレッドシートにリストアップする

GASに戻り、新たにフォローリスト.gsを作成し、以下をペーストします。

黄色マーカーの部分は、先ほどのスプレッドシートIDとタブ名を入力してくださいね。

function follow(e){
  const event = JSON.parse(e.postData.contents).events[0];// Webhookで取得したJSONデータをオブジェクト化し、取得
  let userId = event.source.userId;

  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);

}

function getUserName(userId) {
  const channel_token =PropertiesService.getScriptProperties().getProperty('LINEb_TOKEN');
  const url = "https://api.line.me/v2/bot/profile/" + userId;
  const response = UrlFetchApp.fetch(url, {
              "headers" : {
              "Authorization" : "Bearer " + channel_token
              }
  });
  return JSON.parse(response.getContentText()).displayName;
}

テスト送信してみよう

公式LINEを一度ブロックし、ブロック解除してみます。

以下のようにユーザー名、ユーザーIDが表示されたらOKです。

まとめ

今回のブログ記事では、ノンプログラマーでも簡単にできる【GASでLINE構築】シリーズの第10回目として、「ユーザーIDを取得しリスト化する方法」を解説しました。

ここからさらに作りこむと、ユーザーへの個別送信やグループ分けしてグループごとのメッセージ送信など、出来る幅が一気に広がります。

GASでLINE構築シリーズ最終回になる次回は、Googleカレンダーの共有と、スプレッドシートからの登録をご紹介します。どうぞお楽しみに!