接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSFMarketingCloud Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module SFMarketingCloudCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module SFMarketingCloudCmdlets;
Connect-SFMarketingCloud cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-SFMarketingCloud -User "MyUser" -Password "MyPassword"
Salesforce Marketing Cloud への接続
REST API およびSOAP API の両方で、次のプロパティを使用してデータアクセスを絞り込むことができます。
- Instance:使用されるSalesforce Marketing Cloud API のインスタンス。デフォルトのインスタンスはWeb Services API のs7 ですが、このプロパティを使用して別のインスタンスを指定することができます。
- Subdomain:インスタンスがs10 より大きい場合は、サブドメインも指定する必要があります。
REST API
接続するには、Schema をREST に設定します。Salesforce Marketing Cloud REST API はOAuth 認証標準を使用しています。OAuth を使って認証するには、カスタムOAuth アプリケーションを作成してOAuthClientId およびOAuthClientSecret 接続プロパティの値を取得する必要があります。詳しくは、カスタムOAuth アプリの作成 を参照してください。
SOAP API
接続するには、Schema をSOAP に設定します。Salesforce Marketing Cloud SOAP API は、OAuth を使用して接続できます。従来のログイン資格情報の使用もサポートしています。
Note:Salesforce Marketing Cloud のデータ拡張オブジェクトは、SOAP API 経由でのみアクセスできます。
Salesforce Marketing Cloud への認証
ユーザーアカウント(OAuth)
AuthScheme をOAUTH に設定します。また、すべてのOAuth フローで、AccountId をターゲットビジネスユニットの特定のMID に設定します。 NOTE: これはレガシーパッケージでは利用できません。 次のOAuth セクションでは、これら両方の接続プロパティを設定済みであることを前提としています。デスクトップアプリ
下記の手順に従って、カスタムOAuth アプリケーションの資格情報を使用して認証します。カスタムOAuth アプリケーションについては、カスタムOAuth アプリの作成 を参照してください。 OAuth アクセストークンの取得以下を設定して、接続してください。
- OAuthClientId:アプリケーション設定のクライアントId。
- OAuthClientSecret:アプリケーション設定のクライアントシークレット。
- CallbackURL:アプリケーション設定のリダイレクトURL。
ヘッドレスマシン
ヘッドレスマシンのユーザーアカウントでOAuth を使用するようにドライバーを設定するには、インターネットブラウザに対応した別の端末で認証する必要があります。
- 以下のオプションから選択します。
- オプション1:後述の「Verifier code を取得および交換」に従い、OAuthVerifier 値を取得します。
- オプション2:インターネットブラウザに対応したマシンに本製品 をインストールし、後述の「OAuth 設定を転送」の説明に従い、通常のブラウザベースのフローで認証後にOAuth 認証値を転送します。
- 次に、ヘッドレスマシンからアクセストークンを自動的にリフレッシュするように本製品 を設定します。
オプション1:Verifier code を取得および交換
Verifier code を取得するには、OAuth Authorization URL で認証する必要があります。
インターネットブラウザに対応したマシンから認証してOAuthVerifier 接続プロパティを取得する方法は次のとおりです。
- 以下のオプションから選択します。
- 埋め込みOAuth アプリケーションを使用する場合は、Salesforce Marketing Cloud OAuth endpoint をクリックし、ブラウザでエンドポイントを開きます。
- カスタムOAuth アプリケーションを使用するには、以下のプロパティを設定し、認証URL を作成します。
- InitiateOAuth:OFF に設定。
- OAuthClientId:アプリケーションの登録時に割り当てられたクライアントId に設定。
- OAuthClientSecret:アプリケーションの登録時に割り当てられたクライアントシークレットに設定。
- ログインして、本製品 にアクセス許可を与えます。すると、verifier code を含むコールバックURL にリダイレクトされます。
- verifier code の値を保存します。後ほどこれをOAuthVerifier 接続プロパティに設定します。
ヘッドレスマシンでは、次の接続プロパティを設定してOAuth 認証値を取得します。
- InitiateOAuth:REFRESH。
- OAuthVerifier:verifier code。
- OAuthClientId:(カスタムアプリケーションのみ)カスタムOAuth アプリケーション設定のクライアントId。
- OAuthClientSecret:(カスタムアプリケーションのみ)カスタムOAuth アプリケーション設定のクライアントシークレット。
- OAuthSettingsLocation:InitiateOAuth がGETANDREFRESH、またはREFRESH に設定されている場合に、OAuth 値が保存される設定ファイルの場所。代わりに、'memory://' で始まる値を指定することで、この場所をメモリに保持することができます。この接続プロパティを設定すると、データは接続間で永続化されます。
OAuth 設定ファイルが生成されたら、以下のように接続プロパティをリセットする必要があります。
- InitiateOAuth:REFRESH。
- OAuthClientId:(カスタムアプリケーションのみ)アプリケーションの登録時に割り当てられたクライアントId。
- OAuthClientSecret:(カスタムアプリケーションのみ)アプリケーションの登録時に割り当てられたクライアントシークレット。
- OAuthSettingsLocation:暗号化されたOAuth 認証値が保存される場所。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
オプション2:OAuth 設定を転送
ヘッドレスマシンでの接続に先立ち、インターネットブラウザに対応したデバイスでドライバーとの接続を作成し、インストールする必要があります。上述の「デスクトップアプリケーション」の説明に従って、接続プロパティを設定します。
「デスクトップアプリケーション」の手順が完了すると、生成された認証値は、OAuthSettingsLocation で指定された場所に暗号化されて書き込まれます。デフォルトのファイル名はOAuthSettings.txt です。
接続が正常にテストされたら、OAuth 設定ファイルをヘッドレスマシンにコピーします。
ヘッドレスマシンでは、次の接続プロパティを設定します。
- OAuthClientId:(カスタムアプリケーションのみ)アプリケーションの登録時に割り当てられたクライアントId。
- OAuthClientSecret:(カスタムアプリケーションのみ)アプリケーションの登録時に割り当てられたクライアントシークレット。
- OAuthSettingsLocation:OAuth 設定ファイルの場所。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
サーバー間(OAuthClient)
Salesforce Marketing Cloud でアプリケーションを作成する際、サーバー間認証を選択できます。この場合、アプリケーションの権限はSalesforce Marketing Cloud UI で直接設定されます。そのため、ユーザーコンテキストが存在せず、ブラウザベースのログインや権限付与はありません。このスキームでは、独自のクレデンシャルを作成する必要があります。アプリケーションでサーバー間OAuth 認証を有効にするには、次のプロパティを指定します。
- AuthScheme:OAuthClient。
- InitiateOAuth:GETANDREFRESH。
- OAuthClientId:クライアントId。
- OAuthClientSecret:クライアントシークレット。
- Subdomain:Salesforce Marketing Cloud API サブドメインを指定。
ユーザー名 / パスワード アカウント(Basic)
Salesforce Marketing Cloud SOAP API は、ログイン資格情報またはOAuth 認証のいずれかを使用して接続できます。 この認証スキームは、REST API ベースのアプリケーションでは利用できないことに注意してください。ログイン資格情報認証を使用してデータに接続するには、以下を設定します。
- AuthScheme:Basic。
- User:Salesforce Marketing Cloud ユーザーアカウント。
- Password:ユーザーの認証に使用するパスワード。
- UseLegacyAuthentication:True。
データの取得
Select-SFMarketingCloud cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-SFMarketingCloud -Connection $conn -Table "Subscriber" -Columns @("Id, Status") -Where "EmailAddress='[email protected]'"Invoke-SFMarketingCloud cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-SFMarketingCloud -Connection $conn -Table Subscriber -Where "EmailAddress = '[email protected]'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\mySubscriberData.csv -NoTypeInformation
Select-SFMarketingCloud からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-SFMarketingCloud -User "MyUser" -Password "MyPassword" PS C:\> $row = Select-SFMarketingCloud -Connection $conn -Table "Subscriber" -Columns (Id, Status) -Where "EmailAddress = '[email protected]'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "Subscriber", "Columns": [ ], "Id": "MyId", "Status": "MyStatus" }
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-SFMarketingCloud -Connection $conn -Table Subscriber -Where "EmailAddress = '[email protected]'" | Remove-SFMarketingCloud
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをSalesforce Marketing Cloud にロードします。
Import-Csv -Path C:\MySubscriberUpdates.csv | %{ $record = Select-SFMarketingCloud -Connection $conn -Table Subscriber -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-SFMarketingCloud -Connection $conn -Table Subscriber -Columns @("Id","Status") -Values @($_.Id, $_.Status) -Where "Id = `'$_.Id`'" }else{ Add-SFMarketingCloud -Connection $conn -Table Subscriber -Columns @("Id","Status") -Values @($_.Id, $_.Status) } }