Skip to content
Last updated

Airship Export Integration

Treasure Dataのジョブ結果をAirshipのオーディエンスリストに直接書き込むことができます。Airshipでは、これらのリストを使用して特定のユーザーをターゲットにすることができます。

前提条件

  • Treasure Dataの基本知識
  • Airship、Airshipオーディエンスリスト、属性、カスタムイベントの基本知識

Treasure Data Integration の静的 IP アドレス

セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。

リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/

制限事項

  • 最大1,000万レコードまでアップロードできます。
  • 最大100個のアップロードリストを作成できます。
  • APIの制限により、リストのコンテンツを上書きすることはできますが、リストに追加することはできません。

新しい認証の作成

Treasure Dataでは、クエリを実行する前にデータ接続を作成および設定する必要があります。データ接続の一部として、インテグレーションにアクセスするための認証情報を提供します。

  1. TD Consoleを開きます。
  2. Integrations Hub > Catalogに移動します。
  3. Catalog画面の右端にある検索アイコンをクリックし、Airshipと入力します。
  4. AirShipコネクタにカーソルを合わせ、Create Authenticationを選択します。

New Authenticationダイアログが開きます。

5. Base URLを入力します:

  1. 次のいずれかの認証方法を選択します
  • In the Airship project dashboard, select Settings > APIs & Integrations.
  • Enter the App key, App secret, and App master secret.

  1. 認証情報を入力します。カスタムイベントアップロードの認証の場合は、App keyを使用したアクセストークン方式が必要です。App key、App secret、tokenの取得方法については、以下を参照してください。
  2. 接続の名前を入力します。
  3. Continueを選択します。

データ接続でエクスポート結果を設定する

このインテグレーションは、ユーザーがAirshipにさまざまなタイプのデータを同期することをサポートします。

ConfigurationsOptionsDescription
Data TypeStatic ListAirship Audience Listsに静的リストをアップロードします(ターゲットが存在しない場合は、静的リストが自動的に作成されます)
Non-JSON AttributesAirshipのテキスト、数値、日時属性に値を同期します。
JSON AttributesAirshipのjson属性に値を同期します
Custom EventsAirshipにカスタムイベントを同期します

インテグレーションを設定するには:

  1. TD Consoleを開きます。
  2. Data Workbench > Queriesに移動します。
  3. New Queryをクリックして新しいクエリを作成するか、データのエクスポートに使用する予定の保存されたクエリを検索します。
  4. クエリエディタの上部にあるExport Resultsを選択します。

Airship Audience Listsに静的リストをアップロードする

以下のサンプルクエリを参照して、ユーザーとチャネルのリストをAirshipオーディエンスリストにアップロードするエクスポートジョブの設定方法を確認してください。

ParameterDescription
Data TypeStatic list
List Name (required)Audience listの名前
Description (optional)Audience listの説明
Skip Empty Records (optional)デフォルトはTrueです。クエリ結果に空またはnullの列が含まれている場合、その行はスキップされます。それ以外の場合、ジョブは失敗し、空のレコードを手動で削除する必要があります。

サンプルクエリ

SELECT identifier_type, identifier FROM table my_table

サンプルクエリ結果

identifier_type, identifiernamed_user,customer-42named_user,room-27ios_channel,5i4c91s5-9tg2-k5zc-m592150z5634web_channel,d132f5b7-abcf-4920-aeb3-9132ddac3d5aandroid_channel,52b2b587-0152-4134-a8a0-38ae6933c88aemail_channel,ab1a81e3-5af3-4c04-a7ae-d676960e6684open_channel,6bcf3e63-a38a-44d8-8b0d-2fb5941e74absms_channel,ab1a81e3-aaf3-ac04-a7ae-a676960e6684

Airshipのテキスト、数値、日時属性に値を同期する

以下のサンプルクエリを参照して、テキスト、数値、または日時属性の値をAirshipオーディエンスリストに同期する方法を確認してください。

ParameterDescription
Data TypeNon-JSON attributes
TargetNamed UsersまたはChannelのいずれかを選択します。
Action- Batch CSV upload -- Treasure Dataは、大量のレコードに対してBatch CSV uploadを推奨します。このモードは、カスタム属性の値の追加と更新にのみ使用されます。 - SetまたはRemove -- これらのオプションは、レコードごとに1回のアップロード呼び出しを使用します。これにより、Airship上でのデータの伝播が高速化されますが、全体的な実行時間は遅くなります。
Skip Empty Records (optional)デフォルトはTrueです。クエリ結果に空またはnullの列が含まれている場合、その行はスキップされます。それ以外の場合、ジョブは失敗し、空のレコードを手動で削除する必要があります。

