Skip to content Skip to sidebar Skip to footer

Postcode en huisnummer in Excel met ApiCheck (inclusief coördinaten)

Werk je met Excel- of CSV-bestanden waarin alleen de postcode en het huisnummer staan, maar wil je die gegevens verrijken met extra informatie zoals lengte- en breedtegraad? Dan kun je dat eenvoudig automatiseren met de ApiCheck API en een klein script in Node.js.

Deze blog laat je stap voor stap zien hoe je met één script je dataset uitbreidt met lat/lon-coördinaten voor elk adres in Nederland.

Maak een bestand met de naam “package.json“, met de onderstaande content:

{
    "name": "csv-lat-long",
    "version": "1.0.0",
    "description": "A script that reads a CSV file, fetches the lat and long using ApiCheck API and appends to each row",
    "main": "index.js",
    "scripts": {
        "start": "node index.js"
    },
    "dependencies": {
        "fast-csv": "^4.3.6",
        "request": "^2.88.2"
    }
}

Zorg dat je node hebt geinstalleerd, en dat het npm commando beschikbaar is in je terminal.
Navigeer in je terminal naar de locatie waat je package.json bestaand staat, en voer het commando “npm install” uit.

Zodra alle modules geïnstalleerd zijn maak je een nieuw bestand met de naam “index.js“. Voeg hieraan onderstaande code toe.

Pas de volgende regels aan:

  • Regel 9: defineer de naam het input csv bestpostcode huisnummer Excel ApiCheckand
  • Regel 15 t/m 17: defineer de namen van de kolommen waar de postcode, huisnummer en eventueel toevoeging in staan.
  • Regel 23: Pas YOUR_API_KEY aan naar je eigen api-key
  • Regel 52: Defineer de naam van jou output csv bestand (dit kan ook de naam zijn van je input csv bestand, en zal dan overschreven worden)
const fs = require('fs');
const fastCsv = require('fast-csv');
const request = require("request");
let outputRow = [];
startRead();
function startRead() {
 const stream = fs.createReadStream('file.csv')
    .on('error', (error) => {
        console.log(`An error occurred while reading the file: ${error}`);
    })
    .pipe(fastCsv.parse({ headers: true, delimiter: ';' }))
    .on('data', async (row) => {
        const postalCode = row.Postcode;
        const houseNumber = row.Huisnummer.replace(/[^0-9.]/g, '');
        const numberAddition = row.Toevoeging.replace(/[^0-9.]/g, '');
        if (postalCode != undefined || houseNumber != undefined) {
            const options = {
                url: `https://api.apicheck.nl/lookup/v1/address/nl?postalcode=${postalCode}&number=${houseNumber}&numberAddition=${numberAddition}`,
                headers: {
                    'X-api-key': 'YOUR_API_KEY'
                },
                json: true
            };
            stream.pause();
            request(options, (err, res, body) => {
                if (err) {
                    console.log(`An error occurred while making the API request: ${err}`);
                } else {
                    if (res.statusCode !== 200) {
                        console.log(`An error occurred with status code: ${res.statusCode} and message : ${JSON.stringify(body)}`);
                        row.latitude = "";
                        row.longitude = "";
                        outputRow.push(row);
                    } else {
                        row.latitude = body.data.Location.Coordinates.latitude;
                        row.longitude = body.data.Location.Coordinates.longitude;
                        outputRow.push(row);
                    }
                }
                stream.resume();
            });
        } else {
            console.log(`Skipping the row as either postalCode or houseNumber is missing`)
        }
    })
    .on('end', () => {
        console.log('CSV file successfully processed');
        const writeStream = fs.createWriteStream('file.csv', { flags: 'w' });
        fastCsv.writeToStream(writeStream, outputRow, { headers: true, delimiter: ';' }).on('finish', () => {
            console.log('CSV file successfully written');
            writeStream.end();
        });
    });
}

Voer het script uit met het commando “npm index.js”

Werken met Excel-bestanden en CSV’s: handig om te weten

Excel is een krachtig hulpmiddel voor het beheren van adresgegevens, klantlijsten en verzendinformatie. Wanneer je met postcode- en huisnummervelden werkt, is het belangrijk dat je kolomnamen duidelijk benoemt (zoals Postcode, Huisnummer, Toevoeging) zodat elk script of validatiesysteem deze correct kan uitlezen.

Bestanden in .csv-formaat (gescheiden door een puntkomma of komma) zijn het meest geschikt voor automatische verwerking. Zorg er bij het opslaan in Excel altijd voor dat je kiest voor “CSV (gescheiden door lijstscheidingstekens)” om compatibiliteit te waarborgen.

💡 Wil je meer weten over hoe je CSV-bestanden correct opslaat of opmaakt in Excel?
Lees dan deze handleiding van Microsoft:
👉 Een werkblad opslaan als CSV-bestand – Microsoft Support