# Salesforce Marketing Cloud Import Integration CLI V2 Treasure Dataは、ユーザーセグメントをSalesforce Marketing Cloudに公開し、顧客にパーソナライズされたメールを送信できるようにします。Web、モバイル、CRM、その他のデータソースからのファーストパーティデータを使用して、データドリブンのメールキャンペーンを実行できます。このトピックでは、CLIを使用してこれを実現する方法について説明します。 ## 'td' Command v0.11.9以降のインストール 最新の[Treasure Data Toolbelt](https://toolbelt.treasuredata.com/)をインストールできます。 ``` $ td --version 0.15.3 ``` ## 設定ファイルの作成 Salesforce Marketing Cloudアカウントのアクセス情報を含む設定ファイル(例: `load.yml`)を、以下の例のように準備します。 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: client_secret: auth_type: v2 auth_uri: account_id: target: data_extension_names: shared_data_extension: false ensure_latest_data: false incremental: false maximum_retries: 7 initial_retry_interval_millis: 1000 maximum_retry_interval_millis: 120000 filters: - type: add_time to_column: name: time type: timestamp from_value: mode: upload_time - type: rename rules: - rule: upper_to_lower - rule: character_types pass_types: [ "a-z", "0-9" ] pass_characters: "_" replace: "_" out: type: td apikey: endpoint: database: table: time_column: time mode: replace default_timestamp_format: '%d/%m/%Y' ``` この例では、Salesforce Marketing Cloudの`Campaign`データソースをダンプします: - `client_id`: Salesforce Marketing Cloudのクライアントid。 - `client_secret`: Salesforce Marketing Cloudのクライアントシークレット。 - `target`: インポートするSalesforce Marketing Cloudのエンティティオブジェクト。 ## インポートするデータのプレビュー(オプション) `td connector:preview`コマンドを使用して、インポートするデータをプレビューできます。 ``` $ td connector:preview load.yml ``` ## ロードジョブの実行 ロードジョブを送信します。データサイズによっては数時間かかる場合があります。ユーザーは、データが保存されるデータベースとテーブルを指定する必要があります。 Treasure Dataのストレージは時間でパーティション化されているため、`--time-column`オプションを指定することを推奨します([データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)も参照してください)。オプションが指定されていない場合、データコネクタは最初の`long`または`timestamp`カラムをパーティショニング時間として選択します。`--time-column`で指定するカラムのタイプは、`long`または`timestamp`型である必要があります。 データに時間カラムがない場合は、`add_time`フィルターオプションを使用して追加できます。詳細は[add_timeフィルタープラグイン](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)を参照してください。 ``` $ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column modifieddate ``` 上記のコマンドは、*database(td_sample_db)*と*table(td_sample_table)*がすでに作成されていることを前提としています。データベースまたはテーブルがTDに存在しない場合、このコマンドは成功しません。したがって、[データベースとテーブルを手動で作成](https://docs.treasuredata.com/smart/project-product-documentation/data-management)するか、`td connector:issue`コマンドで`--auto-create-table`オプションを使用してデータベースとテーブルを自動作成してください: ``` $ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column modifieddate --auto-create-table ``` "--time-column"オプションで、時間フォーマットカラムを「パーティショニングキー」に割り当てることができます。 ## 実行のスケジュール設定 定期的なSalesforce Marketing Cloudインポートのために、データコネクタの定期実行をスケジュールできます。高可用性を確保するために、スケジューラを慎重に設定しています。この機能を使用することで、ローカルデータセンターで`cron`デーモンを使用する必要がなくなります。 ### スケジュールの作成 新しいスケジュールは、`td connector:create`コマンドを使用して作成できます。スケジュール名、cron形式のスケジュール、データが保存されるデータベースとテーブル、およびデータコネクタ設定ファイルが必要です。 ```bash $ td connector:create \ daily_salesforce_marketing_cloud_import \ "10 0 * * *" \ td_sample_db \ td_sample_table \ load.yml ``` `cron`パラメータは、`@hourly`、`@daily`、`@monthly`の3つのオプションも受け付けます。デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。`--timezone`オプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートします。PST、CSTなどのタイムゾーン略語は*サポートされておらず*、予期しないスケジュールになる可能性があります。 ### インクリメンタルローディングの設定 #### Data Extensionsの場合 Treasure Dataは、日付フィールドを持つ**Data Extensions**のインクリメンタルローディングをサポートしています。 `incremental: true`が設定されている場合、データコネクタは指定された日付フィールドの`from_date`と`fetch_days`で指定された範囲に応じてレコードをロードします。 例: ```yaml incremental_column_name: mydatefield from_date: "2016-09-01T00:00:00.000Z" fetch_days: 2 ``` - 1回目の反復: データコネクタは**2016年9月1日00:00:00 UTC**から**2016年9月3日00:00:00 UTC**までのレコードを取得します - 2回目の反復: データコネクタは次の利用可能な2日間、**2016年9月3日00:00:00 UTC**から**2016年9月5日00:00:00 UTC**までのレコードを取得します。このプロセスは各反復ごとに繰り返されます。 - インクリメントに現在の日付が含まれる場合、各完全な時間期間が利用可能になるたびに追加のレコードが取得されます。 `incremental: false`が設定されている場合、データコネクタは指定されたターゲットのすべてのレコードをロードします。これは1回限りのアクティビティです。 #### Email Eventsの場合 Treasure Dataは、イベント日付に基づく**Email Events**のインクリメンタルローディングをサポートしています。 `incremental: true`が設定されている場合 - 1回目の反復: コネクタは指定された開始時間(設定されていない場合はすべての時間から)から指定された終了時間(設定されていない場合はジョブが実行予定の時間まで)までのデータをロードします - 2回目の反復: コネクタは前回の終了時間からジョブがスケジュールされた時間までのデータをロードします `incremental: false`が設定されている場合、データコネクタは指定されたターゲットのすべてのレコードをロードします。これは1回限りのアクティビティです。 ## サンプル設定 ### Campaign **Legacy Package**を使用する`Campaign`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v1 tenant_auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: campaign out: ... ``` **Enhanced Package**を使用する`Campaign`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v2 auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: campaign out: ... ``` | パラメータ | 説明 | デフォルト値 | | --- | --- | --- | | type | salesforce_marketing_cloud_v2である必要があります | | client_id | Salesforce Marketing Cloudの`Client ID` | | client_secret | Salesforce Marketing Cloudの`Client Secret` | | auth_type | パッケージタイプ これは列挙型(**v1**, **v2**)で、**v1**は**Legacy package**、**v2**は**Enhanced Package**です | v1 | | tenant_auth_uri | テナント認証ベースURI(auth_type = v1の場合のみこのオプションを入力) これは2022年9月以降必須です。Marketing Cloudはレガシーエンドポイント[https://*.[exacttargetapis.com](http://exacttargetapis.com)]を廃止する予定です。 詳細: [https://help.salesforce.com/s/articleView?id=000356497](https://help.salesforce.com/s/articleView?id=000356497), [https://help.salesforce.com/s/articleView?id=000356498](https://help.salesforce.com/s/articleView?id=000356498) | | auth_uri | 認証ベースURI(auth_type = v2の場合のみこのオプションを入力) | ### Contact **Legacy Package**を使用する`Contact`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2   client_id: XXXXXX client_secret: XXXXXX auth_type: v1 tenant_auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: contact contact_page_size: 50 contact_attributes_request_limit: 100 contact_multiple_requests: true out: ... ``` **Enhanced Package**を使用する`Contact`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2   client_id: XXXXXX client_secret: XXXXXX auth_type: v2 auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: contact contact_page_size: 50 contact_attributes_request_limit: 100 contact_multiple_requests: true out: ... ``` | パラメータ | 説明 | デフォルト値 | | --- | --- | --- | | type | salesforce_marketing_cloud_v2である必要があります | | client_id | Salesforce Marketing Cloudの`Client ID` | | client_secret | Salesforce Marketing Cloudの`Client Secret` | | auth_type | パッケージタイプ これは列挙型(**v1**, **v2**)で、**v1**は**Legacy package**、**v2**は**Enhanced Package**です | v1 | | tenant_auth_uri | テナント認証ベースURI(auth_type = v1の場合のみこのオプションを入力) これは2022年9月以降必須です。Marketing Cloudはレガシーエンドポイント[https://*.[exacttargetapis.com](http://exacttargetapis.com)]を廃止する予定です。 詳細: [https://help.salesforce.com/s/articleView?id=000356497](https://help.salesforce.com/s/articleView?id=000356497), [https://help.salesforce.com/s/articleView?id=000356498](https://help.salesforce.com/s/articleView?id=000356498) | | auth_uri | 認証ベースURI(auth_type = v2の場合のみこのオプションを入力) | | contact_attributes_request_limit | 単一リクエストで各コンタクトに対して取り込む属性の数。属性の数がこの値より大きい場合、複数のリクエストに分割されます | 100 | | contact_multiple_requests | 非常に多くの属性を持つコンタクト詳細を複数のリクエストで取り込むためのプラグインを有効にします(これは属性の数が100より大きい場合にのみ影響します) | false | | contact_multiple_requests | 非常に多くの属性を持つコンタクト詳細を複数のリクエストで取り込むためのプラグインを有効にします(これは属性の数が100より大きい場合にのみ影響します) | false | ### Data Extension **Legacy Package**を使用する`Data Extension`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v1 tenant_auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: data_extension data_extension_name: data_extension_1 incremental: true shared_data_extension: true incremental_column_name: date from_date: "2016-09-01T00:00:00.000Z" fetch_days: 1 out: type: td apikey: td_api_key endpoint: td_endpoint database: database table: table time_column: time mode: replace default_timestamp_format: '%d/%m/%Y' ``` **Enhanced Package**を使用する`Data Extension`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v2 auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: data_extension   data_extension_name: data_extension_1 log_debug_info: false incremental: true shared_data_extension: true incremental_column_name: date from_date: "2016-09-01T00:00:00.000Z" fetch_days: 1 out: type: td apikey: endpoint: database: table:
time_column: time mode: replace default_timestamp_format: '%d/%m/%Y' ``` | パラメータ | 説明 | デフォルト値 | | --- | --- | --- | | type | salesforce_marketing_cloud_v2である必要があります | | client_id | Salesforce Marketing Cloudの`Client ID` | | client_secret | Salesforce Marketing Cloudの`Client Secret` | | auth_type | パッケージタイプ これは列挙型(**v1**, **v2**)で、**v1**は**Legacy package**、**v2**は**Enhanced Package**です | v1 | | tenant_auth_uri | テナント認証ベースURI(auth_type = v1の場合のみこのオプションを入力) これは2022年9月以降必須です。Marketing Cloudはレガシーエンドポイント[https://*.[exacttargetapis.com](http://exacttargetapis.com)]を廃止する予定です。 詳細: [https://help.salesforce.com/s/articleView?id=000356497](https://help.salesforce.com/s/articleView?id=000356497), [https://help.salesforce.com/s/articleView?id=000356498](https://help.salesforce.com/s/articleView?id=000356498) | | auth_uri | 認証ベースURI(auth_type = v2の場合のみこのオプションを入力) | | shared_data_extension | 共有データ拡張からデータを取り込む場合は、このフラグをtrueに設定します | false | | ensure_latest_data | 有効にすると、データラグ(SFMCで取り込まれたデータと現在のデータ)が2500レコードを超える場合、ジョブが失敗します | false | | log_debug_info | 有効にすると、リクエストIDを含む詳細なデバッグ情報がログに記録されます(デフォルト: false) | false | | incremental | 各スケジュール間でより新しいデータのみを取得したい場合は、このフラグをtrueに設定します | false | | incremental_column_name | インクリメンタルローディングに使用されるカラム。incremental = trueを設定する場合は必須です | null | | from_date | この日付からデータを取り込むように設定します | null | | fetch_days | 取り込む期間はfrom_dateからfrom_date + fetch_daysです | 1 | | fetch_days | 取り込む期間はfrom_dateからfrom_date + fetch_daysです | 1 | ### Email Event **Legacy Package**を使用する`Email Event`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v1 tenant_auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: email_event log_debug_info: false search_term: "email name" search_mode: "exact" email_event_types: - value : all start_time: "2019-03-26T07:20:00.000Z" end_time: "2019-03-26T07:53:00.000Z" incremental: true out: ... ``` **Enhanced Package**を使用する`Email Event`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v2 auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com   target: email_event log_debug_info: false search_term: "email name" search_mode: "exact" email_event_types: - value : all start_time: "2019-03-26T07:20:00.000Z" end_time: "2019-03-26T07:53:00.000Z" incremental: true emails_per_batch: 1 out: ... ``` | パラメータ | 説明 | デフォルト値 | | --- | --- | --- | | type | salesforce_marketing_cloud_v2である必要があります | | client_id | Salesforce Marketing Cloudの`Client ID` | | client_secret | Salesforce Marketing Cloudの`Client Secret` | | auth_type | パッケージタイプ これは列挙型(**v1**, **v2**)で、**v1**は**Legacy package**、**v2**は**Enhanced Package**です | v1 | | tenant_auth_uri | テナント認証ベースURI(auth_type = v1の場合のみこのオプションを入力) これは2022年9月以降必須です。Marketing Cloudはレガシーエンドポイント[https://*.[exacttargetapis.com](http://exacttargetapis.com)]を廃止する予定です。 詳細: [https://help.salesforce.com/s/articleView?id=000356497](https://help.salesforce.com/s/articleView?id=000356497), [https://help.salesforce.com/s/articleView?id=000356498](https://help.salesforce.com/s/articleView?id=000356498) | | auth_uri | 認証ベースURI(auth_type = v2の場合のみこのオプションを入力) | | target | email_eventである必要があります(この場合) | | log_debug_info | 有効にすると、リクエストIDを含む詳細なデバッグ情報がログに記録されます(デフォルト: false) | false | | search_term | 取り込みたいメールの名前 | null | | search_mode | 名前マッチングパターンのモード。**exact**または**partial**のみである必要があります | exact | | email_event_types | インポートしたいイベントタイプのリスト。有効なオプションは次のとおりです: - value : all - value : bounce - value : click - value : forward - value : forwardOptIn - value : open - value : sent - value : survey - value : unsub | null | | start_time | この時間からデータを取り込むように設定します | null | | end_time | この時間までデータを取り込むように設定します | null | | incremental | 各スケジュール間でより新しいデータのみを取得したい場合は、このフラグをtrueに設定します | false | | emails_per_batch | バッチあたりのメール数。 大量のイベントの場合、SFMCのパフォーマンスを微調整するために使用されます。 許容値の範囲は1〜10000です | 2500 | | maximum_time_out | 接続の最大タイムアウト(秒)。 大量のイベントの場合、SFMCのパフォーマンスを微調整するために使用されます。 許容値の範囲は60〜900です | 300 | ### Email Events Only **Legacy Package**を使用する`Email Events Only`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v1 tenant_auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: email_event_only log_debug_info: false email_event_types: - value : all start_time: "2019-03-26T07:20:00.000Z" end_time: "2019-03-26T07:53:00.000Z" incremental: true out: ... ``` **Enhanced Package**を使用する`Email Events Only`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v2 auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com   target: email_event_only log_debug_info: false email_event_types: - value : all start_time: "2019-03-26T07:20:00.000Z" end_time: "2019-03-26T07:53:00.000Z" incremental: true out: ... ``` | パラメータ | 説明 | デフォルト値 | | --- | --- | --- | | type | salesforce_marketing_cloud_v2である必要があります | | client_id | Salesforce Marketing Cloudの`Client ID` | | client_secret | Salesforce Marketing Cloudの`Client Secret` | | auth_type | パッケージタイプ これは列挙型(**v1**, **v2**)で、**v1**は**Legacy package**、**v2**は**Enhanced Package**です | v1 | | tenant_auth_uri | テナント認証ベースURI(auth_type = v1の場合のみこのオプションを入力) これは2022年9月以降必須です。Marketing Cloudはレガシーエンドポイント[https://*.[exacttargetapis.com](http://exacttargetapis.com)]を廃止する予定です。 詳細: [https://help.salesforce.com/s/articleView?id=000356497](https://help.salesforce.com/s/articleView?id=000356497), [https://help.salesforce.com/s/articleView?id=000356498](https://help.salesforce.com/s/articleView?id=000356498) | | auth_uri | 認証ベースURI(auth_type = v2の場合のみこのオプションを入力) | | target | email_event_onlyである必要があります(この場合) | | log_debug_info | 有効にすると、リクエストIDを含む詳細なデバッグ情報がログに記録されます(デフォルト: false) | false | | email_event_types | インポートしたいイベントタイプのリスト。有効なオプションは次のとおりです: - value : all - value : bounce - value : click - value : forward - value : forwardOptIn - value : open - value : sent - value : survey - value : unsub | null | | start_time | この時間からデータを取り込むように設定します | null | | end_time | この時間までデータを取り込むように設定します | null | | incremental | 各スケジュール間でより新しいデータのみを取得したい場合は、このフラグをtrueに設定します | false | | maximum_time_out | 接続の最大タイムアウト(秒)。 大量のイベントの場合、SFMCのパフォーマンスを微調整するために使用されます。 許容値の範囲は60〜900です | ### Send **Legacy Package**を使用する`Send`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v1 tenant_auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com target: send log_debug_info: false start_time: "2019-03-26T07:20:00.000Z" end_time: "2019-03-26T07:53:00.000Z" incremental: true out: ... ``` **Enhanced Package**を使用する`Email Events Only`ターゲットの場合 ```yaml in: type: salesforce_marketing_cloud_v2 client_id: XXXXXX client_secret: XXXXXX auth_type: v2 auth_uri: https://your_tenant_specific_endpoint.auth.marketingcloudapis.com   target: send log_debug_info: false start_time: "2019-03-26T07:20:00.000Z" end_time: "2019-03-26T07:53:00.000Z" incremental: true out: ... ``` | パラメータ | 説明 | デフォルト値 | | --- | --- | --- | | type | salesforce_marketing_cloud_v2である必要があります | | client_id | Salesforce Marketing Cloudの`Client ID` | | client_secret | Salesforce Marketing Cloudの`Client Secret` | | auth_type | パッケージタイプ これは列挙型(**v1**, **v2**)で、**v1**は**Legacy package**、**v2**は**Enhanced Package**です | v1 | | tenant_auth_uri | テナント認証ベースURI(auth_type = v1の場合のみこのオプションを入力) これは2022年9月以降必須です。Marketing Cloudはレガシーエンドポイント[https://*.[exacttargetapis.com](http://exacttargetapis.com)]を廃止する予定です。 詳細: [https://help.salesforce.com/s/articleView?id=000356497](https://help.salesforce.com/s/articleView?id=000356497), [https://help.salesforce.com/s/articleView?id=000356498](https://help.salesforce.com/s/articleView?id=000356498) | | auth_uri | 認証ベースURI(auth_type = v2の場合のみこのオプションを入力) | | target | sendである必要があります(この場合) | | log_debug_info | 有効にすると、リクエストIDを含む詳細なデバッグ情報がログに記録されます(デフォルト: false) | false | | start_time | この時間からデータを取り込むように設定します | null | | end_time | この時間までデータを取り込むように設定します | null | | incremental | 各スケジュール間でより新しいデータのみを取得したい場合は、このフラグをtrueに設定します | false | | maximum_time_out | 接続の最大タイムアウト(秒)。 大量のイベントの場合、SFMCのパフォーマンスを微調整するために使用されます。 許容値の範囲は60〜900です |