EXCEL 2013
В Microsoft Excel 2013 появились новые функции для работы с Веб-сервисами:
- WEBSERVICE (ВЕБСЛУЖБА)
- FILTERXML (ФИЛЬТР.XML)
- ENCODEURL (КОДИР.URL)
Все
вместе эти функции используются общения с различными веб-сервисами. В том числе
и для расшифровке ответов.
Как узнать по адресу в какой стране этот адрес находится
Попалась
мне задача сопоставить адрес со страной. Так вот, одним из вариантов решения
задачи является использование какого-то веб-сервиса. На входе адрес в виде
строки, а на выходе, страна. И так для каждого адреса в Excel-таблице.
В
качестве такого веб-сервиса попался Yahoo! Для начала работы необходимо
получить Application ID и проверить права на
использование сервиса.
За дело!
Используем WEBSERVICE(“полный URL вместе с параметрами“), чтобы получить информацию на
основании строки адреса. А чтобы в URL закодировать параметры, надо использовать ENCODEURL.
Получаем что-то типа вот этого:
=WEBSERVICE("http://where.yahooapis.com/v1/places.q('"&
ENCODEURL([@Address])
&"');start=0;count=5?appid=_YKSHRFGKHkerhguerg85egKJGHKDFT8giQ-")
AppID явно
заменён на рандомный набор символов.
В результате получаем вот такой XML:
xml version=""1.0"" encoding=""UTF-8""?>
<places xmlns=""http:=""//where.yahooapis.com/v1/schema.rng""
xmlns:yahoo=""http://www.yahooapis.com/v1/base.rng""
yahoo:start=""0"" yahoo:count=""1""
yahoo:total=""1"">
<place yahoo:uri=""http:=""//where.yahooapis.com/v1/place/26629944""
xml:lang=""en-US"">
<woeid>26629944</woeid>
<placeTypeName code=""11="""">Postal Code</placeTypeName>
<name>YO1 7PA</name>
<country type=""Country="""" code=""GB="""" woeid=""23424975="""">United Kingdom</country>
<admin1 type=""Country="""" code=""GB-ENG="""" woeid=""24554868="""">England</admin1>
<admin2 type=""County="""" code=""GB-NYK="""" woeid=""12602195="""">North Yorkshire</admin2>
<admin3 type=""Local="" Administrative="" Area="""" code="""" woeid=""12696148="""">York City</admin3>
<locality1 type=""Town="""" woeid=""41415="""">York</locality1>
<locality2></locality2>
<postal type=""Postal="" Code="""" woeid=""26629944="""">YO1 7PA</postal>
<centroid>
<latitude>53.958382</latitude>
<longitude>-1.074100</longitude>
</centroid>
<boundingBox>
<southWest>
<latitude>53.958080</latitude>
<longitude>-1.074890</longitude>
</southWest>
<northEast>
<latitude>53.958630</latitude>
<longitude>-1.072840</longitude>
</northEast>
</boundingBox>
<areaRank>0</areaRank>
<popRank>0</popRank>
<timezone type=""Time="" Zone="""" woeid=""28350903="""">Europe/London</timezone>
</place></places>
Теперь расшифровываем
полученный XML.
=FILTERXML([@WebService],"places/place/country")
Вот и получаем вот такую чудную картинку:
Проблемы
Прилуки не только в Украине, но и в Беларуси. И этот
адрес я брал из карты Беларуси. И таких случаев достаточно. С другой стороны,
понаплодили Парижей, да Бостонов, панимаешь!
P.S. Нашел еще вот такую статью http://scriptogr.am/richie/post/using-viralheats-sentiment-analysis-api-through-excel-2013
P.S. Нашел еще вот такую статью http://scriptogr.am/richie/post/using-viralheats-sentiment-analysis-api-through-excel-2013
Комментариев нет:
Отправить комментарий