Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个数组中的数组中查找值,然后匹配第二个值Google Apps Script Javascript JSON API_Javascript_Arrays_Loops_Google Apps Script_Google Sheets - Fatal编程技术网

从另一个数组中的数组中查找值,然后匹配第二个值Google Apps Script Javascript JSON API

从另一个数组中的数组中查找值,然后匹配第二个值Google Apps Script Javascript JSON API,javascript,arrays,loops,google-apps-script,google-sheets,Javascript,Arrays,Loops,Google Apps Script,Google Sheets,我正在使用Google Apps脚本将数据从crm Pipedrive导入Google工作表。这是一个更大的过程的一部分,但我在脚本的这一部分陷入僵局。我需要通过将一个数组的两个部分匹配到另一个数组来返回一个值 首先,我提取所有交易字段,返回自定义字段键及其id/标签对。下面是一个简化的输出示例: { "success": true, "data": [ { "id": 12500, "

我正在使用Google Apps脚本将数据从crm Pipedrive导入Google工作表。这是一个更大的过程的一部分,但我在脚本的这一部分陷入僵局。我需要通过将一个数组的两个部分匹配到另一个数组来返回一个值

首先,我提取所有交易字段,返回自定义字段键及其id/标签对。下面是一个简化的输出示例:

{
  "success": true,
  "data": [
    {
      "id": 12500,
      "key": "c4ecbe01c34994ede3a50c0f8",
      "name": "Lead Type",
      "options": [
        {
          "label": "Expired",
          "id": 28
        },
        {
          "label": "Sale",
          "id": 29
        },
        {
          "label": "Rent",
          "id": 30
        },
        {
          "label": "Other",
          "id": 31
        }
      ],
      "mandatory_flag": false
    }
  ]
}
然后,我从包含id的特定交易中获得了单独的信息。我需要将下面的id
28
与上面的数组相匹配,并返回标签
过期
var-leadType=dealresponse.data[“c4ecbe01c34994ede3a50c0f8”]
返回
28
我不知道“28”是什么意思,所以我需要将其与过期标签匹配。 dealFields数组很长,可能是上述数组对象中的50或100个。大约有10个自定义交易字段键,我必须在匹配键和id的基础上返回标签。我想我必须循环每个键和id才能返回标签。但不确定这样做并节省处理能力的最佳方法

我试过:

for (var i in dealFieldsresponse) {
    if (dealFieldsresponse[i].data.key == "c4ecbe01c34994ede3a50c0f8") {
      for (var j in dealFieldsresponse[j]) {
         if (dealFieldsresponse[j].id == "28") {
           Logger.log(dealFieldsresponse[j].label);
         }
      }
    }
}
它不起作用了。我对javascript和编程都是新手,所以这是我最好的猜测,我很欣赏任何见解

编辑:下面是我必须处理的一大块代码:

// Get deal fields data
  var dealFieldsurl = URL +'/v1/dealFields?api_token='+ API_TOKEN;
  var options = {
    "method": "get",
    "contentType": "application/json",
  };
  var dealFieldsresponse = UrlFetchApp.fetch(dealFieldsurl, options);
  dealFieldsresponse = JSON.parse(dealFieldsresponse.getContentText());

  
  
  // Get deal data
  var dealurl = URL +'/v1/deals/' + dealId + '?api_token='+ API_TOKEN;
  var options = {
    "method": "get",    
    "contentType": "application/json",
  };
  var dealresponse = UrlFetchApp.fetch(dealurl, options);
  dealresponse = JSON.parse(dealresponse.getContentText());

  
 
  var propertyAddress = dealresponse.data["9bd1d8c4f07f5795fd8bffb16f3b63c6547d7d3a"];
  var leadType = dealresponse.data["c4ecbe01c3494d1be52432f4a3194ede3a50c0f8"];
      
  var dealType = dealresponse.data["a4269fb4730cf7fd1787752be94eacbc4b0de24e"];
  var dealSource = dealresponse.data["d76fa2d6f8454a51f7d64d981cd9320877bc2ea0"];
  var marketingFor = dealresponse.data["58cb55090b55652b7f89a8b44074682d874c548a"];
  var dateListedOnMarket = dealresponse.data["aa49c7b95a7d151bec4c2d936f6ab40d0caea43c"];
  var dateTakenOffMarket = dealresponse.data["660c1250b0a641a10ff9121c2df124ff89c13052"];
  var askingPrice = dealresponse.data["1de94dbf589fda7a3a3248662cd24f03d512a961"];
dealFieldsresponse
变量存储一个数组,其中包含许多包含数组的对象。这里有两个主要对象,您可以看到每个对象都有一个
,然后是
选项
。我需要匹配键,然后在每个
键的选项中找到
id

{
"id": 12500,
"key": "c4ecbe01c3494d1be52432f4a3194ede3a50c0f8",
"name": "Lead Type",
"order_nr": 64,
"field_type": "set",
"add_time": "2020-08-20 19:33:22",
"update_time": "2020-08-20 19:33:22",
"last_updated_by_user_id": 11678191,
"active_flag": true,
"edit_flag": true,
"index_visible_flag": true,
"details_visible_flag": true,
"add_visible_flag": true,
"important_flag": true,
"bulk_edit_allowed": true,
"searchable_flag": false,
"filtering_allowed": true,
"sortable_flag": true,
"options": [
{
"label": "Expired",
"id": 28
},
{
"label": "Sale",
"id": 29
},
{
"label": "Rent",
"id": 30
},
{
"label": "Other",
"id": 31
}
],
"mandatory_flag": false
},
{
"id": 12502,
"key": "a4269fb4730cf7fd1787752be94eacbc4b0de24e",
"name": "Deal Type",
"order_nr": 65,
"field_type": "set",
"add_time": "2020-08-20 19:57:12",
"update_time": "2020-08-20 19:57:12",
"last_updated_by_user_id": 11678191,
"active_flag": true,
"edit_flag": true,
"index_visible_flag": true,
"details_visible_flag": true,
"add_visible_flag": true,
"important_flag": true,
"bulk_edit_allowed": true,
"searchable_flag": false,
"filtering_allowed": true,
"sortable_flag": true,
"options": [
{
"label": "Lease",
"id": 37
},
{
"label": "Financing",
"id": 38
},
{
"label": "Assign",
"id": 39
},
{
"label": "ST",
"id": 40
},
{
"label": "Other (see notes)",
"id": 41
}
],
"mandatory_flag": false
},
编辑2:如何返回多个ID的标签

const obj = {
  "a4269fb4730cf7fd1787752be94eacbc4b0de24e": {id: 37,38}, "58cb55090b55652b7f89a8b44074682d874c548a": {id: 44,45},
"2ec54cce0d091b69b1fd1a245c7aad02b57cadb8": {id: 126},
"fab84c732295022ecd7bdf58892a62cb4d8ecf24": {id: 50,52,54}, 
};

例如,我希望第一个以字符串形式返回
红色、蓝色
,第二个以字符串形式返回
绿色、橙色
。假设与
id
s匹配的标签是颜色。第三个只有一个
id
,但第四个有三个。我如何解释这一点?我希望我的输出是某种数组,在这里我可以说search
key
a4269fb4730cf7fd1787752be94eacbc4b0de24e
并返回值
红色、蓝色
作为字符串

我相信你的目标如下

  • 您希望使用Google Apps脚本从问题中的JSON对象中使用
    key
    id
    检索
    label
    的值。
    • 作为示例情况,您希望使用
      “key:“c4ecbe01c34994ede3a50c0f8”
      “id:”28
      检索
      “label:”Expired“
      ”的值
  • JSON对象具有
    数据
    选项
    的数组。两个数组都有几个元素
修改点:
  • 如果问题中的JSON对象是
    dealFieldsresponse
    dealFieldsresponse.data
    dealFieldsresponse.data[]。选项是一维数组。当您想要检索
    id
    的值时,需要循环这些数组
当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
const searchKey=“c4ecbe01c34994ede3a50c0f8”//请设置密钥的值。
const searchId=28;//请设置id的值。
const dealfields响应={
“成功”:没错,
“数据”:[
{
“id”:12500,
“键”:“c4ecbe01c34994ede3a50c0f8”,
“名称”:“潜在客户类型”,
“选择”:[
{
“标签”:“过期”,
“身份证”:28
},
{
“标签”:“FSBO”,
“身份证”:29
},
{
“标签”:“FRBO”,
“身份证”:30
},
{
“标签”:“其他”,
“身份证”:31
}
],
“强制_标志”:false
}
]
};
const data=dealFieldsresponse.data;
for(设i=0;i}
我相信你的目标如下

  • 您希望使用Google Apps脚本从问题中的JSON对象中使用
    key
    id
    检索
    label
    的值。
    • 作为示例情况,您希望使用
      “key:“c4ecbe01c34994ede3a50c0f8”
      “id:”28
      检索
      “label:”Expired“
      ”的值
  • JSON对象具有
    数据
    选项
    的数组。两个数组都有几个元素
修改点:
  • 如果问题中的JSON对象是
    dealFieldsresponse
    dealFieldsresponse.data
    dealFieldsresponse.data[]。选项是一维数组。当您想要检索
    id
    的值时,需要循环这些数组
当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
const searchKey=“c4ecbe01c34994ede3a50c0f8”//请设置密钥的值。
const searchId=28;//请设置id的值。
const dealfields响应={
“成功”:没错,
“数据”:[
{
“id”:12500,
“键”:“c4ecbe01c34994ede3a50c0f8”,
“名称”:“潜在客户类型”,
“选择”:[
{
“标签”:“过期”,
“身份证”:28
},
{
“标签”:“FSBO”,
“身份证”:29
},
{
“标签”:“FRBO”,
“身份证”:30
},
{
“标签”:“其他”,
“身份证”:31
}
],
“强制_标志”:false
}
]
};
const data=dealFieldsresponse.data;
for(设i=0;i