Используйте пользовательскую функцию для заполнения ячейки gSpreadsheet на основе ответа XML / JSON - PullRequest
0 голосов
/ 15 апреля 2011

Хорошо, этот стал немного сложным для меня, и мне действительно нужна помощь, чтобы пройти через него.

Проблема

У меня есть GSpreadsheet, который имеетсписок данных, в данном случае имена пользователей Twitter.Используя API поставщика услуг (в данном случае Klout API), я хотел бы получить информацию об этом пользователе для заполнения ячейки в электронной таблице.

Основываясь на том, что я могу до сих пор работать, ядля этого потребуется написать пользовательскую функцию, но я понятия не имею, с чего начать, как я могу ее сконструировать или есть какие-либо примеры для этого.

Сценарий

API Klout может возвращать ответ XML или JSON (см. http://developer.klout.com/docs/read/api/API), на основе переданной строки. Например, URL:

http://api.klout.com/1/users/show.xml?key=SECRET&users=thewinchesterau

вернул бы следующий XML-ответ:

<users>
    <user>
        <twitter_id>17439480</twitter_id>
        <twitter_screen_name>thewinchesterau</twitter_screen_name>
        <score>
            <kscore>56.63</kscore>
            <slope>0</slope>
            <description>creates content that is spread throughout their network and drives discussions.</description>
            <kclass_id>10</kclass_id>
            <kclass>Socializer</kclass>
            <kclass_description>You are the hub of social scenes and people count on you to find out what's happening. You are quick to connect people and readily share your social savvy. Your followers appreciate your network and generosity.</kclass_description>
            <kscore_description>thewinchesterau has a low level ofinfluence.</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>
        </score>
    </user>
</users>

На основе этого ответа я хотел бы иметь возможность заполнять различные ячейки значениями, возвращенными в пакете XML (или JSON, если проще).

Так, например, у меня была бы электронная таблица, подобная следующей, в которой были бы пользовательские функции для выхода и получения значения соответствующего ответа элемента XML для заполнения ячейки:

Cell    A        B        C        D            E
1    Username    kscore        Network score    Amplification score    True reach
2    thewinchester    =kscore(A2)    =nscore(A2)    =ascore(A2)        =tscore(A2)

поискion

  1. Существуют ли какие-либо известные вам примеры gSpreadsheet, использующие API для извлечения данных из внешнего источника?
  2. Как написать пользовательскую функцию для извлечениярезультат из API и заполнить ячейку результатом определенного элемента?

Любая информация, примеры или помощники, которые у вас есть, очень ценятся.

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Требуется функция importXML, задокументированная здесь . Формула, которую вы хотите, будет выглядеть примерно так:

=importXML("http://api.klout.com/1/users/show.xml?key=SECRET&users=" + A1, "//users/user/score/kscore")
0 голосов
/ 12 августа 2011

Вы можете написать собственный скрипт с помощью Google AppScript, но есть простое решение, похожее на то, что написал Ник Джонсон. Я протестировал это с помощью функции Score, но ее можно легко адаптировать к конечной точке шоу с другим XPath.

=importXML("http://api.klout.com/1/klout.xml?users="&A1&"&key=YOUR_API_KEY", "//users/user/kscore")

Предполагается, что ваши идентификаторы Twitter находятся в столбце A.

Обратите внимание, что Google Docs ограничивает количество таких функций importXML до 50 на электронную таблицу. Вы можете объединять группы из 5 идентификаторов пользователей для каждого вызова importXML, фактически увеличивая ваш лимит до 250 на листе.

Это также может быть адаптировано для аналогичного вызова в Excel, который не имеет этого ограничения. Однако помните о Klout ToS, используя надлежащие ограничения по атрибуции и скорости.

...