#api #google-sheets #google-spreadsheet-api
#API #google-sheets #google-sheets-api
Вопрос:
Хорошо, это стало немного сложным для меня, и мне действительно нужна помощь, чтобы справиться с этим.
Проблема
У меня есть GSpreadsheet, в котором есть список данных, в данном случае имен пользователей Twitter. Используя API поставщика услуг (в данном случае Klout API), я хотел бы получить информацию об этом пользователе для заполнения ячейки в электронной таблице.
Исходя из того, что я могу разработать на данный момент, мне нужно было бы написать пользовательскую функцию для этого, но я понятия не имею, с чего начать, как я мог бы ее сконструировать, или есть ли какие-либо примеры выполнения этого.
Сценарий
Klout API может возвращать либо XML,либо JSON-ответ (см. http://developer.klout.com/docs/read/api/API ) на основе переданной строки. Например, URL:
http://api.klout.com/1/users/show.xml?key=SECRETamp;users=thewinchesterau
вернет следующий XML-ответ:
<пользователи> <пользователь> <twitter_id>17439480</twitter_id> <имя_ширины_witter_screen_name>thewinchesterau</имя_ширины_witter_screen_name> <оценка> <kscore>56.63</kscore> <наклон>0</slope> <описание>создает контент, который распространяется по всей их сети и стимулирует обсуждения.</описание> <kclass_id>10</kclass_id> <kclass>Socializer</kclass> <kclass_description> Вы являетесь центром социальных сцен, и люди рассчитывают на вас, чтобы узнать, что происходит. Вы быстро подключаете людей и с готовностью делитесь своими социальными знаниями. Ваши подписчики ценят вашу сеть и щедрость.</kclass_description> <kscore_description>winchesterau имеет низкий уровень влияния.</kscore_description> <network_score>58.06</network_score> <amplification_score>29.16</amplification_score> <true_reach>90</true_reach> <delta_1day>0.3</delta_1day> <delta_5day>0.5</delta_5day> </оценка> </пользователь> </пользователи>
На основе этого ответа я хотел бы иметь возможность заполнять разные ячейки значениями, возвращаемыми в пакете XML (или JSON, если проще).
Итак, например, у меня была бы электронная таблица, подобная следующей, которая имела бы пользовательские функции для выхода и извлечения значения соответствующего ответа элемента XML для заполнения ячейки:
Ячейка A B C D E 1 Имя пользователя Оценка сети kscore Оценка усиления Истинный охват 2 thewinchester =kscore(A2) =nscore (A2) =ascore (A2) = tscore(A2)
Вопросы
- Известны ли вам какие-либо примеры gSpreadsheet, в которых используется API для извлечения данных из внешнего источника?
- Как бы написать пользовательскую функцию для извлечения результата из API и заполнения ячейки результатом определенного элемента?
Мы высоко ценим любую имеющуюся у вас информацию, примеры или помощников.
Ответ №1:
Вам нужна importXML
функция, задокументированная здесь. Нужная вам формула будет выглядеть примерно так:
=importXML("http://api.klout.com/1/users/show.xml?key=SECRETamp;users=" A1, "//users/user/score/kscore")
Ответ №2:
Вы могли бы написать пользовательский скрипт с помощью Google AppScript, но для этого есть простое решение, похожее на то, что опубликовал Ник Джонсон. Я протестировал это на функции score, но ее можно легко адаптировать к конечной точке show с другим XPath.
=importXML("http://api.klout.com/1/klout.xml?users="amp;A1amp;"amp;key=YOUR_API_KEY", "//users/user/kscore")
Это предполагает, что ваши идентификаторы Twitter находятся в столбце A.
Обратите внимание, что Google Docs ограничивает количество таких функций ImportXML 50 на электронную таблицу. Вы могли бы объединить группы из 5 идентификаторов пользователя для каждого вызова ImportXML, эффективно установив свой лимит до 250 на листе.
Это также может быть адаптировано к аналогичному вызову в Excel, у которого нет такого ограничения. Однако имейте в виду требования Klout, используя надлежащую атрибуцию и ограничения скорости.