接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSuiteCRM Cmdlets を使用する例を示します。
SuiteCRM への接続
SuiteCRM に接続するための要件は、サイトが実行しているAPI のバージョンによって異なります。
SuiteCRM V4.1 API
V4.1 API でSuiteCRM データに接続するには、次の接続プロパティを設定します。
- Schema: suitecrmv4。
- URL:SuiteCRM アプリケーションに紐づいているURL。例:http://suite.crm.com
- User:SuiteCRM アカウントに紐づいているユーザー。
- Password:SuiteCRM アカウントのユーザーに紐付けられたパスワード。
SuiteCRM メタデータの取得は高負荷になる可能性があることに注意してください。メタデータのキャッシュ で説明しているように、メタデータをローカルに格納することをお勧めします。
SuiteCRM V8 API
SuiteCRM はOAuth2 認証標準を利用しています。SuiteCRM V8 API に接続する前に、OAuth2 の秘密鍵と公開鍵が適切に設定されていることを確認してください。 詳しくは、SuiteCRM Developer Guide API V8 setup instructions を参照してください。
SuiteCRM V8 API への認証
SuiteCRM V8 API は認証メカニズムとしてOAuth2.0 を使用し、2つのグラント種別、PASSWORD またはCLIENT のいずれかに基づきます。OAuth で認証するには、Schema をsuitecrmv8 に設定し、カスタムOAuth アプリケーションの作成 で説明するとおり、カスタムOAuth アプリケーションの作成が必要となります。
クライアントクレデンシャルグラント
SuiteCRM V8 API に接続するには、次のプロパティを設定します。
- Schema: suitecrmv8。
- AuthScheme: OAuthClient。
- OAuthClientId:カスタムOAuth アプリケーションの作成時に返されるクライアントキー。(カスタムOAuth アプリケーションの作成 参照)
- OAuthClientSecret:カスタムOAuth アプリケーションの作成時に返されるクライアントシークレット。(カスタムOAuth アプリケーションの作成 参照)
- URL:SuiteCRM システムのベースURL。例:https://suitecrmhost/
パスワードグラント
SuiteCRM V8 API に接続するには、次のプロパティを設定します。
- Schema: suitecrmv8。
- AuthScheme: OAuthPassword。
- OAuthClientId:カスタムOAuth アプリケーションの作成時に返されるクライアントキー。 (カスタムOAuth アプリケーションの作成 参照)
- OAuthClientSecret:カスタムOAuth アプリケーションの作成時に返されるクライアントシークレット。 (カスタムOAuth アプリケーションの作成 参照)
- User:ユーザーのユーザーネーム。
- Password:ユーザーのパスワード。
- URL:SuiteCRM システムのベースURL。例:https://suitecrmhost/
接続オブジェクトの作成
Connect-SuiteCRM cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-SuiteCRM -URL 'http://mySuiteCRM.com' -User 'myUser' -Password 'myPassword'
データの取得
Select-SuiteCRM cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-SuiteCRM -Connection $conn -Table "Accounts" -Columns @("Name, Industry") -Where "Industry='Manufacturing'"
Invoke-SuiteCRM cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-SuiteCRM -Connection $conn -Table Accounts -Where "Industry = 'Manufacturing'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myAccountsData.csv -NoTypeInformation
Select-SuiteCRM からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-SuiteCRM -URL 'http://mySuiteCRM.com' -User 'myUser' -Password 'myPassword'
PS C:\> $row = Select-SuiteCRM -Connection $conn -Table "Accounts" -Columns (Name, Industry) -Where "Industry = 'Manufacturing'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
"Connection": {
},
"Table": "Accounts",
"Columns": [
],
"Name": "MyName",
"Industry": "MyIndustry"
}
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-SuiteCRM -Connection $conn -Table Accounts -Where "Industry = 'Manufacturing'" | Remove-SuiteCRM
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをSuiteCRM にロードします。
Import-Csv -Path C:\MyAccountsUpdates.csv | %{
$record = Select-SuiteCRM -Connection $conn -Table Accounts -Where ("Id = `'"+$_.Id+"`'")
if($record){
Update-SuiteCRM -Connection $conn -Table Accounts -Columns @("Name","Industry") -Values @($_.Name, $_.Industry) -Where "Id = `'$_.Id`'"
}else{
Add-SuiteCRM -Connection $conn -Table Accounts -Columns @("Name","Industry") -Values @($_.Name, $_.Industry)
}
}