処理の流れ
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"
}