You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用脚本获取Google Ads账户总账单费用及同步至Airtable

获取Google Ads账户广告系列每日总费用及同步至Airtable方案

一、Google Ads API获取每日费用示例(JS版)

使用官方google-ads-api npm包对接API,核心通过GAQL(Google Ads Query Language)按日期+广告系列维度聚合费用数据。

1. 前置准备

  • 安装依赖:npm install google-ads-api
  • 完成Google Ads API控制台认证配置(获取客户ID、开发者令牌、OAuth2凭据)

2. 按广告系列拆分的每日费用代码

const { GoogleAdsApi } = require('google-ads-api');

// 初始化API客户端
const client = new GoogleAdsApi({
    client_id: 'YOUR_OAUTH2_CLIENT_ID',
    client_secret: 'YOUR_OAUTH2_CLIENT_SECRET',
    developer_token: 'YOUR_DEVELOPER_TOKEN',
});

async function getCampaignDailyCosts() {
    const customer = client.Customer({
        customer_id: 'YOUR_CUSTOMER_ID', // 格式:123-456-7890
        refresh_token: 'YOUR_REFRESH_TOKEN',
    });

    // GAQL查询:按日期、广告系列分组,获取指定时段费用
    const query = `
        SELECT
            campaign.id,
            campaign.name,
            segments.date,
            metrics.cost_micros
        FROM campaign
        WHERE segments.date BETWEEN '2024-01-01' AND '2024-01-31'
        ORDER BY segments.date ASC, campaign.name ASC
    `;

    try {
        const response = await customer.report(query);
        // 转换费用单位(micros转美元,1美元=1e6 micros)
        const formattedData = response.rows.map(row => ({
            campaignId: row.campaign.id,
            campaignName: row.campaign.name,
            date: row.segments.date,
            cost: row.metrics.cost_micros / 1000000
        }));
        console.log('每日费用数据:', formattedData);
        return formattedData;
    } catch (err) {
        console.error('获取数据失败:', err);
    }
}

// 执行查询
getCampaignDailyCosts();

如果需要全账户总费用(不按广告系列拆分),简化查询语句即可:

const query = `
    SELECT
        segments.date,
        metrics.cost_micros
    FROM customer
    WHERE segments.date BETWEEN '2024-01-01' AND '2024-01-31'
`;

二、同步数据至Airtable建议

使用Airtable官方JS SDK实现数据同步,步骤如下:

1. 前置准备

  • 安装依赖:npm install airtable
  • 在Airtable创建表格,字段设置为:campaignId(数字)、campaignName(单行文本)、date(日期)、cost(数字)
  • 获取Airtable的API密钥和表格ID

2. 同步代码示例

const Airtable = require('airtable');

// 初始化Airtable客户端
const base = new Airtable({ apiKey: 'YOUR_AIRTABLE_API_KEY' }).base('YOUR_BASE_ID');

async function syncToAirtable(data) {
    const table = base('YOUR_TABLE_NAME');
    
    // 批量转换为Airtable记录格式
    const records = data.map(item => ({
        fields: {
            campaignId: item.campaignId,
            campaignName: item.campaignName,
            date: item.date,
            cost: item.cost
        }
    }));

    try {
        await table.create(records, { typecast: true }); // typecast自动匹配字段类型
        console.log('数据同步成功');
    } catch (err) {
        console.error('同步失败:', err);
    }
}

// 结合查询函数,获取数据后同步
getCampaignDailyCosts().then(data => {
    if (data) syncToAirtable(data);
});

同步注意事项

  • 避免重复数据:先查询Airtable已有记录,对比日期和campaignId,仅新增/更新差异数据
  • 控制请求频率:Google Ads API和Airtable均有配额限制,批量操作时拆分请求
  • 添加错误重试:针对临时网络或API错误,实现简单的重试逻辑

内容的提问来源于stack exchange,提问作者Shinwi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 19:35:37