2017

Jul

14

Av

I FileMaker Pro 16 introducerades nya funktioner för hantering av JSON-formatet och en ny fönstertyp, Kort, som båda förenklar utveckling av nya lösningar. Alla har väl hört talas om Eniro, det finns sedan några år tillbaka ett utmärkt API för att hämta företagsinformation från Eniro rakt in i en FileMaker-databas. Med de nya funktionerna i FileMaker Pro 16 har det dessutom blivit mycket enklare!

Det finns några olika funktioner i Eniros API som kan användas, den enklaste och vanligaste är att söka efter valfritt sökbegrepp t.ex. företagsnamn eller telefonnummer. I det här exemplet har jag valt att söka efter telefonnummer och hämta företagets namn, organisationsnummer ,adress och GPS-koordinater till en post i FileMaker-databasen.

Eniro_MV

Ofta tillhör ett telefonnummer endast ett företag, men större företag kan mycket väl finnas på flera adresser trots att de har samma telefonnummer. I sådana fall har jag valt att visa alla adresserna i en lista, i ett fönster av den nya typen Kort, och låta användaren välja vilket företag som önskas.

Eniro_TP

Innan du kan börja skicka frågor till Eniros API måste du registrera dig på deras webbsida api.eniro.com. När du registrerat dig och aktiverat ditt konto får du en nyckel (key) som du ska använda tillsammans med det profil-namn du angett vid registreringen. (Du kan skapa nya profiler senare.) Registreringen är gratis, men antalet sökningar är begränsat per månad.

Jag har gjort ett manus som startas när du skriver in något i fältet Telefonnummer. Det startas med en manus-trigger VidObjektValidera för fältet. Manuset tar först bort alla tecken förutom siffror från telefonnumret med beräkningsfunktionen Filter och placerar resultatet i variabeln $telefonnummer. Anropet till Eniros API görs med manussteget Infoga från URL. Följande URL används:

Substitute(
"https://api.eniro.com/cs/search/basic?profile=<<PROFIL>>&key=<<NYCKEL>>&country=se&version=1.1.3&search_word=<<TELEFONNUMMER>>";
["<<PROFIL>>";EniroAPI::Profil];
["<<NYCKEL>>";EniroAPI::Nyckel];
["<<TELEFONNUMMER>>";$telefonnummer])

Resultatet från Eniro är i formatet JSON och hämtas till variabeln $$eniro.

Om endast ett företag hittas kan fälten med företagsuppgifterna tilldelas direkt. Jag använder funktionen JSONGetElement i manussteget Tilldela fält för varje fält i tabellen.

Eniro_manus2

Om flera företag hittas måste användaren välja vilket företag som avses, jag visar då en lista med företagsnamn och ort. Användaren kan klicka på något företag i listan för att välja det.

Listan visas i ett nytt fönster av typen Kort. Det går att göra detta i princip helt generellt men jag gör enklast möjliga i detta exempel.

Det behövs en ny tabell, jag kallar den Resultat, som endast innehåller ett id-nummer och två beräkningsfält. Från början finns det 25 poster i tabellen, det är maximalt antal som ett resultat från Eniros API kan innehålla. Beräkningsfälten hämtar innehåll från Eniros JSON-resultat, ett företag per post i tabellen. (Finns det fler än 25 företag med samma telefonnummer i resultatet kan dessa hämtas med flera anrop, jag bortser från den extra komplikationen i detta lilla exempel.)

Tekniken för tabellen Resultat är samma som jag tidigare skrivit om i samband med utskrift av långa textfält samt export av textfiler i Markdown-format.

Jag gör en layout som visar innehållet från tabellen Resultat med beräkningsfälten “företagsnamn” och “ort”. Jag ser till att visa layouten i listläge och gör den så bred så att endast företagsnamnet och orten får plats.

Eniro_layout

För att inte visa alla posterna i listan alltid gör jag ett nytt manus som söker fram de poster som innehåller ett resultat, manuset består endast av manussteget Utför sökning och jag lägger in det som en manus-trigger i layouten för VidLayoutÖppna.

Om resultatet från Eniro innehåller flera företag använder jag manussteget Nytt fönster för att visa ett fönster av typen Kort. Fönstret visar layouten Resultat och placeras mitt över huvudlayouten.

Så här ser manuset som söker efter telefonnummer på Eniro ut i sin helhet:

Eniro_manus1

Till sist ser jag till att det finns en knapp för varje post i layouten Resultat som stänger Kort-fönstret och tilldelar uppgifterna om valt företag till posten där du skrivit in telefonnumret.

Manuset för knappen som väljer ett företag ser ut så här:

Eniro_manus3

Du kan ladda ner exempeldatabasen här: EniroAPI.fmp12.

Tänk på att du behöver ett kostnadsfritt konto för Eniro API samt FileMaker Pro 16 för att använda exemplet.

2 kommentarer till ”Sök med Eniro API”

  1. Fabian

    Coolt! Det känns att vi är i början av detta med API:er. Jag skulle vilja kunna söka på organisationsnummer – som ju är mer unikt än telefonnummer – och få fram huvudkontoret först. Om jag testar så får jag fram en lista på alla adresser huller om buller. Jag testade också ett bolag som finns och som jag får fram på allabolag.se, men som inte finns på Eniro.se. Då blev resultatet istället ett helt annat bolag med ett liknande namn (en bokstav till). Känns lite för svajigt för att vi ska kunna använda detta fullt ut, men det är ju klart och tydligt vart vi är på väg.

    Reply
    • Rolf

      Det går att göra väldigt mycket med API:er, det finns otroligt mycket information tillgängligt på internet.

      Tyvärr är man som användare av dem beroende av utgivaren, i det här fallet Eniro. Du får framföra dina synpunkter på sökresultatet till dem :)

      Reply

Skriv en kommentar

  • (will not be published)
  • − 5 = one

Läs också: