LoginSignup
2
1

LINE WORKSが友だちになったLINEユーザを可視化/一覧化したい

Posted at

LINE WORKSが友だちになったLINEユーザを可視化/一覧化したい

LINE WORKSの標準機能では出来ないあれやこれやを、
LINE WORKS API 2.0 x GASを使ってサクッと解決するシリーズ

今回は、外部LINE/LINE WORKS友だち可視化です。

LINE WORKSが友だちになった外部LINE/LINE WORKSユーザの連絡先情報はアドレス帳に登録され、管理者は管理画面から全連絡先を確認できます。
が、全データを一画面で表示したり、メンバーごとの連絡先をソートしたり、CSVデータとして出力したりする事はできません。

そこで、LINE WORKS API2.0 x GAS を使って、アドレス帳上にあるLINE友だち情報を取得し、Google Sheet 上に表示します。

実行イメージ

「連絡先データ」シートに全メンバーの外部LINE/LINEWORKSの連絡先を出力します
image_20240306_21.33.31.png

また、「統計」シートには、各メンバーごとの連絡先レコード数のカウントを表示するようにしました。

image_20240306_21.32.02.png

GASのスクリプトは手動実行もしくは毎時/毎日 など任意でスケジュール(トリガー)を設定し定期実行することもできます。

必要なもの

事前準備

1. LINE WORKS Developersから認証情報をコピー

LINE WORKS Developers へアクセスして、アプリを新規追加します
image.png

「アプリの説明」に任意のテキストを入力します
Client ID」をコピーしてメモしておきます
Client Secret」をコピーしてメモしておきます
「Redirect URL」に任意のURLを入力します
Domain ID」をコピーしてメモしておきます

image.png

OAuth Scopes」の管理にて、Scopeから「contact.read」と「user.read」を選択して保存します。

image.png

Service Account」をコピーします
Private Key」の発行ボタンを押してkeyファイルをダウンロードします

image.png

2. GASの設定

Google Sheetのテンプレートをコピーします
https://docs.google.com/spreadsheets/d/1EVlihLWg8KcilaJIHCuFc9V8_mWNNIponsHDqNkS5xg/copy#gid=524876154

シート「jwtGenerator」を開き、

image.png

「事前設定」のフィールドに先ほどコピーした

  • Client ID
  • Client Secret
  • Service Account
  • Private Keyのファイル名 (「private_2023xxxxxxxx.key」というような名称)
  • OAuth Scopesはそのまま
  • Domain ID
    を、それぞれ入力します

Private KeyファイルをDriveにアップロードする

つぎに、先ほどLINE WORKS Developers Consoleからダウンロードした
Private Keyファイルを、「LINE WORKS連絡先取得ツール」Google Sheetと同じGoogle Driveのロケーションに配置します。

ロケーションへの移動の仕方は以下

image.png

ドラッグ&ドロップで.keyファイルをアップロード

image.png

3. token発行のテスト

jwtGeneratorシートにもどり、
「トークンを発行」ボタンを押します

image_20240306_22.23.07.png

Access Token と Refresh Tokenに何やら文字列が表示されたら、テスト成功
LINE WORKS連絡先取得ツールの準備完了です。

文字列がなにも表示されない場合は、
手順を最初から見直してみてください。

連絡先を取得してみる

1. 手動で実行する

毎月1日にプログラムが定期実行されるように、
GASのトリガーを設定していきます。

Googleシートの「拡張機能」メニューから「Apps Script」を開きます
image.png

ファイル:getContact.gs を選択して、fetchAndProcessContacts実行してみてください。
スクリーンショット 2024-03-06 222609.png

処理が完了したら、Google Sheetに戻り、データが取得できている事を確認します
エラーが発生している場合は、もう一度手順を見直してください。

2. 定期実行を設定する

左側のメニューアイコンから、トリガーを選択します

image.png

画面右下のほうにある「+トリガーを追加」をクリックします
image.png

例として毎日夜間に1回最新の情報を取りに行く場合は、以下のとおりトリガーを設定します
タイミングは任意で設定してください

・LINE WORKSのAPIにはRateLimit(分間実行制限)があります。最短でも1時間に1回くらいを目安にしてください。

・毎回データをクリアして上書きする仕様です。

・GASのスクリプト処理時間は最大6分間です。データ量が多く6分間で完了できない場合は、分割処理するなどスクリプトの改修が必要です。

 実行する関数を選択:fetchAndProcessContacts
 実行するデプロイを選択:Head
 イベントのソースを選択:時間主導型
 時間ベースのトリガータイプを選択:日付ベースのタイマー
 時刻を選択:午前0時~1時
 エラー通知:任意

image.png

以上で設定完了です。

動作確認

実行結果ログシートに結果が記録されます

image.png

またはApps Scriptの画面左の「実行数」メニューを開きます
ここで定期実行のスクリプトが完了しているか、失敗しているか確認できます。

スクリーンショット 2024-03-06 223739.png

以上です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1