Office Guru

Webservice - RSS-ek használata Excelben

2018. május 06. - Office Guru

Egy kedves Olvasóm építget egy kis Exceles dashboardot, amelybe szeretne egy egyszerű időjárásos szekciót beépíteni, úgyhogy a következő posztban bemutatok egy ilyen, automatikusan frissülő adatokkal operáló megoldást. Amúgy ez az igény hasonló a legtöbb Exceles feladathoz - nem csak egyetlen megoldás létezik: jelen esetben például nyugodtan fordulhatunk a Power BI-hoz, de VBA-ból is leprogramozhatunk néhány soros kóddal egy ilyen frissülést, a mai poszt viszont kizárólag Excelből fog operálni.

Első körben válasszuk ki, hogy melyik oldalról akarjuk beemelni az időjárási adatainkat, fontos, hogy az adott szolgáltató elérhetővé tegye xml formátumban (rssként) is az előrejelzését. Én most a köpönyeg.hu-t választom, ahol szimplán csak az rss-ikonra kattintok a jobb felső sarokban az oldalon:

1_4.JPGValami ilyesmit fogunk látni:

3_4.JPGMegfogom a böngésző címsorából az elérhetőséget és vágólapra helyezem:

2_4.JPGEzután az Excel Data ribbonfülén a Get External szekcióban a From Web opciót válasszuk, majd a felugró ablakban adjuk meg az RSS-elérhetőségünket:

4_4.JPG

5_5.JPGHelyezzük egy üres munkalapunk valamelyik cellájára:

6_4.JPGLátható, hogy meg is érkeztek a később már automatikusan is frissíthető adataink:

7_4.JPG

8_3.JPGInnentől kezdve pedig már csak be kell hivatkozni a megfelelő cellát a dashboardunk megfelelő részéhez és olyanra formázni, amilyenre szeretnénk. De ez volt egyébként a létező legegyszerűbb megoldás, ennél egy fokkal hatékonyabb és szebb megoldás a Webservice formula használata. Ezt a következőképp tudjuk megcsinálni.

Elsőként illesszük be az xml-es rss linkünket egy cellába a munkalapon:

9_1.JPGEzután egy másik cellába nyerjük ki a linkről az adatokat a WEBSERVICE nevű formula segítségével:

=WEBSERVICE(A1)

10_1.JPGA Webservice-formula a webről hoz be nekünk adatokat a paramétereként megadott URL alapján és azonnal látható is lesz, hogy abban a cellában, ahova a fenti formulát beírtuk, meg fog jelenni az xml tartalma.

Már ebből is lehet hegesztgetni, hogy kinyerjük az adatokat, de a Webservice-függvény általában kéz a kézben jár a FILTERXML formulával, ami egy XML-tartalomból ad nekünk vissza meghatározott adatot a második paramétereként megadott XPath alapján. Anélkül, hogy bármilyen mélységben belemennénk ebbe, az XPath az ún. XSLT-standard részeként arra használható, hogy egy XML dokumentum attribútumain vagy elemein navigáljunk keresztül.

Tehát egy újabb cellába írjuk be a következőt:

=FILTERXML(A3,"(//description)[last()]")

Az első paraméter, az A3, az a cella, ahova az előbbi WEBSERVICE formulával kinyertük a valid XML-formátumú tartalmunkat, a második paraméter pedig az XPath-formátumban megadott szövegrész, amit az XML-ben akarunk levadászni.

//description beírásával az XML-ben megkeressük az első Description előfordulást, az utána következő [last()] argumentummal pedig azt érjük el, hogy ne az első, hanem az utolsó Description előfordulást kapjuk vissza - hiszen az XML-ben, ha jól megnézzük, ott van az, amit keresünk.

11_1.JPGEzután már csak annyi van hátra, hogy egy SEARCH formulát és egy MID valamint egy LEN formulát egybeágyazzunk (vagy akármilyen más darabolós megoldást), hogy kinyerjük azt a szövegrészt, amit akarunk - gondolok itt mondjuk a helységre vagy az adott napi hőmérsékleti adatokra. És ezzel már meg is van az automatikusan frissülő időjárási adatunk, már csak bele kell varázsnolnunk egy szép napocskás, felhős, esős stb. formátumú mini-dashboardba.

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr2213896102

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

kovács pisti 2018.05.07. 07:56:41

(egy kevésbé kedves olvasó vagyok)
érdekelt a dolog és kipróbáltam, tulajdonképpen műxik
DE:
- a Webservice formulával behozok adatokat ... és?? itt jól esett volna egy olyan segítség, mint az innen kezdődő második részben van is
- a FILTERXML-es rész már teljesen jól használható ... ha budapesti vagyok, de én pl. Miskolcra szeretném ezt megcsinálni, ebben az RSS nem segít, oda URL-ből kellene behúzni a cuccost és főleg kibányászni ezek után a hasznosat - de HOGY?

Kecskerépa 2018.05.15. 06:21:29

Tisztelt Office Guru szerkesztő!

Nagyon hiánypótló ez a blog, számos jó ötletet merítettem innen. Nagyon köszönöm!

FogarasiSzilvi 2018.05.16. 15:53:19

nem ismertem, jópofa. :)
viszont wordpress feed-et nem sikerült sehogyan sem beimportálnom. :( Mi lehet a módja/magyarázata?

FogarasiSzilvi 2018.05.16. 15:54:52

@kovács pisti: Miskolc témára: szerintem erre a köpnyeg.hu feed-je nem tartalmaz adatot, különben az is megjelenne a feed-ben. De lehet, hogy teljesen félre értem, akkor bocsánat.

Office Guru 2018.05.21. 21:34:00

@kovács pisti: Sikerült boldogulnod vagy kell segítség?

kovács pisti 2018.05.24. 18:07:21

@Office Guru: követem a blogot, mert érdekes témákat vet fel, gyakran olyanokat is, amit soha az életben nem fogok használni, de azért elgondolkodom rajta

ez a webről adatokat lehúzni dolgot már régen ki szerettem volna próbálni, csak úgy magamnak, most nem jött össze, felbosszantott
éppen el vagyok havazva, de a kulcsszavak alapján úgy egy hónap múlva nekiindulok és a web angol nyelvterületén begyűjtöm ami nekem kell

köszönöm!
süti beállítások módosítása