# Marketo Export Integration

[Marketo Import Integrationについて詳しく見る](/ja/int/marketo-import-integration)。

Treasure Dataのジョブ結果をMarketoアカウントのレコードに直接書き込むコネクタを作成できます。TDクエリジョブの結果により、Marketoターゲットリストへの追加や既存ユーザーの更新などのユーザー追加が可能です。

Marketoへのエクスポートのサンプルワークフローについては、[Treasure Boxes](https://github.com/treasure-data/treasure-boxes/tree/master/td/marketo)をご覧ください。

# 前提条件

- [TD Toolbelt](https://toolbelt.treasuredata.com/)を含むTreasure Dataの基本知識。
- APIアクセスが有効化されたMarketoアカウント（Marketoコンソールから実行）。


# 新しい接続を作成する

1. **Integrations Hub** > **Catalog**に移動します。**Marketo**を選択します。


![](/assets/marketotile.663647a59e2e9da836a3819264228b9fb05248cf52749853c826f09ab25de70f.fbe2a812.png)

1. ダイアログが開きます。


![](/assets/marketoimport.aefe5bd733c9ee00014b97821d7e477b303fff29a96821bd4ca9e5e88d12d779.fbe2a812.png)

1. Marketoの認証情報を入力して、新しい接続情報を完成させます。


- **Marketo Account ID**（必須）：MarketoサービスID/Munchkin ID。
- **Marketo Client ID**（必須）：サービス固有のクライアントID。
- **Marketo Client Secret**（必須）：サービス固有のクライアントシークレット。


1. 新しく作成した接続の名前を入力し、**Done**を選択します。


# Marketo接続への結果出力を設定する

1. クエリエディタの上部にある`output results`を確認し、Marketo接続を選択します。


完了する必要があるいくつかのパラメータフィールドがあります。

| パラメータ | タイプ | 必須？ | 説明 |
|  --- | --- | --- | --- |
| Mode | string | yes | コネクタモードは`upload_leads`または`delete_leads`になります。デフォルトはupload_leadsです。 |
| Marketo Target List ID | string | yes | 新しいリードがインポートされるリストのID。リストは既存のリストから選択する必要があります。そうでない場合、新しいリードはMarketoの中央データベースに格納されます。 |
| Headers for importing data | string | no | エクスポート対象フィールドとしてヘッダーを指定します。クエリに加えて、ここでフィールド名を指定します。 |
| Marketo Partition Name | string | no | 新しいリードが属するパーティションの名前。 |
| Lookup Field | string | no | このフィールドの値はこのデータセットにバインドされ、データセットの検索や重複排除に使用できます。デフォルトはemailです。 |
| Retry limit | integer | no | コネクタが接続とデータ送信を試みるのを停止するまでの再試行回数。デフォルトの再試行制限は6です。 |
| Retry initial wait in milliseconds | integer | no | 回復可能なエラーが発生した場合の再試行間隔（ミリ秒）。デフォルトは1000です。 |
| Retry Max wait in milliseconds | integer | no | 再試行間の最大待機時間（ミリ秒）。デフォルトは`30000`です。 |
| Max HTTP waiting time in milliseconds | integer | no | 最大HTTP待機時間。デフォルトは3000000です。 |
| Max upload chunk size (in bytes) | integer | no | アップロードする最大チャンクサイズ。デフォルトは10000000です。 |
| Batch max wait in milliseconds | integer | no | バッチの最大待機時間。デフォルトは3600000です。 |
| Ignore Invalid Records | boolean | no | 削除時に無効なレコードを無視します。デフォルトはfalseです。 |
| Skip Invalid Records | boolean | no | アップロードデータ中の無効なレコードを無視します。デフォルトはtrueです。 |


## サンプル設定

![](/assets/screenshot-2025-01-10-at-00.14.27.f723816021568bda17f3091968a0004e685bf385fac145ed94e7f263607e7ab0.fbe2a812.png)

リストIDはMarketoコンソールで確認できます：

![](/assets/image-20191021-145434.f0f29d1e9d8a6473de9a9b30395771d9702bcdbd82fb5c0d666946c7af3c7733.fbe2a812.png)

# Audience Studioでセグメントをアクティベートする

Audience Studioでアクティベーションを作成することで、ターゲットプラットフォームにセグメントデータを送信することもできます。

1. **Audience Studio**に移動します。
2. 親セグメントを選択します。
3. ターゲットセグメントを開き、右クリックして**Create Activation**を選択します。
4. **Details**パネルで、アクティベーション名を入力し、前のセクションの設定パラメータに従ってアクティベーションを設定します。
5. **Output Mapping**パネルでアクティベーション出力をカスタマイズします。


![](/assets/ouput.b2c7f1d909c4f98ed10f5300df858a4b19f71a3b0834df952f5fb24018a5ea78.8ebdf569.png)

- Attribute Columns
  - **Export All Columns**を選択すると、変更を加えずにすべての列をエクスポートします。
  - **+ Add Columns**を選択して、エクスポート用の特定の列を追加します。Output Column Nameには、同じSourceカラム名が事前入力されます。Output Column Nameを更新できます。アクティベーション出力に新しい列を追加するには、**+ Add Columns**を選択し続けます。
- String Builder
  - **+ Add string**を選択して、エクスポート用の文字列を作成します。以下の値から選択します：
    - String：任意の値を選択。テキストを使用してカスタム値を作成します。
    - Timestamp：エクスポートの日時。
    - Segment Id：セグメントID番号。
    - Segment Name：セグメント名。
    - Audience Id：親セグメント番号。


1. **Schedule**を設定します。


![](/assets/snippet-output-connector-on-audience-studio-2024-08-28.a99525173709da1eb537f839019fa7876ffae95045154c8f2941b030022f792c.8ebdf569.png)

- スケジュールを定義する値を選択し、オプションでメール通知を含めます。


1. **Create**を選択します。


# （オプション）CLIを使用したExport Integration

[TD Toolbelt](https://toolbelt.treasuredata.com/)を使用して、CLIからMarketoへのクエリ結果のエクスポートをトリガーできます。td queryコマンドの--resultオプションを使用して、エクスポートジョブのパラメータを指定する必要があります。詳細については、[Querying and Importing Data to Treasure Data from the Command Line](https://docs.treasuredata.com/smart/project-product-documentation/querying-and-importing-data-to-treasure-data-from-the-command-line)を参照してください。

オプションの形式はJSONで、一般的な構造は次のとおりです：

For upload lead mode


```json
{"type": "marketo",  "account_id": "account id",  "client_id": "client id",  "client_secret": "client secret",  "mode": "upload_leads",  "list_id": "list id",  "batch_max_wait_msec": 3600000,  "upload_chunk_size_in_bytes": 10000000,  "retry_limit": 7,  "retry_initial_wait_msec": 1000,  "max_retry_wait_msec": 32000,  "http_timeout_millis": 300000,  "skips_invalid_records": true}# For delete mode{  "type": "marketo",  "account_id": "account id",  "client_id": "client id",  "client_secret": "client secret",  "mode": "delete_leads",  "list_id": "list id",  "batch_max_wait_msec": 3600000,  "upload_chunk_size_in_bytes": 10000000,  "retry_limit": 7,  "retry_initial_wait_msec": 1000,  "max_retry_wait_msec": 32000,  "http_timeout_millis": 300000,  "ignore_invalid_records": false}
```

### CLIパラメータ

| パラメータ | タイプ | 必須？ | 説明 |
|  --- | --- | --- | --- |
| type | string | yes | エクスポートタイプ。正確な値として「marketo」である必要があります。 |
| account_id | string | yes | このサービス/アカウントに必要な特定のMarketo Munchkin ID。 |
| client_id | string | yes | クライアントID。Marketoコンソールから取得可能。 |
| client_secret | string | yes | クライアントシークレット。Marketo コンソールから取得できます。 |
| mode | string | yes | コネクターモードは `upload_leads` または `delete_leads` のいずれかです。 |
| list_id | string | yes | 新しいリードがインポートされるリストの ID。リストは既存のリストである必要があります。そうでない場合、新しいリードは Marketo の中央データベースに送られます。 |
| file_format | string | no | 使用するファイル形式。デフォルト形式は CSV です。 |
| headers | string | no | エクスポート対象フィールドとしてヘッダーを指定します。クエリに加えて、ここでフィールド名を指定します。 |
| partition_name | string | no | 新しいリードが属するパーティションの名前。 |
| lookup_field | string | no | このフィールドの値はこのデータセットに関連付けられ、データセットの検索または重複排除に使用できます。デフォルトは email です。 |
| retry_limit | integer | no | コネクターが接続とデータ送信を試行するのを停止するまでの再試行回数。再試行制限のデフォルトは 6 です。 |
| retry_initial_wait_msec | integer | no | 回復可能なエラーが発生した場合の再試行間隔（ミリ秒）。デフォルトは 1000 です。 |
| max_retry_wait_msec | integer | no | 再試行間の最大待機時間（ミリ秒）。デフォルトは `30000` です。 |
| http_timeout_millis | integer | no | HTTP の最大待機時間。デフォルトは 3000000 です。 |
| upload_chunk_size_in_bytes | integer | no | アップロードする最大チャンクサイズ。デフォルトは 10000000 です。 |
| batch_max_wait_msec | integer | no | バッチの最大待機時間。デフォルトは 3600000 です。 |
| ignore_invalid_records | boolean | no | 削除時に無効なレコードを無視します。デフォルトは false です。 |
| skip_invalid_records | boolean | no | データアップロード時に無効なレコードを無視します。デフォルトは true です。 |


### 例


```bash
td query -d [database] -w 'SELECT id, email, company FROM marketo' --type presto --result '{"type":"marketo", "account_id":"[account id]", "client_id":"[client id]", "client_secret":"[client secret]", "mode":"upload_leads", "list_id":"[list id]", "retry_limit": 3}';
```

# リードリストを設定するクエリの記述

Treasure コンソール で、以下のクエリを実行し、`Output results` を Marketo との接続に出力します。このクエリは実際のユーザーと一致せず、デモンストレーション目的のみです。列名の詳細については、[Appendix](/int/marketo-export-integration) を参照してください。


```sql
SELECT
  td_global_id as tdglobalid,
  firstname,
  lastname,
  email,
  company
FROM (
  VALUES
    ('b1b065f5-1222-4a14-b151-379d49ec39e3', 'John', 'Doe', 'name+test1@treasure-data.com', 'Marketo Dummy Lead - DO NOT USE'),
    ('x1b065f5-1222-4a14-b151-379d49ec39e3', 'Janes', 'Doe', 'name+test2@treasure-data.com', 'Marketo Dummy Lead - DO NOT USE'),
    ('p1b065f5-1222-4a14-b151-379d49ec39e3', 'Tony', 'Doe', 'name+test3@treasure-data.com', 'Marketo Dummy Lead - DO NOT USE'),
    ('o1b065f5-1222-4a14-b151-379d49ec39e3', 'Bill', 'Adam', 'name+test4@treasure-data.com', 'Marketo Dummy Lead - DO NOT USE'),
  ('t1b065f5-1222-4a14-b151-379d49ec39e3', 'Dan', 'Steve', 'name+test5@treasure-data.com', 'Marketo Dummy Lead - DO NOT USE')
) tbl
  (
    td_global_id,
    firstname,
    lastname,
    email,
    company
)
```

このデモクエリには、ソーステーブルは必要ありません（この機能のテストを容易にするため）が、データベースを選択する必要があるため、"sample_datasets" または他の任意のテーブルを選択してください。

設定でデータヘッダーを指定したくない場合は、クエリでエイリアスを使用してクエリ結果の列名を変更できます。

### 例


```sql
SELECT
  an_email_column AS EMAIL,
  another_phone_column AS PHONE
FROM
  your_table;
```

前のコードサンプルでは、EMAIL と PHONE のヘッダーを持つ新しいデータセットを作成しています。

列名は大文字と小文字を区別しません。たとえば、`email` または `EMAIL` のいずれかを使用できます。

クエリは数秒で完了するはずです。完了したら、Marketo Console で新しいリードを確認してください。

![](/assets/image-20191021-145325.e5c9ae872920dc020631e83011f1760ce267fd991e014ae7485b3e4ea03f3fc8.fbe2a812.png)

# Appendix

## Marketo Leads Data

出力結果データは [Marketo のデータ仕様](http://developers.marketo.com/rest-api/lead-database/fields/field-types/) に従う必要があります。

たとえば、フィールドが Integer として設定されている場合、Treasure Data が Marketo に送信するデータは int に変換可能でなければなりません（1001aa は有効な整数ではありません）。

## Munchkin Account Information

Marketo リストをアップロードする前に、API 対応アカウントへのアクセスが必要です。Munchkin Account ID は Marketo の Admin ページから取得できます。

API アクセス用の新しいアカウントを有効化して作成する手順

1. [API-Only User](http://docs.marketo.com/display/public/DOCS/Create+an+API+Only+User) を作成します。
2. [API-Only User Role](http://docs.marketo.com/display/public/DOCS/Create+an+API+Only+User+Role) を作成します。
3. [Advanced List Import Permission on a Role](http://docs.marketo.com/display/public/DOCS/Enable+the+Advanced+List+Import+Permission+on+a+Role) を有効にします。
4. [Custom Service for Use with REST API](http://docs.marketo.com/display/public/DOCS/Create+a+Custom+Service+for+Use+with+ReST+API) を作成します。
5. "Web Service" メニューで Rest API のエンドポイントを確認します。そこで、API を使用するための client ID と client secret を見つけることができます。


![](/assets/image-20191021-145135.ba4107f8ad71bae8a1ad1f8738693333fee194aea9346a87f01fb0bece8a593f.fbe2a812.png)

## Preparing Data for Marketo Leads - Reference

- [Error code](http://developers.marketo.com/rest-api/error-codes/)
- [Partition Name](http://developers.marketo.com/blog/how-to-specify-lead-partitions-using-the-rest-api/)
- [FilterType/LookupField](http://developers.marketo.com/rest-api/lead-database/leads/#query)
- [Data Type for Marketo Lead fields](http://developers.marketo.com/rest-api/lead-database/fields/field-types/)
- [Standard Lead fields](http://developers.marketo.com/rest-api/lead-database/fields/list-of-standard-fields/) (API アクセスから利用可能)