🐏

Pythonを使ってMETA広告データをBigQueryに連携する方法

2025/01/19に公開

こんにちは、エンジニアのうさぎです👋

この記事では、META(旧Facebook)広告のデータをBigQueryに連携する方法について解説します。Python(Google Colab)を使用して、広告データを自動で取得し、BigQueryに格納する方法をステップバイステップで説明していきます。

この記事で解説すること

  • META広告データの取得方法
  • BigQueryへのデータ連携方法
  • Google Colabでの実装方法

必要な環境・認証情報

使用するツール

  • Google Colab
  • Google Cloud Platform(BigQuery)
  • META Business Manager

必要な認証情報

  • META API関連
    • アクセストークン
    • App ID
    • App Secret
    • 広告アカウントID
  • GCP関連
    • サービスアカウントキー(JSON)
    • プロジェクトID
    • データセットID

実装手順

1. 必要なライブラリのインストール

!pip install google-cloud-bigquery facebook_business

2. 基本的な実装の流れ

実装は大きく分けて以下の4つのステップで行います:

  • Google Driveのマウント
  • 認証設定(META API、BigQuery)
  • META広告データの取得
  • BigQueryへのデータ書き込み

3. コードの解説

まず、必要なライブラリをインポートします:

import os
import pandas as pd
from google.cloud import bigquery
from google.colab import drive
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.ad import Ad

Google Driveをマウントする関数:

def mount_drive():
    drive.mount('/content/drive')
    print("Google Driveがマウントされました。")

META広告データを取得する関数:

def get_meta_ads_data(access_token, app_id, app_secret, ad_account_id, days=30):
    # API認証
    FacebookAdsApi.init(app_id, app_secret, access_token)
    account = AdAccount(f'act_{ad_account_id}')

    # 取得する項目を定義
    fields = [
        'campaign_name', 'campaign_id',
        'adset_name', 'adset_id',
        'ad_name', 'ad_id',
        'impressions', 'clicks', 'spend',
        'date_start', 'date_stop'
    ]
    
    # データ取得
    insights = account.get_insights(
        fields=fields,
        params={
            'time_increment': 1,  # 日次データ
            'level': 'ad'         # 広告レベル
        }
    )
    
    return pd.DataFrame(insights)

BigQueryにデータを書き込む関数:

def save_to_bigquery(df, table_id):
    try:
        client = bigquery.Client()
        job = client.load_table_from_dataframe(df, table_id)
        job.result()
        print(f"データを書き込みました:{table_id}")
    except Exception as e:
        print(f"エラーが発生しました:{str(e)}")

使い方

  1. 認証情報を設定します:
# META API認証情報
ACCESS_TOKEN = 'your_access_token'
APP_ID = 'your_app_id'
APP_SECRET = 'your_app_secret'
AD_ACCOUNT_ID = 'your_ad_account_id'

# BigQuery設定
TABLE_ID = "your_project.your_dataset.your_table"
  1. 実行します:
# Google Driveをマウント
mount_drive()

# データ取得
df = get_meta_ads_data(ACCESS_TOKEN, APP_ID, APP_SECRET, AD_ACCOUNT_ID)

# BigQueryに保存
save_to_bigquery(df, TABLE_ID)

注意点

  • 認証情報は必ず適切に管理してください
  • 大量のデータを取得する場合は、API制限に注意が必要です
  • BigQueryの料金設定を確認してからご利用ください

まとめ

この記事では、META広告データをBigQueryに連携する基本的な方法を解説しました。このコードをベースに、必要に応じて取得項目や保存方法をカスタマイズしてください。

何か質問があればコメントでお気軽にどうぞ!

参考リンク

Discussion