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

使用Google Apps Script从API拉取数据并解析JSON至表格列

完整实现:用Google Apps Script从API拉取欺诈报告数据并写入Google Sheets

看起来你需要把从24metrics欺诈防护API拉取的JSON数据解析到Google Sheets中,我帮你把代码补全并做了优化,不仅能实现核心需求,还加了错误处理和可维护性的改进:

完整可运行代码

function fetchFraudReport() {
  // 1. 配置API核心参数,替换成你的实际值
  const apiConfig = {
    trackerId: "905",
    dateStart: "2018-01-18",
    dateEnd: "2018-01-18",
    timezone: "UTC",
    userId: "XXX", // 替换为你的真实user_id
    apiToken: "XXX" // 替换为你的真实api_token
  };

  // 2. 构建请求URL(把参数单独提取出来,方便后续修改)
  const apiUrl = `https://fraudshield.24metrics.com/api/v1/reports/fraud.json?tracker_id=${apiConfig.trackerId}&group[]=sub_id&group[]=partner&date_start=${apiConfig.dateStart}&date_end=${apiConfig.dateEnd}&timezone=${apiConfig.timezone}&user_id=${apiConfig.userId}&api_token=${apiConfig.apiToken}`;

  try {
    // 3. 发起HTTP请求,捕获异常响应
    const response = UrlFetchApp.fetch(apiUrl, { muteHttpExceptions: true });
    const responseCode = response.getResponseCode();

    // 检查请求是否成功
    if (responseCode !== 200) {
      throw new Error(`请求失败,状态码:${responseCode},响应内容:${response.getContentText()}`);
    }

    // 4. 解析JSON响应(假设API返回的核心数据在`data`字段下,这是API常见格式)
    const jsonData = JSON.parse(response.getContentText());
    const reportData = jsonData.data;

    if (!reportData || reportData.length === 0) {
      SpreadsheetApp.getUi().alert("没有获取到有效数据");
      return;
    }

    // 5. 准备目标工作表(替换为你实际的工作表名称)
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("欺诈报告");
    if (!sheet) {
      throw new Error("找不到名为'欺诈报告'的工作表,请先创建或修改代码中的工作表名称");
    }

    // 清空旧数据(保留表头行)
    sheet.clearContents();

    // 6. 设置表头(需与API返回的字段完全对应,可按需调整顺序)
    const headers = ["sub_id", "partner", "clicks", "fraud_clicks", "conversions"]; // 替换为API返回的实际字段
    sheet.getRange(1, 1, 1, headers.length).setValues([headers]);

    // 7. 整理数据并批量写入表格
    const rows = reportData.map(item => {
      // 按表头顺序提取对应字段值,无值则填充为空字符串
      return headers.map(header => item[header] || "");
    });

    if (rows.length > 0) {
      sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
      SpreadsheetApp.getUi().alert(`数据导入成功,共导入${rows.length}条记录`);
    }

  } catch (error) {
    SpreadsheetApp.getUi().alert(`执行出错:${error.message}`);
    console.error(error); // 控制台输出详细错误,方便调试
  }
}

关键注意事项

  • 参数替换:务必把apiConfig里的userId和apiToken换成你的真实凭证,trackerId、日期范围也可按需调整。
  • 表头匹配:headers数组要和API返回的JSON对象字段完全一致,比如如果API返回的每条数据有revenue字段,就把它加入表头数组。
  • 工作表名称:确保你的Google Sheets里存在对应名称的工作表(示例中是"欺诈报告"),如果名称不同,修改getSheetByName的参数即可。
  • 错误排查:代码里加了请求状态检查、工作表存在性验证、空数据判断,还有全局异常捕获,执行出错时会弹出提示,也可以查看脚本编辑器的控制台获取详细错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:20:41