LoginSignup
0

More than 1 year has passed since last update.

LINE WORKS API 2.0 を PowerShell で叩いてみる (その2 : ユーザー一覧の取得と Pagination)

Last updated at Posted at 2022-05-18

前回は、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 を呼び出します。

取得したユーザー一覧から、一意のキーとなる emailuserIduserExternalKey と、lastNamefirstName を表示してみます。

$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))

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
0