Javascript 在google工作表的对象中循环项目

Javascript 在google工作表的对象中循环项目,javascript,for-loop,google-apps-script,google-sheets,Javascript,For Loop,Google Apps Script,Google Sheets,我正在尝试循环遍历一个数组,该数组是page speed insights调用中JSON对象的一部分,以便使用脚本编辑器将所有未使用的javascript URL添加到google工作表中 以下是JSON对象的一个示例: “审计”:{ “未使用的javascript”:{ “id”:“未使用的javascript”, “标题”:“删除未使用的JavaScript”, “说明”:“删除未使用的JavaScript以减少网络活动消耗的字节。[了解更多信息](https://web.dev/unuse

我正在尝试循环遍历一个数组,该数组是page speed insights调用中JSON对象的一部分,以便使用脚本编辑器将所有未使用的javascript URL添加到google工作表中

以下是JSON对象的一个示例:

“审计”:{
“未使用的javascript”:{
“id”:“未使用的javascript”,
“标题”:“删除未使用的JavaScript”,
“说明”:“删除未使用的JavaScript以减少网络活动消耗的字节。[了解更多信息](https://web.dev/unused-javascript/).",
“得分”:0.43,
“scoreDisplayMode”:“数字”,
“数值”:1350,
“数字单位”:“毫秒”,
“显示价值”:“潜在节约231千磅”,
“详情”:{
“类型”:“机会”,
“标题”:[
{
“键”:“url”,
“valueType”:“url”,
“子项显示”:{
“密钥”:“源”,
“valueType”:“代码”
},
“标签”:“URL”
},
{
“key”:“totalBytes”,
“valueType”:“字节”,
“子项显示”:{
“键”:“源字节”
},
“标签”:“传输大小”
},
{
“密钥”:“废弃字节”,
“valueType”:“字节”,
“子项显示”:{
“键”:“sourceWastedBytes”
},
“标签”:“潜在节约”
}
],
“项目”:[
{
“url”:”https://connect.facebook.net/signals/config/1926350194273730?v=2.9.2=stable",
“totalBytes”:140229,
“废字节”:108197,
“废物百分比”:77.15757011763822
},
{
“url”:”https://static.example.com/domain.us.modern.bundle.a02fef045566caf5d464.js",
“totalBytes”:306716,
“废字节”:106243,
“废物百分比”:34.63892414884589
},
{
“url”:”https://www.googletagmanager.com/gtm.js?id=GTM-KZ“,
“totalBytes”:127214,
“废字节”:21845,
“废物百分比”:17.17151000374831
}
],
“总体储蓄短信”:1350,
“总体节省字节”:236285
}
},
我试图在“未使用的javascript”对象中循环使用“items”数组,并获取所有要在google表单中显示的URL

以下是脚本编辑器中的代码。当我运行此程序时,工作表上只显示一个URL。但是,我正在尝试将所有URL添加到工作表中

函数页面速度(Url){
var key=“AIzaSyAyHY”;
var serviceUrl=”https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=“+Url+”&key=“+key;
var数组=[];
如果(键==“您的API键”)
返回“请输入脚本的API密钥”;
var response=UrlFetchApp.fetch(serviceUrl);
if(response.getResponseCode()==200){
var content=JSON.parse(response.getContentText());
如果((内容!=null)&&(内容[“Lighthouse结果”]!=null)){
如果(内容[“captchaResult”]){
var timetointeractive=content[“Lighthouse结果”][“审计”][“交互”][“显示值”]。切片(0,-2);
var firstcontentfulpaint=content[“lighthouseResult”][“audits”][“firstcontentfulpaint”][“displayValue”]。切片(0,-2);
var firstmeaningfulpaint=内容[“Lighthouse结果”][“审核”][“第一个有意义的绘制”][“显示值”]。切片(0,-2);
var speedindex=内容[“Lighthouse结果”][“审计”][“速度索引”][“显示值”]。切片(0,-2);
var unusedJs=content[“lighthouse result”][“audits”][“unused javascript”][“details”][“items”];
对于(var i=0;i

非常感谢您的任何帮助!

您走上了正确的道路

下面看一看我使用的
Array.prototype.map
。这是一个更简单的方法

如果您在循环之外(即之前)声明
unusedUrl
,并将其推送到现有数组中,那么您的
for
循环也会工作得很好。实际上,存在范围问题,因此
unusedUrl
在每次迭代中都会重新声明,这意味着您只会将最后一次迭代的值分配给
unusedUrl

以下是两种解决方案

使用
map
var内容={
灯塔结果:{
审计:{
“未使用的javascript”:{
//其他东西
详情:{
//其他东西
项目:[
{
网址:
'https://connect.facebook.net/signals/config/1926350194273730?v=2.9.2=stable',
总字节数:140229,
废字节:108197,
废品率:77.15757011763822,
},
{
网址:
'https://static.example.com/domain.us.modern.bundle.a02fef045566caf5d464.js',
总字节数:306716,
废字节:106243,
废品率:34.63892414884589,
},
{
网址:'https://www.googletagmanager.com/gtm.js?