多个 Children 同名时提取内容(Google 脚本 JS)

Extracting Content when Multiple Children with Same Name (Google Scripts JS)

当有多个同名可选 children 时,我不确定如何提取内容。

  1. 一个人可以有多个children同名。例如 user_defined_text_field 下面。
  2. 有些人可能没有 children。

希望下面的例子提供了相关的上下文。

数据格式

(来自服务的 API)

<api>
 <response>
      <service>api_search</service>
      <individuals count="1">
          <individual id="1">
                    <first_name>James</first_name>
                    <last_name>Jones</last_name>
                    <email>jjones@gmail.com</email>
                    <gender>M</gender>
                    <user_defined_text_fields>
                         <user_defined_text_field>
                              <name>udf_text_1</name>
                              <label>Fav Color</label>
                              <text>Blue</text> // ****** I WANT THIS ******
                              <admin_only>false</admin_only>
                         </user_defined_text_field>
                         <user_defined_text_field>
                              <name>udf_text_3</name>
                              <label>Area</label>
                              <text>Urban</text>
                              <admin_only>false</admin_only>
                         </user_defined_text_field>
                    </user_defined_text_fields>
          </individual>               
      </individuals>
 </response>

提取相关数据的当前代码部分

(在 Google 脚本中。一切正常——我只需要帮助我在下面评论的行。)

// ...

const entries = fetch.getRootElement().getChild('response').getChild('individuals').getChildren();
const list = new Array();

for (let i in entries) { 

  const first_name = entries[i].getChildText('first_name');
  const last_name = entries[i].getChildText('last_name');
  const email = entries[i].getChildText('email');
  const gender = entries[i].getChildText('gender');


  const fav_color = ???  // ****** NEED HELP HERE ******


  list.push([first_name, last_name, email, gender]);
};


// ...

描述

由于 user_defined_text_fields 包含一个 user_defined_text_field 数组,您必须遍历子数组才能找到具有颜色的子数组。

脚本

for (let i in entries) { 

  var first_name = entries[i].getChildText('first_name');
  var last_name = entries[i].getChildText('last_name');
  var email = entries[i].getChildText('email');
  var gender = entries[i].getChildText('gender');
  var fields = entries[i].getChild("user_defined_text_fields");
  var children = fields.getChildren("user_defined_text_field");
  if( children ) {
    for( var j=0; j<children.length; j++ ) {
      if( children[j].getChildText("label") === "Fav Color" ) {
        var fav_color = children[j].getChildText("text");
        break;
      }
    }
  }
}

参考