XML:
<issues total_count="210" offset="0" limit="25" type="array">
<issue>
<id>22079</id>
<project id="21" name="name1"/>
<description>Some text</description>
<start_date>2017-11-22</start_date>
<custom_fields type="array">
<custom_field id="36" name="cf_36">
<value>cf_36_value</value>
</custom_field>
<custom_field id="28" name="cf_28">
<value>cf_28_value</value>
</custom_field>
<value type="array"/>
</custom_field>
</custom_fields>
</issue>
嗨,我正在尝试获取循环中所有字段的值,然后将数据插入到工作表中。
function APIRequest (url,sheet) {
var xml = UrlFetchApp.fetch(url).getContentText();
var DOC = Xml.parse(xml);
var issues = DOC.issues.issue
for(var c=0; c<issues.length;c++){
var issue = issues[c];
var id = issue.getElement('id').getText();
sheet.appendRow([id]);
}
}
我的问题是我无法从XML中获取每个“问题”的值“cf_36_value”
答案 0 :(得分:1)
这个答案怎么样?您可以使用XML Service Service for Google Apps Script解析XML数据。从你的问题和脚本中,我理解你想要做的事情如下。
id="36"
。
cf_36_value
。以上几点反映的修改后的脚本如下。
var data = XmlService.parse(xml);
var issue = data.getRootElement().getChildren("issue");
var result = [];
for (i in issue) {
var custom_field = issue[i].getChild("custom_fields").getChildren("custom_field");
for (j in custom_field) {
if (custom_field[j].getAttribute("id").getValue() == 36) { // If you want values of other ID, please set this.
result.push([custom_field[j].getChild("value").getValue()]);
}
}
}
sheet.getRange(sheet.getLastRow() + 1, 1, result.length, result[0].length).setValues(result);
如果我误解了你的问题,请告诉我。你能告诉我们整个XML数据吗?我想修改我的答案。由于您的问题的XML数据未完成,我担心它。