Named Usersのサンプルクエリ

この例では、fav_colorとfav_sportはAirship上で属性キーとして定義されている必要があります。

SELECT n.named_user AS named_user,       a.fav_color as fav_color,       a.fav_sport as fav_sportFROM named_users n    JOIN attributes a        ON n.id = a.id

サンプルクエリ結果

named_user, fav_color, fav_sportcustomer-42, red, footballcustomer-22, black, tennis

Channelsのサンプルクエリ

この例では:

  • fav_color、fav_sportはAirship上で属性キーとして定義されている必要があります。
  • Identifier_typeは次のいずれかを指定します: amazon_channel、android_channel、channel、email_address、ios_channel、sms_id、web_channel
  • identifier_typeがsms_idの場合、追加情報が必要なため、sender列が必要です。(それ以外の場合、そのレコードは無効です。)
  • Identifer_valueはそのチャンネルのIDを指定します
SELECT c.channel_id AS identifier_value,       'email_address' AS identifier_type,       a.fav_color as fav_color,       a.fav_sport as fav_sportFROM channels c    JOIN attributes a        ON c.id = a.id

サンプルクエリ結果

identifier_type, identifier_value, fav_color, fav_sportemail_address, customer11@email.com, red, footballemail_address, customer21@email.com, black, football

Airship上のJSON属性に値を同期する

AirshipオーディエンスリストにJSON属性を同期する方法については、以下のサンプルクエリを参照してください。

パラメータ説明
Data TypeJSON Attributes
TargetNamed UsersまたはChannelのいずれかを選択
Action- SetまたはRemove -- これらのオプションは、レコードごとに単一のアップロードコールを使用します。これにより、Airship上でのデータの伝播が高速化される可能性がありますが、全体的な実行時間は遅くなります。
Attribute nameJSON属性の名前。一度に設定できる属性は1つのみです。
Skip Empty Records (optional)デフォルトはTrueです。クエリ結果に空またはnullの列が含まれている場合、その行はスキップされます。そうでない場合、ジョブは失敗し、空のレコードを手動で削除する必要があります。
Json Composer (optional)デフォルトはtrueです。Json composerは、提供されたプロパティフィールドからjson値を構成します。それ以外の場合は、有効なjson値を持つプロパティフィールドが必要です。プロパティフィールド名は、更新する属性名と同じである必要があります。

サンプルクエリ

この例では、統合はクエリの出力がピボットまたは水平形式で構造化されていることを想定しています。これは、各予約のデータが単一の行に表示され、その予約に関連するフライトのさまざまな属性を表す複数の列があることを意味します。たとえば、顧客が2つのフライトを持っている場合、出力は両方のフライトに関連するすべての詳細を単一の行にリストし、各フライトの属性に特別に指定された列を含みます(例: flights[0].departure_port、flights[1].departure_portなど)。

このアプローチは、各フライトの詳細が別々の行にリストされる垂直形式とは対照的です。ただし、バッチでレコードを収集する場合、オブジェクトの配列のレコードが垂直に記述されていると、同じオブジェクトに属する配列アイテムの収集が漏れる可能性があります。

統合は、Airshipに送信されるJSONオブジェクトを作成することに注意してください。json composerフラグがオフの場合、JSON形式の値を持つ「属性名」の列名が必要です。有効な値は属性としてAirshipに送信されます。

Json composerがオンの場合

