Facebook 広告の転送をスケジュールする

Facebook 広告用の BigQuery Data Transfer Service コネクタを使用すると、Facebook 広告から BigQuery への定期的な読み込みジョブを自動的にスケジュールし、管理できます。

制限事項

Facebook 広告データの転送には、次の制限があります。

  • Facebook 広告データの定期的な転送の最小間隔は 24 時間です。デフォルトの定期的なデータ転送間隔は 24 時間です。
  • Facebook 広告用 BigQuery Data Transfer Service は、固定のテーブルセットのみをサポートしています。カスタム レポートはサポートされていません。
  • Facebook 広告データの転送は最大 6 時間です。この最大時間を超えると、転送が失敗します。
  • 増分転送は、AdInsights テーブルと AdInsightsActions テーブルではサポートされていません。AdInsights テーブルと AdInsightsActions テーブルを含むデータ転送を作成し、スケジュール オプションで日付を指定すると、その日付に対して利用可能なすべてのデータが転送されます。
  • BigQuery Data Transfer Service では、AdInsights テーブルと AdInsightsActions テーブルへの 1 日の更新ウィンドウがサポートされます。更新ウィンドウとは、データ転送でソースデータを取得する日数を指します。データ転送を初めて実行する際に、更新ウィンドウ内で利用可能なすべてのソースデータを取得します。
  • Facebook 広告の転送に必要な有効期間の長いユーザー アクセス トークンは、60 日後に期限切れになります。

    有効期間の長いユーザー アクセス トークンの有効期限が切れた場合は、データ転送の詳細に移動して [編集] をクリックすると、新しいトークンを取得できます。転送の編集ページで、Facebook 広告の前提条件の同じ手順に沿って、新しい有効期間の長いユーザー アクセス トークンを生成します。

Facebook 広告の転送からのデータの取り込み

Facebook 広告から BigQuery にデータを転送すると、データは日付でパーティション分割された BigQuery テーブルに読み込まれます。データが読み込まれるテーブル パーティションは、データソースの日付に対応します。同じ日付の複数の転送をスケジュールすると、BigQuery Data Transfer Service により、対象の日付のパーティションが最新のデータで上書きされます。同じ日に複数回の転送やバックフィルを実行しても、データは重複せず、他の日付のパーティションに対する影響はありません。

AdInsights テーブルと AdInsightsAction テーブルの場合、データが読み込まれるテーブル パーティションは、データソースの日付に対応します。

AdAccounts テーブルの場合、スナップショットは 1 日に 1 回取得され、最後の転送実行日付のパーティションに保存されます。更新ウィンドウは AdAccounts テーブルには適用されません。

始める前に

以下のセクションでは、Facebook 広告データの転送を作成する前に必要な手順について説明します。

Facebook 広告の前提条件

Facebook 広告データの転送を作成する場合は、Facebook 広告について次の情報を用意してください。

Facebook 広告パラメータ 説明
clientID OAuth 2.0 クライアントのアプリ ID 名。
clientSecret OAuth 2.0 クライアントのアプリ シークレット。
refreshToken 有効期間の長いユーザー アクセス トークン(更新トークンとも呼ばれます)。

clientIDclientSecret を取得する手順は次のとおりです。

  1. アプリタイプ BusinessFacebook デベロッパー アプリを作成します。
  2. Facebook App ダッシュボードで、[App Settings] > [Basic] をクリックして、アプリ ID とアプリに対応するアプリ シークレットを見つけます。

