Meta広告レポート 最小実装サンプル
確認日 2026-10-04

含まれるもの
Report.gs: 架空データから表を作る純粋関数とGoogle Sheets書き込み関数
LiveAdapter.gs: 任意のMeta API読み取り接続例（実サービス未試験）
fixture.json: 個人情報を含まない架空入力
expected-report.csv / .json: オフラインで実際に生成した表
 test-offline.cjs: Node.js標準モジュールのみの18ケース試験
 offline-test-results.json: 実行日時と結果

オフライン再現
このフォルダー内で node test-offline.cjs を実行する。
MetaにもGoogleにも通信せず、期待表と試験結果ファイルを生成する。
v99.0 / OFFLINE_PLACEHOLDERは試験用の架空値。実APIで使わない。

GASデモ
空の検証用スプレッドシートに紐づくApps ScriptにReport.gsをコピーし、
内容と要求権限を確認してdemoMetaReportを選ぶ。
実行すると架空データの新規Meta_READY_...タブを作る。
Google環境での実行はこの記事の検証では実施していない。

任意のAPI接続
LiveAdapter.gsは既存の承認済み読み取り接続がある開発担当向け。
アプリ作成、OAuth許諾、トークン発行・保存、権限設定は行わない。
META_ACCOUNT_ID / META_API_VERSION / META_TOKEN / META_TIMEZONE /
META_CURRENCY / META_SPREADSHEET_IDを既存のスクリプトプロパティから読む。
実際の対応バージョン・認証方式・必要権限・審査を現行公式資料で確認すること。
プロパティはコード編集者等から秘密を隔離する保管庫ではない。
URLに認証情報が含まれるのでURL/プロパティ/応答をログへ出さない。
App Secret Proof等を要求する環境への追加対応は含まない。

範囲
単一アカウント、単一通貨、日別・広告別、内訳なし。
消化額、表示回数、リンククリック、CTR、CPCだけ。
成果帰属、CPA、ROAS、税/管理費、複数通貨変換は含めない。
直近7日再取得はこの例の更新方針で、Metaの確定・学習基準ではない。
各実行は新規スナップショット。過去タブを合算しない。
継続運用には保持期間/削除手順/通知/非同期大量取得等を別に設計する。

検証
Node.js v24.19.0で純粋関数と模擬通信の18試験が通過。
実Meta API、GASのSpreadsheetApp/UrlFetchApp/PropertiesService/LockService、
認証、実広告管理画面照合、定期トリガーは未試験。
