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の連絡先を出力します
また、「統計」シートには、各メンバーごとの連絡先レコード数のカウントを表示するようにしました。
GASのスクリプトは手動実行もしくは毎時/毎日 など任意でスケジュール(トリガー)を設定し定期実行することもできます。
必要なもの
- Googleアカウント(無償でもOK)
- LINE WORKS Developers Consoleへのアクセス権限を持つID
- LINE WORKS 連絡先取得ツール
事前準備
1. LINE WORKS Developersから認証情報をコピー
LINE WORKS Developers へアクセスして、アプリを新規追加します
「アプリの説明」に任意のテキストを入力します
「Client ID」をコピーしてメモしておきます
「Client Secret」をコピーしてメモしておきます
「Redirect URL」に任意のURLを入力します
「Domain ID」をコピーしてメモしておきます
「OAuth Scopes」の管理にて、Scopeから「contact.read」と「user.read」を選択して保存します。
「Service Account」をコピーします
「Private Key」の発行ボタンを押してkeyファイルをダウンロードします
2. GASの設定
Google Sheetのテンプレートをコピーします
https://docs.google.com/spreadsheets/d/1EVlihLWg8KcilaJIHCuFc9V8_mWNNIponsHDqNkS5xg/copy#gid=524876154
シート「jwtGenerator」を開き、
「事前設定」のフィールドに先ほどコピーした
- 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のロケーションに配置します。
ロケーションへの移動の仕方は以下
ドラッグ&ドロップで.keyファイルをアップロード
3. token発行のテスト
jwtGeneratorシートにもどり、
「トークンを発行」ボタンを押します
Access Token と Refresh Tokenに何やら文字列が表示されたら、テスト成功
LINE WORKS連絡先取得ツールの準備完了です。
文字列がなにも表示されない場合は、
手順を最初から見直してみてください。
連絡先を取得してみる
1. 手動で実行する
毎月1日にプログラムが定期実行されるように、
GASのトリガーを設定していきます。
Googleシートの「拡張機能」メニューから「Apps Script」を開きます
ファイル:getContact.gs を選択して、fetchAndProcessContacts を 実行してみてください。
処理が完了したら、Google Sheetに戻り、データが取得できている事を確認します
エラーが発生している場合は、もう一度手順を見直してください。
2. 定期実行を設定する
左側のメニューアイコンから、トリガーを選択します
例として毎日夜間に1回最新の情報を取りに行く場合は、以下のとおりトリガーを設定します
タイミングは任意で設定してください
・LINE WORKSのAPIにはRateLimit(分間実行制限)があります。最短でも1時間に1回くらいを目安にしてください。
・毎回データをクリアして上書きする仕様です。
・GASのスクリプト処理時間は最大6分間です。データ量が多く6分間で完了できない場合は、分割処理するなどスクリプトの改修が必要です。
実行する関数を選択:fetchAndProcessContacts
実行するデプロイを選択:Head
イベントのソースを選択:時間主導型
時間ベースのトリガータイプを選択:日付ベースのタイマー
時刻を選択:午前0時~1時
エラー通知:任意
以上で設定完了です。
動作確認
実行結果ログシートに結果が記録されます
またはApps Scriptの画面左の「実行数」メニューを開きます
ここで定期実行のスクリプトが完了しているか、失敗しているか確認できます。
以上です。