有効期間の長いユーザー アクセス トークン(更新トークン)を取得する手順は次のとおりです。

  1. Google Cloud コンソールで、Facebook 広告の転送を作成するの手順を実施します。

  2. [データソースの詳細] セクションで、[更新トークン] フィールドの後に表示されているリダイレクト URI をコピーします。

    リダイレクト URI をコピーする

  3. Facebook App ダッシュボードをクリックし、[Facebook login for Business] セクションで [Set up] をクリックします。

    Facebook Login for Business の構成を行います

  4. [Settings] ページで、[Valid OAuth Redirect URIs] フィールドにリダイレクト URL を入力し、[Save] をクリックします。

  5. Google Cloud コンソールに戻ります。[データソースの詳細] セクションで、[承認] をクリックします。Facebook 認証ページにリダイレクトされます。

    有効期間の長いユーザー アクセス トークンを生成する

  6. Facebook デベロッパー アプリを選択して、BigQuery Data Transfer Service に接続するアカウントを承認します。

  7. 完了したら、[OK] をクリックして Google Cloud コンソールに戻ります。有効期間の長いユーザー アクセス トークンが転送構成に挿入されます。

有効期間の長いユーザー アクセス トークンは 60 日後に期限切れになります。新しい有効期間の長いユーザー アクセス トークンを取得する方法については、制限事項をご覧ください。

更新トークンの選択肢

または、次のいずれかの方法で取得した更新トークンを、データ転送の作成時に指定することもできます。

BigQuery の前提条件

必要な BigQuery のロール

転送の作成に必要な権限を取得するには、BigQuery 管理者roles/bigquery.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

転送を作成するには、次の権限が必要です。

  • ユーザーに対する bigquery.transfers.update
  • ターゲット データセットに対する bigquery.datasets.get
  • ターゲット データセットに対する bigquery.datasets.update

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Facebook 広告のデータ転送を作成する

次のオプションのいずれかを選択します。

コンソール

  1. Google Cloud コンソールの [データ転送] ページに移動します。

    [データ転送] に移動

  2. [転送を作成] をクリックします。

  3. [ソースタイプ] セクションの [ソース] で [Facebook 広告] を選択します。

  4. [データソースの詳細] セクションで、次のようにします。

    • [Client ID] にアプリ ID を入力します。
    • [クライアント シークレット] に、アプリ シークレットを入力します。
    • [更新トークン] で [承認] をクリックして、有効期間の長いユーザー アクセス トークン ID を入力します。 すでに更新トークンまたはシステム ユーザー トークンがある場合は、このフィールドに更新トークンを直接入力することもできます。

      有効期間の長いユーザー アクセス トークンを取得する方法については、Facebook 広告の前提条件をご覧ください。

  5. [転送先の設定] セクションの [データセット] には、データを保存するために作成したデータセットを選択します。

  6. [転送構成名] セクションの [表示名] に、データ転送の名前を入力します。

  7. [スケジュール オプション] セクションで、次の操作を行います。

    • [繰り返しの頻度] リストで、この転送の実行頻度を指定するオプションを選択します。カスタムの繰り返しの頻度を指定するには、[カスタム] を選択します。[オンデマンド] を選択した場合、手動で転送をトリガーすると、この転送が実行されます。

    • 必要に応じて、[すぐに開始可能] を選択するか、[設定した時刻に開始] を選択して開始日と実行時間を指定します。

  8. 省略可: [サービス アカウント] メニューで、Google Cloud プロジェクトに関連付けられたサービス アカウントからサービス アカウントを選択します。選択したサービス アカウントには、このデータ転送の実行に必要なロールが付与されている必要があります。

    フェデレーション ID でログインした場合、データ転送を作成するにはサービス アカウントが必要です。Google アカウントでログインした場合、データ転送用のサービス アカウントは省略可能です。

    データ転送でサービス アカウントを使用する方法の詳細については、サービス アカウントの使用をご覧ください。

  9. 省略可: [通知オプション] セクションで、次のようにします。

    • メール通知を有効にするには、[メール通知] をクリックします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
    • このデータ転送の Pub/Sub 転送実行通知を有効にするには、[Pub/Sub 通知] をクリックします。トピック名を選択するか、[トピックを作成] をクリックしてトピックを作成します。
  10. [保存] をクリックします。

このデータ転送を実行すると、BigQuery Data Transfer Service によって次のテーブルにデータが自動的に入力されます。

テーブル名 説明
AdAccounts ユーザーが使用可能な広告アカウント。
AdInsights すべての広告アカウントの広告インサイト レポート。
AdInsightsActions すべての広告アカウントの広告インサイト アクション レポート。

