本篇會帶大家撈取 Meta 廣告數據,設定完成後每天會自動抓取數據,並存在 Google Sheet 中!我們使用的是 Google Sheet 內建的 App Script,完全不需要付任何的費用,而且只需要一次設定,之後每天都可以輕鬆看廣告數據報表囉!
Table
一、取得 Meta 廣告數據權限
步驟 1:前往 Meta for Developers
連結:https://developers.facebook.com/
1. 點擊右上角的建立應用程式

2. 填入應用名稱,我這邊使用 MaxDemo,你可以改寫成你希望的命名

3. 使用案例:我們這邊選擇「廣告和盈利 > 使用行銷 API 衡量廣告成效資料」,因為我們這次是要撈取廣告資料,如果你有其他需求這邊是可以複選的!

4. 商家:如果沒有商家,這邊可以先不選,這部分之後是可以調整的
5. 完成後,就回來到主控版的畫面!接下來進入「應用程式設定 > 基本資料」,把「應用程式編號」和「應用程式密鑰」好好保存起來,他就像你的帳號密碼,待會讀取資料時會使用到!

二、Google Apps Script 設定
1. 創建新的 Google Sheet,並創建 App script ,選擇「Extensions > Apps Script」

2. 將以下 code 貼進 App script 裡面:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
const clientId = 'xxxxxxxxxxxxx' const clientSecret = 'xxxxxxxxxxxxx' const adAccountId = 'act_xxxxxxxxxxxxx'; // === 1. OAuth2 設定 === function getService() { return OAuth2.createService('facebook') .setAuthorizationBaseUrl('https://www.facebook.com/v18.0/dialog/oauth') .setTokenUrl('https://graph.facebook.com/v18.0/oauth/access_token') .setClientId(clientId) .setClientSecret(clientSecret) .setCallbackFunction('authCallback') .setPropertyStore(PropertiesService.getUserProperties()) .setScope('ads_read') .setTokenHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }); } // === 2. 認證流程:第一次授權用 === function authorize() { const service = getService(); const url = service.getAuthorizationUrl(); Logger.log('🔗 授權連結:' + url); } // === 3. 認證成功後回呼的 Function(系統自動觸發)=== function authCallback(request) { const service = getService(); const isAuthorized = service.handleCallback(request); return HtmlService.createHtmlOutput(isAuthorized ? '✅ 授權成功!' : '❌ 授權失敗'); } function getFacebookAdData() { const service = getService(); if (!service.hasAccess()) { Logger.log('⚠️ 尚未授權,請先執行 authorize()'); return; } const fields = [ 'date_start', 'date_stop', 'campaign_name', 'adset_name', 'ad_name', 'impressions', 'inline_link_clicks', 'spend', ]; const params = `?fields=${fields.join(',')}` + `&level=account` + `&date_preset=yesterday&limit=100`; const baseUrl = `https://graph.facebook.com/v18.0/${adAccountId}/insights`; let nextUrl = `${baseUrl}${params}`; const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('FacebookAds') || SpreadsheetApp.getActiveSpreadsheet().insertSheet('FacebookAds'); // ⬆️ 若為空表,建立欄位標題 const header = [ 'DATE START', 'DATE STOP', 'CAMPAIGN NAME', 'ADSET NAME', 'AD NAME', 'IMPRESSIONS', 'LINK CLICKS', 'SPEND' ]; if (sheet.getLastRow() === 0) { sheet.appendRow(header); } // 📦 拉取 API 資料 + 去重 + 寫入 while (nextUrl) { const response = UrlFetchApp.fetch(nextUrl, { headers: { Authorization: 'Bearer ' + service.getAccessToken() }, muteHttpExceptions: true }); const result = JSON.parse(response.getContentText()); if (!result.data) { Logger.log(`❌ 無法取得資料:${JSON.stringify(result.error)}`); break; } result.data.forEach(row => { const key = [ row.date_start, row.campaign_name || '', row.adset_name || '', row.ad_name || '' ].map(v => String(v).trim()).join('|'); const rowData = [ row.date_start || '', row.date_stop || '', row.campaign_name || '', row.adset_name || '', row.ad_name || '', row.impressions || '', row.inline_link_clicks || '', row.spend || '' ]; sheet.appendRow(rowData); Logger.log(`✅ 寫入:${key}`); }); nextUrl = result.paging?.next || null; } Logger.log('🎯 完成:已寫入昨天資料,無重複'); } |
前面三行的資料是要替換成你的資料:
- clientId 和 clientSecret 是我們在剛剛從 Meta Developers 獲得的「應用程式編號」和「應用程式密鑰」
- adAccountId 是你要撈取哪一個廣告帳號,可以從 Meta 廣告後台的網址上取得,會有 act=xxxxxxxxxxxxx

三、設定 OAuth 建立自動更新的 Access Token
為了讓 Google Apps Script 能長期穩定撈取 Meta 廣告數據,不需每隔幾天手動更新 Access Token,因此需要用 OAuth 機制自動取得與刷新授權,設定方式很簡單:
1. 首先回到剛剛的 Meta Developers 頁面,把我們底下的網址貼在 「商家專用 Facebook 登入 > 設定 > 有效的 OAuth 重新導向 URI」,貼上此網址 https://script.google.com/macros/d/{SCRIPT_ID}/usercallback
記得要把網址中間的 SCRIPT_ID 換成你的 script id,這個可以在你 app script 的網址中找到

2. 接下來要在 App script 建立 OAuth library,這個 library 是由 Google apps-script-oauth2 提供的,載入方式點擊 Libraries,然後輸入 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF,點擊 Look up,點擊 add 就完成囉!

3. 運行 app script 裡面的 authorize,會得到授權連結,點擊進入後就會到達以下畫面

4. 運行 app script 裡面的 getFacebookAdData,就可以在 google sheet 裡面看到這個資料囉!

四、定時任務設定(Triggers)
最後我們只需要設定定時任務,就可以每天早上看到目前 Meta 廣告後台的數據囉!
- 點擊左邊側邊欄的時鐘 > 點擊 add trigger > 選擇 getFacebookAdData > 選擇 time driven > 選擇每日運行
- 每日運行的時間你可以設定,我這邊是選擇預設的半夜 12:00-1:00 之間

最後
嗨,我是 Max 👋🏻 熱於分享與交流;左手寫數據分析,右手寫程式開發,相信著數據與工程的結合能驅動無限的價值。
除了 Blog 外,想認識的朋友歡迎約個 30 分鐘 Online Coffee 聊聊 ☕
感謝收看「零成本,每天定時撈取 Meta 廣告數據」,每篇文章都是花了不少時間整理,希望有幫助到你 😃