[前回]は、LINE WORKS API を利用してユーザーを作成しました。
今回は、ユーザーの変更と部分変更を試してみます。
変更(PUT)と部分変更(PATCH)の違いですが、変更(PUT)は、プロパティ一式を含むリクエストを送り、そのとおりの内容でそっくりそのまま置き換えます。部分更新(PATCH)は、更新したいプロパティのみを含むリクエストを送り、そのプロパティだけを書き換えることができます。
早速使い方を見てみましょう。
まずは、ユーザーの更新から。
ユーザーの登録時には telephone
を指定していましたが、実は、固定電話ではなく、携帯電話の番号だったようです。これは修正の必要がありますね。telephone
には値を指定せず、cellPhone
のみを指定して更新しましょう。
passwordConfig
はユーザー作成時にのみ設定できるので、今回は指定しません。domainId
と email
、userName
のうち lastName
と firstName
のどちらか一方は、ユーザーの更新時にも必ず指定が必要です。
$userId = 'newuser@yourcompany'
$urlEncodedUserId = [System.Web.HttpUtility]::UrlEncode($userId)
$putUserURL = "https://www.worksapis.com/v1.0/users/$urlEncodedUserId"
[HashTable]$User = @{
domainId = 12345678
email = "newuser@yourcompany"
userName = @{
lastName = "lastName"
}
cellPhone = "090-1234-5678"
}
$response = Invoke-RestMethod -Method PUT -Uri $putUserURL -Headers $Header -body (ConvertTo-Json $User -depth 10)
レスポンスから、cellPhone
と telephone
を確認してみましょう。
更新時に指定した cellPhone
のみ値が入っていて、telephone
からは値がなくなっていることがわかります。
> $response.cellPhone
090-1234-5678
> $response.telephone
では、次に、ユーザーの部分更新を試してみましょう。
今度は、nickName
を指定してみます。
日本語が含まれていると、文字化けを起こしたり、不正な文字が含まれてエラーとなる場合があります。そんなときは、UTF8 でエンコードしてから送ります。
$userId = 'newuser@yourcompany'
$urlEncodedUserId = [System.Web.HttpUtility]::UrlEncode($userId)
$patchUserURL = "https://www.worksapis.com/v1.0/users/$urlEncodedUserId"
[HashTable]$User = @{
nickName = "宴会部長"
}
$reqBody = $User | ConvertTo-Json -depth 10
$reqBody = [System.Text.Encoding]::UTF8.GetBytes($reqBody)
$response = Invoke-RestMethod -Method patch -Uri $patchUserURL -Headers $Header -body $reqBody
これで、nickName
が正しく入りました。
> $response.nickName
宴会部長
以前に指定した cellPhone
も失われず、そのまま残っています。部分更新(PATCH)では指定部分だけが置き換わる事がわかります。
> $response.cellPhone
090-1234-5678
一部の情報だけを消したいときもありますよね。そんな場合には、値に $NULL
を指定して、部分更新をします。
$userId = 'newuser@yourcompany'
$urlEncodedUserId = [System.Web.HttpUtility]::UrlEncode($userId)
$patchUserURL = "https://www.worksapis.com/v1.0/users/$urlEncodedUserId"
[HashTable]$User = @{
nickName = $null
}
$reqBody = $User | ConvertTo-Json -depth 10
$reqBody = [System.Text.Encoding]::UTF8.GetBytes($reqBody)
$response = Invoke-RestMethod -Method patch -Uri $patchUserURL -Headers $Header -body $reqBody
これで、nickName
の情報が消えました。
> $response.nickName
このように、一部の情報だけを書き換えたいときには部分更新(PATCH)、新しい情報をすべて記載する場合には更新(PUT) と使い分けてみてください。