bq

bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

ここで

  • PROJECT_ID(省略可): Google Cloud プロジェクト ID。--project_id で特定のプロジェクトを指定しない場合は、デフォルトのプロジェクトが使用されます。
  • DATA_SOURCE: データソース(例: facebook-ads)。
  • DISPLAY_NAME: データ転送構成の表示名。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
  • DATASET: データ転送構成のターゲット データセット。
  • PARAMETERS: 作成されるデータ転送構成のパラメータを JSON 形式で指定します。例: --params='{"param":"param_value"}'。Facebook 広告の転送のパラメータは次のとおりです。
    • connector.authentication.oauth.clientId: OAuth 2.0 クライアントのアプリ ID 名。
    • connector.authentication.oauth.clientSecret: OAuth 2.0 クライアントのアプリ シークレット。
    • connector.authentication.oauth.refreshToken: 有効期間の長いトークン ID。

たとえば、次のコマンドは、必要なパラメータすべてを指定して、デフォルト プロジェクトに Facebook 広告のデータ転送を作成します。

bq mk \
--transfer_config \
--target_dataset=mydataset \
--data_source=facebook_ads \
--display_name='My Transfer' \
--params='{"connector.authentication.oauth.clientId": "1650000000",
    "connector.authentication.oauth.clientSecret":"TBA99550",
    "connector.authentication.oauth.refreshToken":"abcdef"}'

API

projects.locations.transferConfigs.create メソッドを使用して、TransferConfig リソースのインスタンスを指定します。

転送構成のトラブルシューティング

Facebook 広告のデータ転送の設定に問題がある場合は、次のトラブルシューティング手順を試してください。

  • Facebook アクセス トークン デバッガを使用して、ユーザー アクセス トークンの有効期限が切れていないかどうかを確認します。有効期間の長いユーザー アクセス トークンは 60 日後に期限切れになります。有効期間の長いユーザー アクセス トークンの有効期限が切れた場合は、転送の詳細に移動し、[編集] をクリックして転送の構成を変更します。転送の編集ページで、Facebook 広告の前提条件の同じ手順に沿って新しい転送を生成します。
  • 必要な権限(ads_managementads_readbusiness_management)で有効期間の長いユーザー アクセス トークンが生成されていることを確認します。生成されていない場合は、Facebook 広告の前提条件の手順に沿って、新しい有効期間の長いユーザー アクセス トークンを生成します。
  • Facebook アプリ ダッシュボードの [必要な操作] タブで、注意が必要な項目を確認してください。

Meta API のレート制限エラーに関連する次のエラー メッセージが表示される場合があります。

エラー: There have been too many calls from this ad-account. Wait a bit and try again.
解決策: 同じアプリまたは認証情報を使用している並列ワークフローがないことを確認します。これらのエラーが解消されない場合は、権限を高度なアクセスにアップグレードして、レート制限の割り当てを増やしてみてください。詳しくは、Marketing API のレート制限をご覧ください。

モニタリング指標に関する一般的なメッセージ

BigQuery Data Transfer Service のモニタリング指標を確認して、データ転送エラーの原因を特定することもできます。次の表に、Facebook 広告データの転送に関する一般的な ERROR_CODE メッセージを示します。

エラー 説明
INVALID_ARGUMENT 指定された構成が無効です
PERMISSION_DENIED 認証情報が無効です
UNAUTHENTICATED 認証が必要です
SERVICE_UNAVAILABLE サービスが一時的にこのデータ転送を処理できません
DEADLINE_EXCEEDED データ転送が最大期間である 6 時間以内に完了しませんでした
NOT_FOUND リクエストされたリソースが見つかりません
INTERNAL 他の原因によりコネクタが失敗しました
RESOURCE_EXHAUSTED データソースの割り当て量または上限に到達しました

料金

この機能のプレビュー版では、Facebook 広告データを BigQuery に転送する際に料金は発生しません。

次のステップ