自分で作ろう!プログラミングでLINE構築
こんにちは!
このブログにお越しいただきありがとうございます。管理人のmorrisです。
今回は、ノンプログラマーでも簡単にできる【GASでLINE構築】シリーズの第10回目として、「ユーザーIDを取得しリスト化する方法」をご紹介します。
LINEで友達追加されたタイミングでユーザーIDを取得し、スプレッドシートにユーザーリストを作成します。このブログを通じて、少しでも皆さんの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カレンダーの共有と、スプレッドシートからの登録をご紹介します。どうぞお楽しみに!