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

如何在Apps Script中遍历Snapchat API返回的JSON响应

优化Snapchat API数据导入Google Sheets的代码

你当前的代码通过逐个单元格赋值的方式导入数据,不仅冗余,还无法适配API返回的广告组数量变化。下面是优化后的代码,用循环遍历数据并批量写入,实现动态行数适配:

function readData() {
  const accessToken = "TOKEN";
  const sheet = SpreadsheetApp.getActiveSheet();
  const adsetUrl = "https://adsapi.snapchat.com/v1/campaigns/e431cbcd-2281-49fe-8d05-b26c87660eb5/adsquads";
  
  // 发起API请求
  const response = UrlFetchApp.fetch(adsetUrl, {
    headers: {
      "Authorization": "Bearer " + accessToken
    }
  });
  
  const adsetData = JSON.parse(response.getContentText());
  // 确保adsquads数组存在,避免空数据报错
  const adSquads = adsetData.adsquads || [];
  
  // 收集所有广告组名称到二维数组(Google Sheets要求传入二维数组批量写入)
  const adSquadNames = adSquads.map(squad => [squad.adsquad.name]);
  
  // 清空原有数据范围(可选,根据需求决定是否保留历史数据)
  const existingRange = sheet.getRange(3, 3, sheet.getLastRow() - 2, 1);
  existingRange.clearContent();
  
  // 动态写入数据:从C3开始,行数等于广告组数量,列数1
  if (adSquadNames.length > 0) {
    const targetRange = sheet.getRange(3, 3, adSquadNames.length, 1);
    targetRange.setValues(adSquadNames);
  }
}

关键改进点:

  • 循环遍历+批量写入:用map遍历adsquads数组收集数据,再通过setValues一次性写入,比逐个setValue效率提升显著(Google Apps Script中批量操作能减少服务调用次数)
  • 动态适配行数:通过adSquadNames.length获取返回结果的数量,动态计算写入范围,不管API返回多少条数据都能适配
  • 容错处理:添加adsetData.adsquads || []避免API返回空数据时出现数组未定义的报错
  • 灵活的数据处理:如果需要追加数据而非覆盖,可将写入起始行调整为sheet.getLastRow() + 1,去掉清空历史数据的代码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:12:14