多个 Children 同名时提取内容(Google 脚本 JS)
Extracting Content when Multiple Children with Same Name (Google Scripts JS)
当有多个同名可选 children 时,我不确定如何提取内容。
- 一个人可以有多个children同名。例如
user_defined_text_field
下面。
- 有些人可能没有 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;
}
}
}
}
参考
当有多个同名可选 children 时,我不确定如何提取内容。
- 一个人可以有多个children同名。例如
user_defined_text_field
下面。 - 有些人可能没有 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;
}
}
}
}
参考