Импорт данных JSON в таблицу Google
Я извлекаю данные из веб-службы и формируется как JSON. Я пишу google apps script для электронной таблицы google, которые будут заполнять данные для меня. моя проблема в том, что я не могу заставить ее разобраться.
делание:
var dataset = myJSONtext;
Browser.msgbox(dataset.item[0].key);
ошибки, говоря, что элемент [0] не определен.
Есть ли какой-то встроенный способ, которым я должен это делать?
Любая помощь будет оценена.
Ответы
Ответ 1
Приложения script (в значительной степени) только Javascript; простой JSON.parse
- ваш лучший вариант для синтаксического анализа JSON в представлении объекта.
Вы также можете использовать JSON.stringify
для сериализации объекта в строковое представление.
Ответ 2
JSON.parse
Для тех, кто видит это в 2011 году, как указал Энрике Абреу на форуме поддержки Google, Utilities.jsonParse будет/будет устаревшим. Как вы можете видеть из потока, есть ошибка с этой функцией, что она не работает, когда ваши ключи являются числами, то есть "1234" .
Как и было предложено, вы должны использовать JSON.stringify/parse.
Ответ 3
Обновление 2013 года - ознакомьтесь с библиотекой ImportJSON в
http://blog.fastfedora.com/projects/import-json
"ImportJSON импортирует данные из общедоступных API-интерфейсов JSON в электронные таблицы Google. Он направлен на то, чтобы работать аналогично тому, как работают собственные таблицы Google ImportData и ImportXML.
Код доступен здесь, и он отправил его в галерею Script:
https://raw.github.com/fastfedora/google-docs/master/scripts/ImportJSON/Code.gs
Пример использования: после помещения кода в таблицу Google Script, затем вставьте его в ячейку A1 листа:
=ImportJSON("http://gdata.youtube.com/feeds/api/standardfeeds/most_popular?v=2&alt=json", "/feed/entry/title,/feed/entry/content", "noInherit,noTruncate,rawHeaders")
Ответ 4
Используйте этот метод:
https://gist.github.com/varun-raj/5350595a730a62ca1954
Заменить
http://example.com/feeds?type=json
с вашим URL-адресом JSON
Добавьте сюда свои сущности
rows.push([data.id, data.name,data.email]);