前回は、LINE WORKS API を利用するための Token を埋め込んだ Header オブジェクトを生成ました。
今回は、前回生成した Header オブジェクトを利用して、LINE WORKS ユーザーの一覧を取得してみます。
ユーザー一覧を取得する API はこちら
ユーザー一覧に限らず、LINE WORKS API 2.0 の一覧取得 API は Pagination に対応しており、取得件数制限を超えたために全件が取得できなかった場合には responseMetaData.nextCursor が返ります。次回はリクエスト時のクエリ パラメータ cursor に nextCursor を入れてアクセスすると残りが取得できます。
nextCursor は URL エンコードする必要があることに注意が必要です。nextCursor に含まれる文字によっては、URL エンコードを忘れてもエラーになないので、たまにエラーになる、という場合は URL エンコードを忘れていないか確認してみてください。
また、LINE WORKS API 2.0 には RateLimit があり、プランと API により、毎分の呼び出し可能回数が異なります。
今回は、どのプランでも問題にならないよう、毎秒 1 回、API を呼び出します。
取得したユーザー一覧から、一意のキーとなる email
、userId
、userExternalKey
と、lastName
、firstName
を表示してみます。
$APIEndPoint = 'https://www.worksapis.com/v1.0/users'
$nextCursor = $null
do {
if (![String]::IsNullOrEmpty($nextCursor)) {
$callUrl = "$APIEndPoint`?cursor=$nextCursor"
Start-Sleep 1 #sec RateLimit 対策
}
else {
$callURL = $APIEndPoint
}
$Response = Invoke-RestMethod -Uri $callURL -Method GET -Headers $Header
$Response.Users | select email, userId , userExternalKey, @{Name = "lastName"; Expression = { $_.userName.lastName } } , @{Name = "firstName"; Expression = { $_.userName.firstName } }
$nextCursor = [System.Web.HttpUtility]::UrlEncode($Response.responseMetaData.nextCursor)
}while (![String]::IsNullOrEmpty($nextCursor))