WITH flights_with_index AS (
  SELECT
    f.reservation_id,
    f.departure_port,
    f.departure_time,
    f.arrival_port,
    f.arrival_time,
    ROW_NUMBER() OVER (
      PARTITION BY f.reservation_id
      ORDER BY f.departure_time
    ) - 1 AS flight_index
  FROM flights f
  JOIN reservations r
    ON f.reservation_id = r.reservation_id
)
SELECT
  'named_users' AS identifier_type,
  r.customer_name AS identifier_value,
  t.reservation_id AS instance_id,
  MAX(CASE WHEN t.flight_index = 0 THEN t.departure_port END) AS "flights[0].departure_port",
  MAX(CASE WHEN t.flight_index = 0 THEN t.departure_time END) AS "flights[0].departure_time",
  MAX(CASE WHEN t.flight_index = 0 THEN t.arrival_port END) AS "flights[0].arrival_port",
  MAX(CASE WHEN t.flight_index = 0 THEN t.arrival_time END) AS "flights[0].arrival_time",
  MAX(CASE WHEN t.flight_index = 1 THEN t.departure_port END) AS "flights[1].departure_port",
  MAX(CASE WHEN t.flight_index = 1 THEN t.departure_time END) AS "flights[1].departure_time",
  MAX(CASE WHEN t.flight_index = 1 THEN t.arrival_port END) AS "flights[1].arrival_port",
  MAX(CASE WHEN t.flight_index = 1 THEN t.arrival_time END) AS "flights[1].arrival_time"
FROM flights_with_index t
JOIN reservations r
  ON t.reservation_id = r.reservation_id
GROUP BY
  r.customer_name,
  t.reservation_id
ORDER BY
  instance_id;

結果

identifier_typeidentifier_valueinstance_idflights[0].departure_portflights[0].departure_timeflights[0].arrival_portflights[0].arrival_timeflights[1].departure_portflights[1].departure_timeflights[1].arrival_portflights[1].arrival_time
named_userscustomer-1rev1PDX2025-01-08 00:00:00.000LAX2025-01-09 00:00:00.000LAX2025-01-09 00:00:00.000PDX2025-01-10 00:00:00.000
named_userscustomer-2rev2SGN2025-01-08 00:00:00.000BKK2025-01-09 00:00:00.000BKK2025-01-09 00:00:00.000SGN2025-01-10 00:00:00.000
named_userscustomer-3rev3SGN2025-01-08 00:00:00.000TDN2025-01-09 00:00:00.000TDN2025-01-09 00:00:00.000SGN2025-01-10 00:00:00.000
named_userscustomer-4rev4BKK2025-01-09 00:00:00.000TST2025-01-10 00:00:00.000
named_userscustomer-5rev5ABC2025-01-09 00:00:00.000XTZ2025-01-10 00:00:00.000
named_userscustomer-6rev6SSN2025-01-09 00:00:00.000BKK2025-01-10 00:00:00.000

Json composerがオフの場合

SELECT
  named_user,
  instance_id,
  booking
FROM (
  VALUES
    (
      'customer-1',
      'u111',
      '{"flights":[{"departure_port":"PDX","departure_time":"2025-01-08 00:00:00.000","arrival_port":"LAX","arrival_time":"2025-01-09 00:00:00.000"},{"departure_port":"LAX","departure_time":"2025-01-09 00:00:00.000","arrival_port":"PDX","arrival_time":"2025-01-10 00:00:00.000"}]}'
    ),
    (
      'customer-2',
      'u222',
      '{"flights":[{"departure_port":"PDX","departure_time":"2025-01-08 00:00:00.000","arrival_port":"LAX","arrival_time":"2025-01-09 00:00:00.000"},{"departure_port":"LAX","departure_time":"2025-01-09 00:00:00.000","arrival_port":"PDX","arrival_time":"2025-01-10 00:00:00.000"}]}'
    )
) AS tbl(named_user, instance_id, booking);

結果

named_userinstance_idbooking
customer-1u111{"flights":[{"departure_port":"PDX","departure_time":"2025-01-08 00:00:00.000","arrival_port":"LAX","arrival_time":"2025-01-09 00:00:00.000"},{"departure_port":"LAX","departure_time":"2025-01-09 00:00:00.000","arrival_port":"PDX","arrival_time":"2025-01-10 00:00:00.000"}]}
customer-2u222{"flights":[{"departure_port":"PDX","departure_time":"2025-01-08 00:00:00.000","arrival_port":"LAX","arrival_time":"2025-01-09 00:00:00.000"},{"departure_port":"LAX","departure_time":"2025-01-09 00:00:00.000","arrival_port":"PDX","arrival_time":"2025-01-10 00:00:00.000"}]}

カスタムイベントをAirshipに同期

以下のサンプルクエリを参照して、カスタムイベントをAirshipに同期する方法を確認してください。

パラメータ説明
Data TypeCustom Events
Json Composer (optional)デフォルトはfalseです。有効なjson値を持つpropertiesフィールドが必要です。それ以外の場合、json composerは提供されたpropertiesフィールドからjson値を構成します。
Skip Empty Records (optional)デフォルトはTrueです。クエリ結果に空またはnullのカラムが含まれている場合、その行はスキップされます。それ以外の場合、ジョブは失敗し、空のレコードを手動で削除する必要があります。

