Разбор XML в Google Apps Script для BGG API - PullRequest
0 голосов
/ 28 августа 2018

В настоящее время я пытаюсь получить информацию о настольных играх из BGG xml api. Поток примерно такой:

Пользователь вводит название настольной игры в качестве поиска ->

скрипт опрашивает API для игр, соответствующих этому имени, и возвращает результаты ->

Пользователь выбирает правильный результат ->

скрипт берет идентификатор настольной игры из выбранного результата и снова запрашивает API, используя идентификатор, который дает всю необходимую информацию.

Вот код, над которым я работаю:

var Name = "Betrayal at the house on the hill"

  // Call BGG API with query to display options for selection
  var response = UrlFetchApp.fetch("https://boardgamegeek.com/xmlapi/search?search="+Name)

  // Parse the XML reply
  var document = XmlService.parse(response);
  var root = document.getRootElement();

Вот результат, полученный при поиске:

<boardgames termsofuse="[https://boardgamegeek.com/xmlapi/termsofuse](https://boardgamegeek.com/xmlapi/termsofuse)">
        <boardgame objectid="238032">

        <name primary="true">Betrayal at Baldur\&#039;s Gate and House on the Hill Promo Cards</name>           
<yearpublished>2017</yearpublished>
</boardgame>

        <boardgame objectid="10547">

        <name primary="true">Betrayal at House on the Hill</name>           
<yearpublished>2004</yearpublished>
</boardgame>

        <boardgame objectid="198452">

        <name primary="true">Betrayal at House on the Hill: Widow\&#039;s Walk</name>           
<yearpublished>2016</yearpublished>
</boardgame>

</boardgames>\

Я могу справиться со всем остальным оттуда. Проблема, с которой я столкнулся, заключается в том, что идентификатор настольной игры заключен в тег xml <boardgame objectid="xxxxxx">, и я не могу понять, как заставить скрипт получить доступ к этой информации. Я вижу идентификатор, когда смотрю на вывод в журналах, но не могу понять, как вытащить идентификатор в переменную. У меня практически нет опыта работы с XML, поэтому я уверен, что не могу понять что-то, что кажется довольно простым. Я использую скрипт приложений Google на листе Google (в основном, JavaScript).

Это сообщение, которое я нашел, которое помогло мне начать, но ему, похоже, не нужен идентификатор для его варианта использования. К сожалению, я делаю.

Любые мысли или предложения будут высоко оценены!

1 Ответ

0 голосов
/ 28 августа 2018

Зелин на Reddit смог ответить на мой вопрос. Код, необходимый для получения идентификатора, указан ниже:

var document = XmlService.parse(bggXml);
var root = document.getRootElement();
var games = root.getChildren('boardgame');

for (var i = 0; i < games.length; i++) {
    var id = games[i].getAttribute('objectid').getValue();
    // do something with id
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...