json - 如何在 Apps 脚本内循环 JSON 响应

标签 json google-apps-script google-sheets

我想从 Google 表格内的 Snapchat API 导入数据(文档位于:https://marketingapi.snapchat.com/docs/?shell#get-all-ad-squads-under-a-campaign)。

目前我正在以一种低效的方式做到这一点,一次绘制一个结果。相反,如果可能的话,我想使用循环来绘制它们。

目前,这是我的代码:

function readData() {

var accesstoken = "TOKEN"

 var sheet = SpreadsheetApp.getActiveSheet()

 var adseturl = "https://adsapi.snapchat.com/v1/campaigns/e431cbcd-2281-49fe-8d05-b26c87660eb5/adsquads"
 var adseturlresponse = UrlFetchApp.fetch(adseturl, {
       headers: {
           "Authorization": "Bearer " + accesstoken
       }
   });

var adsetdata = JSON.parse(adseturlresponse.getContentText());
var adsetname1range = sheet.getRange('C3')
var adsetname2range = sheet.getRange('C4')
var adsetname3range = sheet.getRange('C5')
var adsetname4range = sheet.getRange('C6')
var adsetname5range = sheet.getRange('C7')
var adsetname6range = sheet.getRange('C8')
var adsetname7range = sheet.getRange('C9')
var adsetname8range = sheet.getRange('C10')

var adsetname1= adsetdata.adsquads[0].adsquad.name
adsetname1range.setValue(adsetname1)
    
var adsetname2= adsetdata.adsquads[1].adsquad.name  
adsetname2range.setValue(adsetname2)

var adsetname3= adsetdata.adsquads[2].adsquad.name
adsetname3range.setValue(adsetname3)

var adsetname4= adsetdata.adsquads[3].adsquad.name 
adsetname4range.setValue(adsetname4)

var adsetname5= adsetdata.adsquads[4].adsquad.name  
adsetname5range.setValue(adsetname5)

var adsetname6= adsetdata.adsquads[5].adsquad.name
 adsetname6range.setValue(adsetname6)

var adsetname7= adsetdata.adsquads[6].adsquad.name  
adsetname7range.setValue(adsetname7)

var adsetname8= adsetdata.adsquads[7].adsquad.name     
adsetname8range.setValue(adsetname8)

}

如您所见,我正在将结果一一绘制出来,如下所示:

var adsetdata = JSON.parse(adseturlresponse.getContentText());
var adsetname1range = sheet.getRange('C3')
var adsetname2range = sheet.getRange('C4')
var adsetname3range = sheet.getRange('C5')
var adsetname4range = sheet.getRange('C6')
var adsetname5range = sheet.getRange('C7')
var adsetname6range = sheet.getRange('C8')
var adsetname7range = sheet.getRange('C9')
var adsetname8range = sheet.getRange('C10')

var adsetname1= adsetdata.adsquads[0].adsquad.name
adsetname1range.setValue(adsetname1)
    
var adsetname2= adsetdata.adsquads[1].adsquad.name  
adsetname2range.setValue(adsetname2)

var adsetname3= adsetdata.adsquads[2].adsquad.name
adsetname3range.setValue(adsetname3)

var adsetname4= adsetdata.adsquads[3].adsquad.name 
adsetname4range.setValue(adsetname4)

var adsetname5= adsetdata.adsquads[4].adsquad.name  
adsetname5range.setValue(adsetname5)

var adsetname6= adsetdata.adsquads[5].adsquad.name
 adsetname6range.setValue(adsetname6)

var adsetname7= adsetdata.adsquads[6].adsquad.name  
adsetname7range.setValue(adsetname7)

var adsetname8= adsetdata.adsquads[7].adsquad.name     
adsetname8range.setValue(adsetname8)

但是,我希望能够循环

adsetdata.adsquads[i].adsquad.name  

此外,这里我的结果来自“C3:C10”,但行数是动态的,具体取决于结果数。

感谢您对我如何实现这一目标提出的意见。

最佳答案

在你的脚本中,进行以下修改怎么样?

来自:

var adsetname1range = sheet.getRange('C3')
var adsetname2range = sheet.getRange('C4')
var adsetname3range = sheet.getRange('C5')
var adsetname4range = sheet.getRange('C6')
var adsetname5range = sheet.getRange('C7')
var adsetname6range = sheet.getRange('C8')
var adsetname7range = sheet.getRange('C9')
var adsetname8range = sheet.getRange('C10')

var adsetname1= adsetdata.adsquads[0].adsquad.name
adsetname1range.setValue(adsetname1)
    
var adsetname2= adsetdata.adsquads[1].adsquad.name  
adsetname2range.setValue(adsetname2)

var adsetname3= adsetdata.adsquads[2].adsquad.name
adsetname3range.setValue(adsetname3)

var adsetname4= adsetdata.adsquads[3].adsquad.name 
adsetname4range.setValue(adsetname4)

var adsetname5= adsetdata.adsquads[4].adsquad.name  
adsetname5range.setValue(adsetname5)

var adsetname6= adsetdata.adsquads[5].adsquad.name
 adsetname6range.setValue(adsetname6)

var adsetname7= adsetdata.adsquads[6].adsquad.name  
adsetname7range.setValue(adsetname7)

var adsetname8= adsetdata.adsquads[7].adsquad.name     
adsetname8range.setValue(adsetname8)

致:

var values = adsetdata.adsquads.map(({ adsquad: { name } }) => [name]);
sheet.getRange(3, 3, values.length).setValues(values);
  • 运行此修改后的脚本时,将从 adsetdata.adsquads 数组中检索值并将其放入“C”列。

引用:

关于json - 如何在 Apps 脚本内循环 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75862842/

相关文章:

javascript - 如何从 JSON 数组调用函数

javascript - 当缓存硬重新加载时,我的toggleClass函数有时仅适用于我的JSON创建的字段

python - PyMongo:JSON 键在 mongo 中得到更新

javascript - 仅提取新日期的时间

java - 无法将 JSON 发送到 Spring Boot 应用程序中的其余端点

google-apps-script - Google App 脚本 - 为什么 getTemporaryActiveUserKey() 为唯一用户返回相同的值

javascript - google.script.run独立使用

javascript - Google Script - 从电子表格中列出的文件名导入文件数据

xml - 谷歌电子表格 : ImportXML from Google Drive . txt

google-sheets - 使用 Sheets API 创建包含开发者元数据的 Google Sheets 电子表格