サンプルクエリ

この例では、インテグレーションはクエリの出力がピボット形式または水平形式で構造化されることを想定しています。これは、各購入のデータが単一の行で表示され、その購入に関連付けられた異なる項目の異なる属性を表す複数のカラムがあることを意味します。たとえば、顧客が2つの項目を持っている場合、出力は両方の項目に関する関連するすべての詳細を単一の行にリストし、各項目の属性専用に指定されたカラム(例:items[0].text、items[1].textなど)があります。

このアプローチは、各項目の詳細が別々の行にリストされる垂直形式とは対照的です。ただし、バッチでレコードを収集する際、オブジェクトの配列のレコードが垂直に記述されている場合、同じオブジェクトに属する配列項目の収集に漏れが発生する可能性があります。

インテグレーションがAirshipに送信されるJSONオブジェクトを作成することに注意してください。

WITH items_with_index AS (
  SELECT
    f.purchase_id,
    f.text,
    f.price,
    ROW_NUMBER() OVER (
      PARTITION BY f.purchase_id
      ORDER BY f.text
    ) - 1 AS item_index
  FROM purchase_items f
)
SELECT
  r.identifier_type,
  r.identifier_value,
  r.name,
  r.interaction_id,
  r.interaction_type,
  r.brand AS "properties.brand",
  r.value,
  r.unique_id,
  r.occurred,
  MAX(CASE WHEN t.item_index = 0 THEN t.text END) AS "properties.items[0].text",
  MAX(CASE WHEN t.item_index = 0 THEN t.price END) AS "properties.items[0].price",
  MAX(CASE WHEN t.item_index = 1 THEN t.text END) AS "properties.items[1].text",
  MAX(CASE WHEN t.item_index = 1 THEN t.price END) AS "properties.items[1].price",
  MAX(CASE WHEN t.item_index = 2 THEN t.text END) AS "properties.items[2].text",
  MAX(CASE WHEN t.item_index = 2 THEN t.price END) AS "properties.items[2].price"
FROM items_with_index t
JOIN purchase r
  ON t.purchase_id = r.id
GROUP BY
  r.identifier_type,
  r.identifier_value,
  r.name,
  r.interaction_id,
  r.interaction_type,
  r.brand,
  r.value,
  r.unique_id,
  r.occurred;

サンプルクエリの結果

identifier_typeidentifier_valuenameinteraction_idinteraction_typeproperties.brandvalueunique_idoccurredproperties.items[0].textproperties.items[0].priceproperties.items[1].textproperties.items[1].priceproperties.items[2].textproperties.items[2].price
named_user_idcustomer-1purchase 1interaction 1urlBrand 110.5unique id 12025-01-09 00:00:00.000text 1 purchase 14.0text 2 purchase 12.6text 3 purchase 13.5
named_user_idcustomer-2purchase 2interaction 2urlBrand 234.0unique id 22025-01-09 00:00:00.000text 1 purchase 26.7text 2 purchase 24.9NULLNULL

Audience Studio で Segment をアクティベートする

Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。

  1. Audience Studio に移動します。
  2. parent segment を選択します。
  3. ターゲット segment を開き、右クリックして、Create Activation を選択します。
  4. Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
  5. Output Mapping パネルで activation 出力をカスタマイズします。

  • Attribute Columns
    • Export All Columns を選択すると、変更を加えずにすべての列をエクスポートできます。
    • + Add Columns を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。+ Add Columns を選択し続けて、activation 出力用の新しい列を追加します。
  • String Builder
    • + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
      • String: 任意の値を選択します。テキストを使用してカスタム値を作成します。
      • Timestamp: エクスポートの日時。
      • Segment Id: segment ID 番号。
      • Segment Name: segment 名。
      • Audience Id: parent segment 番号。
  1. Schedule を設定します。

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

batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。

クエリエクスポートジョブのスケジュール設定 (オプション)

結果エクスポートと組み合わせたスケジュールジョブを使用して、出力結果を定期的に特定のターゲット先に書き込むことができます。

Treasure Dataのスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。

2つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行することを要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。

