我想从Google Sheet内的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相关问答推荐

Terraform迭代JSON文件以获取键值对

如何在我的响应模型中修复此问题:[期望的值类型为';Map<;Dynamic,Dynamic&>;,但获得的值类型为';NULL&39;]

使用自定义类型在Golang中解析JSON数组

如何使用PowerShell从ExchangeOnline命令执行中获得JSON输出

合并2个嵌套词典

在 python 中循环 JSON 数组

将=分隔值文件转换为:json文件

jq - 将父键值提取为子元素旁边的逗号分隔值

使用杰克逊解析Kotlin 中的通用密封类

将 colly 包输出文本添加到 golang 中的映射

判断golang中解析的json响应中是否存在所需的json键(不是值)

如何使用 boost::json::value 调用无参数函数

从ruby中的json获取特定的键值

将 js Array() 转换为 JSON 对象以用于 JQuery .ajax

Angularjs访问本地json文件

如何使用 CORS 实现 JavaScript Google Places API 请求

Django - 异常处理最佳实践和发送自定义错误消息

如何在 swift 2 中获取 Alamofire.request().responseJSON 的结果值?

从 Json 对象 Android 中获取字符串值

无法将 System.String 转换或转换为 Class 对象