2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LINE WORKS API 2.0 を PowerShell で叩いてみる (その6 : ユーザーの変更、部分変更)

Last updated at Posted at 2022-06-27

[前回]は、LINE WORKS API を利用してユーザーを作成しました。
今回は、ユーザーの変更と部分変更を試してみます。

変更(PUT)と部分変更(PATCH)の違いですが、変更(PUT)は、プロパティ一式を含むリクエストを送り、そのとおりの内容でそっくりそのまま置き換えます。部分更新(PATCH)は、更新したいプロパティのみを含むリクエストを送り、そのプロパティだけを書き換えることができます。
早速使い方を見てみましょう。

まずは、ユーザーの更新から。
ユーザーの登録時には telephone を指定していましたが、実は、固定電話ではなく、携帯電話の番号だったようです。これは修正の必要がありますね。telephone には値を指定せず、cellPhone のみを指定して更新しましょう。
passwordConfig はユーザー作成時にのみ設定できるので、今回は指定しません。domainIdemailuserName のうち lastNamefirstName のどちらか一方は、ユーザーの更新時にも必ず指定が必要です。


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

レスポンスから、cellPhonetelephone を確認してみましょう。
更新時に指定した 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) と使い分けてみてください。

2
1
0

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?