Skip to content

Instantly share code, notes, and snippets.

@zrrrzzt
Last active March 21, 2016 19:53
Show Gist options
  • Save zrrrzzt/3820dfdf4758a6906eb7 to your computer and use it in GitHub Desktop.
Save zrrrzzt/3820dfdf4758a6906eb7 to your computer and use it in GitHub Desktop.
Import data from brreg to a google spreadsheet by entering næringskode and registrationdate
/**
*
* Import data from brreg
* @customfunction
**/
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('BRREG')
.addItem('Import from brreg', 'importSetup')
.addToUi();
}
function addHeaders() {
var out = [];
var itemFields = getFields();
itemFields.forEach(function(prop){
out.push(prop.name);
});
writeData([out]);
}
function importSetup() {
var sheet = SpreadsheetApp.getActive();
var ui = SpreadsheetApp.getUi();
var inputKode = ui.prompt(
'Add næringskode',
ui.ButtonSet.OK_CANCEL);
var inputStartdato = ui.prompt(
'Add startdato',
'Format: yyyy-MM-DD',
ui.ButtonSet.OK_CANCEL);
var kode = inputKode.getResponseText();
var startdato = inputStartdato.getResponseText();
var lastRow = sheet.getLastRow();
if (lastRow === 0) {
addHeaders();
}
importBRREG(kode, startdato);
}
function importBRREG(kode, startdato) {
var url = "http://data.brreg.no/enhetsregisteret/enhet.json?$filter=startswith(naeringskode1/kode, '" + kode + "')+and+registreringsdatoEnhetsregisteret+gt+datetime'" + startdato + "T00:00'";
var result = UrlFetchApp.fetch(url);
var json = JSON.parse(result.getContentText());
var data = flattenData(json.data);
writeData(data);
}
function flattenData(list) {
var data = [];
list.forEach(function(item) {
var row = unwrapObject(item);
data.push(row);
});
return data;
}
function getFields() {
var fields = [
{name: 'Organisasjonsnummer', id: 'organisasjonsnummer'},
{name: 'Navn', id: 'navn'},
{name: 'Hjemmeside', id: 'hjemmeside'},
{name: 'Næringskode', id: 'naeringskode1', sub:'kode'},
{name: 'Beskrivelse', id: 'naeringskode1', sub:'beskrivelse'},
{name: 'Postadresse', id: 'postadresse', sub:'adresse'},
{name: 'Postnummer', id: 'postadresse', sub:'postnummer'},
{name: 'Poststed', id: 'postadresse', sub:'poststed'},
{name: 'Kommunenummer', id: 'postadresse', sub:'kommunenummer'},
{name: 'Kommune', id: 'postadresse', sub:'kommune'},
{name: 'Landkode', id: 'postadresse', sub:'landkode'},
{name: 'Land', id: 'postadresse', sub:'land'},
{name: 'Forretningsadresse', id: 'forretningsadresse', sub:'adresse'},
{name: 'Postnummer', id: 'forretningsadresse', sub:'postnummer'},
{name: 'Poststed', id: 'forretningsadresse', sub:'poststed'},
{name: 'Kommunenummer', id: 'forretningsadresse', sub:'kommunenummer'},
{name: 'Kommune', id: 'forretningsadresse', sub:'kommune'},
{name: 'Landkode', id: 'forretningsadresse', sub:'landkode'},
{name: 'Land', id: 'forretningsadresse', sub:'land'}
];
return fields;
}
function unwrapObject(item) {
var out = [];
var itemFields = getFields();
itemFields.forEach(function(prop){
if (prop.sub) {
if (item[prop.id]) {
out.push(item[prop.id][prop.sub] || '');
}
} else {
out.push(item[prop.id] || '');
}
});
return out;
}
function writeData(data) {
var sheet = SpreadsheetApp.getActive();
data.forEach(function(row){
sheet.appendRow(row);
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment