PowerShell からSAP SuccessFactors のデータに接続してデータの取得・更新・挿入・削除・CSV エクスポートを実行する方法
CData Cmdlets for SAPSuccessFactors を使えば、PowerShell からSAP SuccessFactors に手軽に連携して、データのCRUD やエクスポートを実行できます。
本記事では、SAP SuccessFactors への接続方法からCSV エクスポート、データの操作までサンプルコード付きで解説していきます。
SAP SuccessFactors への接続を設定
それでは、まずはSAP SuccessFactors への接続設定からはじめていきましょう。接続設定にはCData SAP SuccessFactors Cmdlets が必要となります。右側のサイドバーから製品の全機能が使える30日間の無償トライアルがダウンロードできるので、ぜひご利用ください。
インストールが完了したら、プロファイルに以下の行を追加してください。次のPowerShell セッションでモジュールがロードされます。
Import-Module SAPSuccessFactorsCmdlets;
Connect-SAPSuccessFactors コマンドを使ってSAP SuccessFactors との接続を設定します。各接続プロパティの取得方法は次に説明します。
$conn = Connect-SAPSuccessFactors -User "$User" -Password "$Password" -CompanyId "$CompanyId" -Url "$Url"
SAP SuccessFactorsへの接続
それでは、SAP SuccessFactors に接続していきましょう。CData 製品は、デフォルトで有効になっているOData API を介してSAP SuccessFactors と通信します。追加の権限が必要な場合は、SAP サポートサイトをご確認ください。
認証方法として、Azure AD 認証、SAP IAS 認証、OAuth 認証(推奨)、Basic 認証(非推奨)のいずれかを使用してSAP SuccessFactors に認証できます。
必要な接続プロパティ
選択したAuthScheme に関わらず、SAP SuccessFactors 環境を識別するために以下の接続プロパティを設定しましょう。
- URL:SuccessFactors をホストするサーバーのURL
- CompanyId:SAP SuccessFactors テナントに割り当てられた一意の識別子。この値はAPI 認証に必要で、組織固有のものです
OAuth 認証
SAP SuccessFactors では、OAuth 認証を2種類のグラント種別でサポートしています。
- SAP SuccessFactors LMS インスタンスのクライアントグラント種別
- SAML-2 Bearer グラント種別
OAuth 認証を有効にするには、すべてのOAuth フローでカスタムOAuth アプリケーションを作成し、適切なプロパティを設定する必要があります。
デスクトップアプリケーションでカスタムOAuth アプリケーションの資格情報を使用して認証するには、OAuth アクセストークンを取得し、更新する必要があります。これらを設定すると、接続の準備が整います。
OAuth アクセストークンの取得およびリフレッシュ
以下のプロパティを設定してください。
- InitiateOAuth:GETANDREFRESH。OAuthAccessToken を自動的に取得およびリフレッシュするために使用します
- OAuthClientId:アプリケーションの登録時に割り当てられたクライアントId
- CallbackURL:カスタムOAuth アプリケーションの登録時に定義されたリダイレクトURI
- OAuthClientSecret (クライアントグラント種別のみ):アプリケーションの登録時に割り当てられたクライアントシークレット
- PrivateKey (SAML-2 Bearer グラント種別のみ):カスタムOAuth アプリケーションの作成時にダウンロードした秘密鍵証明書のパス、またはその証明書のbase64 でエンコードされた内容
接続すると、CData 製品がデフォルトブラウザでSAP SuccessFactors のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えてください。
アプリケーションにアクセス許可を与えると、CData 製品がOAuth プロセスを完了します。
- CData 製品がSAP SuccessFactors からアクセストークンを取得し、それを使ってデータをリクエストします
- OAuth 値はOAuthSettingsLocation で指定されたパスに保存されます。これらの値は接続間で永続化されます
アクセストークンの期限が切れた際は、CData 製品が自動でアクセストークンをリフレッシュします。
カスタムOAuth アプリケーションの作成やその他の認証方法については、 href="/kb/help/" target="_blank">ヘルプドキュメントの「はじめに」をご確認ください。
これで接続設定は完了です。
SAP SuccessFactors のデータを取得してCSV にパイプライン
接続が完了したので、ExtAddressInfo テーブルデータを取得して結果をCSV ファイルにエクスポートします。
Select-SAPSuccessFactors -Connection $conn -Table ExtAddressInfo | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myExtAddressInfoData.csv -NoTypeInformation
このコードでは、Select-SAPSuccessFactors から取得した結果をSelect-Object に流して、Export-Csv に渡す前にいくつかのプロパティを除外しています。これは、CData Cmdlets が接続情報、テーブル、およびカラム情報を結果セットのそれぞれの行に挿入するためです。それらの情報を表示したくない場合に、Export-Csv コマンドに渡す前に除外を先に行い、そのあとでCSV ファイルにエクスポートします。
それでは、続いてデータの削除や挿入・更新を実行してみます。
データの削除
以下のように、フィルタリングで合致するレコードを削除することができます。
Select-SAPSuccessFactors -Connection $conn -Table ExtAddressInfo -Where "city = Springfield" | Remove-SAPSuccessFactors
データの挿入と更新
データの挿入や更新を使って、加工やクレンジングも行えます。以下の手順では、CSV ファイルのデータを読み込んで挿入対象のオブジェクトに同じレコードが存在するかを確認した上で、存在する場合にはデータを更新、存在しない場合にはデータの挿入を行います。
Import-Csv -Path C:\MyExtAddressInfoUpdates.csv | %{
$record = Select-SAPSuccessFactors -Connection $SAPSuccessFactors -Table ExtAddressInfo -Where ("Id = `'"+$_.Id+"`'")
if($record){
Update-SAPSuccessFactors -Connection $sapsuccessfactors -Table ExtAddressInfo -Columns ("address1","zipCode") -Values ($_.address1, $_.zipCode) -Where ("Id = `'"+$_.Id+"`'")
}else{
Add-SAPSuccessFactors -Connection $sapsuccessfactors -Table ExtAddressInfo -Columns ("address1","zipCode") -Values ($_.address1, $_.zipCode)
}
}
おわりに
このように、CData Cmdlets を使えばPowerShell でのSAP SuccessFactors のデータへの連携をシンプルに実現できます。ぜひCData PowerShell Cmdlets の30日間無償トライアルをダウンロードして、シンプルかつパワフルなデータ連携をお試しください。