LINE WORKS の Contact API の連絡先リストの取得を使って、LINE WORKS でつながっている外部の LINE WORKS ユーザー、LINE ユーザーをリスト化します。
会社全体での外部連携ユーザー数や、LINE WORKS ユーザーごとの外部連携ユーザー数を集計する、期間ごとの増加状況を把握するなどに利用できると思います。
連絡先リスト取得 API のリファレンス ページは以下です。
https://developers.worksmobile.com/jp/reference/contact-list?lang=ja
Response は Cursor 型のページネーションで複数ページ渡って返されます。以下の記事の手順でページネーションの処理を行います。
PowerAutomate でカーソル型ページネーションを使う
https://qiita.com/iwaohig/items/9f06b188c1898a722192
Power Automate のクラウドフロー
手動でフローをトリガー
ここでは手動でフローをトリガーを利用しています。要件に応じてタイマーで定期的に実行するなども可能です。
cursor と Do until を抜けるための変数
cursor の情報を格納する変数を初期化します。
また、最後のページの情報を取得した際に、Do until を抜けるのに用いる変数も初期化します。
Do until のコントロールで複数ページの情報を取得
Do until を抜けるための条件を設定します。
HTTP コネクタで連絡先リスト取得 API のリクエストを設定します。クエリに nextCursor を指定します。その他のクエリはリファレンスに沿って適宜設定します。
JSON の解析で連絡先リスト取得 API のレスポンスを処理します。JSON スキーマは以下です。
{
"type": "object",
"properties": {
"contacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"contactId": {
"type": "string"
},
"contactTagIds": {
"type": "array"
},
"linkedExternalUser": {},
"permission": {
"type": "object",
"properties": {
"masterUserId": {},
"isCoEditing": {
"type": "boolean"
},
"accessibleRange": {
"type": "string"
},
"accessibleMembers": {
"type": "array"
}
}
},
"createdTime": {
"type": "string"
},
"modifiedTime": {
"type": "string"
},
"contactName": {
"type": "object",
"properties": {
"lastName": {
"type": "string"
},
"firstName": {
"type": "string"
},
"phoneticLastName": {},
"phoneticFirstName": {},
"prefix": {},
"suffix": {},
"middleName": {},
"nickName": {}
}
},
"emails": {
"type": "array"
},
"telephones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"telephone": {
"type": "string"
},
"customType": {},
"primary": {
"type": "boolean"
}
},
"required": [
"type",
"telephone",
"customType",
"primary"
]
}
},
"organizations": {
"type": "array"
},
"locations": {
"type": "array"
},
"events": {
"type": "array"
},
"messengers": {
"type": "array"
},
"websites": {
"type": "array"
},
"memo": {}
},
"required": [
"contactId",
"contactTagIds",
"linkedExternalUser",
"permission",
"createdTime",
"modifiedTime",
"contactName",
"emails",
"telephones",
"organizations",
"locations",
"events",
"messengers",
"websites",
"memo"
]
}
},
"responseMetaData": {
"type": "object",
"properties": {
"nextCursor": {}
}
}
}
}
さらに LinkedExternalUser 内の項目を取得するための JSON の解析を設定します。スキーマは以下です。
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"buddyUserIds": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
Excel Online に書き出します。出力した項目を設定したテーブルを作成します。
表に行を追加のアクションで BuudyUserIds ごとのデータを書き出します。Apply to each で処理されます。
条件のコントロール
最終ページに到達しカーソルの値が null の場合は Do until を抜けるための変数の値を変更します。
次ページのためのカーソルの情報が存在する場合は cursor の変数に値を設定します。
これによりページネーションされた情報の取得が可能です。
フローは以上です。
手動でフローを開始すると、HTTP アクションに設定したクエリに基づいてデータを出力し Excel に出力されます。