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 |
有効期間の長いユーザー アクセス トークン(更新トークンとも呼ばれます)。 |
clientID
と clientSecret
を取得する手順は次のとおりです。
- アプリタイプ
Business
で Facebook デベロッパー アプリを作成します。 - Facebook App ダッシュボードで、[App Settings] > [Basic] をクリックして、アプリ ID とアプリに対応するアプリ シークレットを見つけます。
有効期間の長いユーザー アクセス トークン(更新トークン)を取得する手順は次のとおりです。
Google Cloud コンソールで、Facebook 広告の転送を作成するの手順を実施します。
[データソースの詳細] セクションで、[更新トークン] フィールドの後に表示されているリダイレクト URI をコピーします。
Facebook App ダッシュボードをクリックし、[Facebook login for Business] セクションで [Set up] をクリックします。
[Settings] ページで、[Valid OAuth Redirect URIs] フィールドにリダイレクト URL を入力し、[Save] をクリックします。
Google Cloud コンソールに戻ります。[データソースの詳細] セクションで、[承認] をクリックします。Facebook 認証ページにリダイレクトされます。
Facebook デベロッパー アプリを選択して、BigQuery Data Transfer Service に接続するアカウントを承認します。
完了したら、[OK] をクリックして Google Cloud コンソールに戻ります。有効期間の長いユーザー アクセス トークンが転送構成に挿入されます。
有効期間の長いユーザー アクセス トークンは 60 日後に期限切れになります。新しい有効期間の長いユーザー アクセス トークンを取得する方法については、制限事項をご覧ください。
更新トークンの選択肢
または、次のいずれかの方法で取得した更新トークンを、データ転送の作成時に指定することもできます。
- Graph API を使用して有効期間の長いユーザー アクセス トークンを生成します。データ転送用の有効なトークンには、
ads_management
、ads_read
、business_management
権限が必要です。 - システム ユーザー トークンを生成します。システム ユーザー トークンを使用すると、広告アカウントなどのアセットを手動で追加して、データ転送に含めることができます。システム ユーザー トークンの有効期限が切れている場合は、新しい認証情報を使用して転送構成を手動で更新する必要があります。システム ユーザー トークンを作成するときに、有効期限のないトークンを作成することもできます。詳細については、サポートされているアクセス トークンをご覧ください。
BigQuery の前提条件
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- データを保存する BigQuery データセットを作成します。
- Pub/Sub の転送実行通知を設定する場合は、
pubsub.topics.setIamPolicy
Identity and Access Management(IAM)権限があることを確認します。メール通知のみを設定する場合は、Pub/Sub 権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。
必要な BigQuery のロール
転送の作成に必要な権限を取得するには、BigQuery 管理者(roles/bigquery.admin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
転送を作成するには、次の権限が必要です。
-
ユーザーに対する
bigquery.transfers.update
-
ターゲット データセットに対する
bigquery.datasets.get
-
ターゲット データセットに対する
bigquery.datasets.update
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Facebook 広告のデータ転送を作成する
次のオプションのいずれかを選択します。
コンソール
Google Cloud コンソールの [データ転送] ページに移動します。
[転送を作成] をクリックします。
[ソースタイプ] セクションの [ソース] で [Facebook 広告] を選択します。
[データソースの詳細] セクションで、次のようにします。
- [Client ID] にアプリ ID を入力します。
- [クライアント シークレット] に、アプリ シークレットを入力します。
[更新トークン] で [承認] をクリックして、有効期間の長いユーザー アクセス トークン ID を入力します。 すでに更新トークンまたはシステム ユーザー トークンがある場合は、このフィールドに更新トークンを直接入力することもできます。
有効期間の長いユーザー アクセス トークンを取得する方法については、Facebook 広告の前提条件をご覧ください。
[転送先の設定] セクションの [データセット] には、データを保存するために作成したデータセットを選択します。
[転送構成名] セクションの [表示名] に、データ転送の名前を入力します。
[スケジュール オプション] セクションで、次の操作を行います。
[繰り返しの頻度] リストで、この転送の実行頻度を指定するオプションを選択します。カスタムの繰り返しの頻度を指定するには、[カスタム] を選択します。[オンデマンド] を選択した場合、手動で転送をトリガーすると、この転送が実行されます。
必要に応じて、[すぐに開始可能] を選択するか、[設定した時刻に開始] を選択して開始日と実行時間を指定します。
省略可: [サービス アカウント] メニューで、Google Cloud プロジェクトに関連付けられたサービス アカウントからサービス アカウントを選択します。選択したサービス アカウントには、このデータ転送の実行に必要なロールが付与されている必要があります。
フェデレーション ID でログインした場合、データ転送を作成するにはサービス アカウントが必要です。Google アカウントでログインした場合、データ転送用のサービス アカウントは省略可能です。
データ転送でサービス アカウントを使用する方法の詳細については、サービス アカウントの使用をご覧ください。
省略可: [通知オプション] セクションで、次のようにします。
- メール通知を有効にするには、[メール通知] をクリックします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
- このデータ転送の Pub/Sub 転送実行通知を有効にするには、[Pub/Sub 通知] をクリックします。トピック名を選択するか、[トピックを作成] をクリックしてトピックを作成します。
[保存] をクリックします。
このデータ転送を実行すると、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_management
、ads_read
、business_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 に転送する際に料金は発生しません。
次のステップ
- BigQuery Data Transfer Service の詳細を確認する。
- 構成や実行履歴の表示など、転送の操作の詳細を確認する。
- クロスクラウドの操作でデータを読み込む方法を学習する。