0
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 3 years have passed since last update.

powershellのInvoke-RestMethodを使ってAnaplanのAPI使用記録 

Posted at

処理の流れ

AnaplanのSSOToken取得→インポート先の情報取得→ファイルアップロード処理→インポート処理

AnaplanのSSOToken取得

getSSOToken
# ユーザーIDとパスワードをまとめる
$pair = "$($user):$($pass)"

# 文字列をCredentialに変換
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"

# Header情報を設定
$Headers = @{
Authorization = $basicAuthValue
}

# SSOToken取得URI
$uri = "https://auth.anaplan.com/token/authenticate"

# Invoke-RestMethod実行
$result = Invoke-RestMethod -Uri $uri  -Headers $Headers -Method POST 

# tokenValue取得
$TOKEN_VALUE=$result.tokenInfo.tokenValue

インポート先の情報取得

getImportInfomation

$WORKSPACE_ID="対象のワークスペースID"
$MODEL_ID="対象のモデルID"
$TOKEN_VALUE="取得したトークンの値"

# Header情報を設定
 $Headers = @{
"Authorization" = "AnaplanAuthToken $TOKEN_VALUE"
"Accept"="application/json"
}

# Import先の情報取得URI
 $uri = "https://api.anaplan.com/2/0/workspaces/$WORKSPACE_ID/models/$MODEL_ID/imports"

# Invoke-RestMethod実行
 $result = Invoke-RestMethod -Uri $uri  -Headers $Headers -Method get

 $importInfomation = $result.imports | where { $_.name -eq "Import先の名前" }
# Import先のID
 $IMPORT_ID=$importInfomation.id
# Import先が参照しているファイルID
 $FILE_ID=$importInfomation.importDataSourceId

ファイルアップロード

fileUpload

$WORKSPACE_ID="対象のワークスペースID"
$MODEL_ID="対象のモデルID"
$TOKEN_VALUE="取得したトークンの値"
$FILE_ID="アップロード先のファイルID"
$FILE_PATH="アップロードするファイルパス"

# Header情報を設定
$Headers = @{
"Authorization" = "AnaplanAuthToken $TOKEN_VALUE"
"Content-Type"="application/octet-stream"
}

# ファイルアップロードURI
$uri = "https://api.anaplan.com/2/0/workspaces/$WORKSPACE_ID/models/$MODEL_ID/files/$FILE_ID"

# Invoke-RestMethod実行
$result = Invoke-RestMethod -Uri $uri -Method PUT -Headers $Headers -InFile  $FILE_PATH

ファイルアップロード後の確認

fileUploadConfirm

$WORKSPACE_ID="対象のワークスペースID"
$MODEL_ID="対象のモデルID"
$TOKEN_VALUE="取得したトークンの値"

# Header情報を設定
$Headers = @{
"Authorization" = "AnaplanAuthToken $TOKEN_VALUE"
"Accept"="application/json"
}

# ファイルアップロード確認URI
$uri = "https://api.anaplan.com/2/0/workspaces/$WORKSPACE_ID/models/$MODEL_ID/files"

# Invoke-RestMethod実行
$result = Invoke-RestMethod -Uri $uri  -Headers $Headers -Method get
$fileInfomation = $result.files | where { $_.id -eq $FILE_ID }

下記の情報を取得しchunkCountが1になっていることを確認(例)

id           : ファイルID
name         : ファイル名
chunkCount   : 1
delimiter    : "
encoding     : UTF-8
firstDataRow : 2
format       : txt
headerRow    : 1
separator    : ,

インポート

Import

$WORKSPACE_ID="対象のワークスペースID"
$MODEL_ID="対象のモデルID"
$IMPORT_ID="インポート先のID"
$TOKEN_VALUE="取得したトークンの値"

# Header情報を設定
$Headers = @{
"Authorization" = "AnaplanAuthToken $TOKEN_VALUE"
"Content-Type"="application/json"
}

# Body情報を設定
$Body = '{"localeName": "en_US"}'

# インポート処理のURI
$uri = "https://api.anaplan.com/2/0/workspaces/$WORKSPACE_ID/models/$MODEL_ID/imports/$IMPORT_ID/tasks"

# Invoke-RestMethod実行
$result = Invoke-RestMethod -Uri $uri  -Headers $Headers -Method post -Body $Body 

処理に成功するとtaskIdのresponseが戻ってくる

{
"taskId" : "5E6331685CC648A29B725923B8FAEA1C"
}

参考

Anaplan API 文書

0
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
0
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?