たとえば、cronスケジュールが '0 0 1 * 1' の場合、「日」の仕様と「曜日」の仕様は矛盾しています。前者の仕様では毎月1日の深夜0時(00:00)に実行することを要求し、後者の仕様では毎週月曜日の深夜0時(00:00)に実行することを要求しているためです。この場合、後者の仕様が優先されます。

(オプション) Query Export ジョブをスケジュールする

Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。

Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。

2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。

例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。

TD Console を使用してジョブをスケジュールする

  1. Data Workbench > Queries に移動します

  2. 新しいクエリを作成するか、既存のクエリを選択します。

  3. Schedule の横にある None を選択します。

  4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

    ドロップダウン値説明
    Custom cron...Custom cron... の詳細を参照してください。
    @daily (midnight)指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。
    @hourly (:00)毎時 00 分に実行します。
    Noneスケジュールなし。

Custom cron... の詳細

Cron 値説明
0 * * * *1 時間に 1 回実行します。
0 0 * * *1 日 1 回午前 0 時に実行します。
0 0 1 * *毎月 1 日の午前 0 時に 1 回実行します。
""スケジュールされた実行時刻のないジョブを作成します。
 *    *    *    *    *
 -    -    -    -    -
 |    |    |    |    |
 |    |    |    |    +----- day of week (0 - 6) (Sunday=0)
 |    |    |    +---------- month (1 - 12)
 |    |    +--------------- day of month (1 - 31)
 |    +-------------------- hour (0 - 23)
 +------------------------- min (0 - 59)

次の名前付きエントリを使用できます:

  • Day of Week: sun, mon, tue, wed, thu, fri, sat.
  • Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:

フィールド値 例の説明
各フィールドに対して上記で表示された制限内の単一の値。
フィールドに基づく制限がないことを示すワイルドカード '*''0 0 1 * *'毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
範囲 '2-5' フィールドの許可される値の範囲を示します。'0 0 1-10 * *'毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。
カンマ区切りの値のリスト '2,3,4,5' フィールドの許可される値のリストを示します。0 0 1,11,21 * *'毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
周期性インジケータ '*/5' フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。'30 */2 1 * *'毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 '0 0 */5 * *' は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。
'*' ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています '2,*/5,8-10''0 0 5,*/10,25 * *'毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
  1. (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

クエリを実行する

クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。

設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。

(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

Audience Studio で Segment をアクティベートする

Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。

  1. Audience Studio に移動します。
  2. parent segment を選択します。
  3. ターゲット segment を開き、右クリックして、Create Activation を選択します。
  4. Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
  5. Output Mapping パネルで activation 出力をカスタマイズします。

  • Attribute Columns
    • Export All Columns を選択すると、変更を加えずにすべての列をエクスポートできます。
    • + Add Columns を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。+ Add Columns を選択し続けて、activation 出力用の新しい列を追加します。
  • String Builder
    • + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
      • String: 任意の値を選択します。テキストを使用してカスタム値を作成します。
      • Timestamp: エクスポートの日時。
      • Segment Id: segment ID 番号。
      • Segment Name: segment 名。
      • Audience Id: parent segment 番号。
  1. Schedule を設定します。

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

batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。

Workflowでエクスポート結果を設定する (オプション)

Treasure Workflow内で、データコネクタを使用してデータをエクスポートすることを指定できます。

詳細については、TD Toolbeltを使用してワークフローでデータをエクスポートするを参照してください。

Static List用のWorkflow設定サンプル

timezone: UTC
_export:
  td:
    database:
     sample_datasets

+td-result-into-target:
  td>: queries/sample.sql
  result_connection: airship  result_settings:
    list_name: 'td uploaded list'    list_description: 'ios and android channels'

Attributes Update用のWorkflow設定サンプル

timezone: UTC
_export:
  td:
   database: sample_datasets

+td-result-into-target:
  td>: queries/sample.sql
  result_connection: airship
  result_settings:
    data_type: non_json_attributes
    non_json_target: named_users
    non_json_action: batch_csv
    skip_invalid_nonjson_att: true

Custom Events用のWorkflow設定サンプル

timezone: UTC

_export:
  td:
    database: sample_datasets

+td-result-into-target:
  td>: queries/sample.sql
  result_connection: airship
  result_settings:
    data_type: custom_events
    json_composer_custom_events: true
    skip_invalid_custom_events: true

CLIによるエクスポートの実行 (オプション)

Airship Export Integration CLIを参照してください。

関連項目

Airship APIドキュメント: