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]);
}
}
Моя проблема в том, что я не могу получить значения "cf_36_value" из XML для каждой "проблемы",
Как насчет этого ответа? Вы можете анализировать XML-данные, используя службу XML Service Service для Google Apps Script. Из вашего вопроса и сценария я понял, что вы хотите сделать следующим образом.
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 вашего вопроса не заполнены, я беспокоюсь об этом.