接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSageIntacct Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module SageIntacctCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module SageIntacctCmdlets;
Connect-SageIntacct cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-SageIntacct -User 'myusername' -CompanyID 'TestCompany' -Password 'mypassword' -SenderID 'Test' -SenderPassword 'abcde123'
Sage Intacct への接続
埋め込みクレデンシャル(BasicReadOnly 認証)、 独自のクレデンシャル(Basic 認証)、またはOkta クレデンシャルのいずれかを使用して、Sage Intacct への接続を確立できます。
Sage Intacct への認証
Sage Intacct は3種類の認証をサポートします。BasicReadOnly、Basic、およびOkta です。次のパラメータを設定したら、認証の準備は完了です。
- CompanyID:Sage Intacct にログインする際に会社を識別するために使用するID。
- User:Sage Intacct へのログインに使用するログイン名。
- Password:ログインクレデンシャル用のパスワード。
- Basic 認証のみ:
- SenderID:使用するSenderID。
- SenderPassword:使用するSenderID のパスワード。
BasicReadOnly
本製品 には、Sage Intacct からデータを読み出すときに使用されるWeb サービスクレデンシャルが埋め込まれています。これらのクレデンシャルは読み取り専用です。認証するには以下の手順に従います。
- AuthScheme をBasicReadOnly に設定します。
- SenderID またはSenderPassword を指定していないことを確認してください。
- Web サービスダッシュボードで、会社 -> 会社情報 -> セキュリティタブに移動します。
- 設定 -> 会社 -> セキュリティ -> Web サービス認証 / 編集に移動します。
- Web サービス認証に"CData" を追加します。(Note:大文字と小文字は区別されます。)
Basic
独自のWeb サービスクレデンシャルを使用して、Intacct にデータを書き込むことができます。
認証するには、次を設定します。
- AuthScheme:Basic。
- SenderID:Sage Intacct によって割り当てられたWeb サービスのSender ID。
- SenderPassword:登録されたWeb サービスのパスワード。
Okta
To authenticate to Okta, set these properties:
- AuthScheme: Okta.
- User: The Okta user.
- Password: The Okta user's password.
- SSOLoginURL: The SSO provider's login URL.
Also set these SSOProperties:
- IntacctUserID: The Sage Intacct user ID that is mapped to the Okta user you set in the User connection property.
- APIToken (optional): If users are authenticated via a trusted application or proxy that overrides Okta client request context, specify the API Token that the customer created from the Okta organization.
Example connection string:
AuthScheme=Okta; SSOLoginURL='https://example.okta.com/home/appType/0bg4ivz6cJRZgCz5d6/46'; User=oktaUserName; Password=oktaPassword; SSOProperties='IntacctUserID=intacct_user';
データの取得
Select-SageIntacct cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-SageIntacct -Connection $conn -Table "Customer" -Columns @("Name, TotalDue") -Where "CustomerId='12345'"Invoke-SageIntacct cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-SageIntacct -Connection $conn -Table Customer -Where "CustomerId = '12345'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myCustomerData.csv -NoTypeInformation
Select-SageIntacct からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-SageIntacct -User 'myusername' -CompanyID 'TestCompany' -Password 'mypassword' -SenderID 'Test' -SenderPassword 'abcde123' PS C:\> $row = Select-SageIntacct -Connection $conn -Table "Customer" -Columns (Name, TotalDue) -Where "CustomerId = '12345'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "Customer", "Columns": [ ], "Name": "MyName", "TotalDue": "MyTotalDue" }
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-SageIntacct -Connection $conn -Table Customer -Where "CustomerId = '12345'" | Remove-SageIntacct
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをSage Intacct にロードします。
Import-Csv -Path C:\MyCustomerUpdates.csv | %{ $record = Select-SageIntacct -Connection $conn -Table Customer -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-SageIntacct -Connection $conn -Table Customer -Columns @("Name","TotalDue") -Values @($_.Name, $_.TotalDue) -Where "Id = `'$_.Id`'" }else{ Add-SageIntacct -Connection $conn -Table Customer -Columns @("Name","TotalDue") -Values @($_.Name, $_.TotalDue) } }