Houd uw NowMetrix-statistieken bij in Google Sheets
Gebruik Google Apps Script om dagelijkse NowMetrix-gegevens veilig op te halen, het spreadsheet volgens een schema te vernieuwen en beschikbaar te maken voor berekeningen, delen of rapporten in Looker Studio.
Zo werkt de koppeling
Het spreadsheet fungeert als een kleine gegevensbrug die u zelf beheert:
NowMetrix REST API → Google Apps Script → Google Sheet → optional Looker Studio report
De gegevens worden niet geïmporteerd in Google Analytics. Apps Script vraagt het geselecteerde NowMetrix- endpoint op met uw API-sleutel en schrijft de geretourneerde rijen naar het spreadsheet. Looker Studio kan dat werkblad vervolgens als afzonderlijke gegevensbron gebruiken.
1. Bereid de API-sleutel en het spreadsheet voor
- Open in NowMetrix Instellingen → API en maak een aparte sleutel aan met het label Google Sheets.
- Kopieer de volledige sleutel zodra deze wordt weergegeven. Later kunt u deze niet opnieuw bekijken.
- Noteer de tracker-ID van de website die u wilt exporteren.
- Maak een nieuw Google Sheet, bijvoorbeeld NowMetrix Export.
- Stel de tijdzone van het spreadsheet in op dezelfde tijdzone als die van de NowMetrix-tracker.
Het onderstaande voorbeeld exporteert de laatste 30 dagelijkse rijen uit /v1/overview. Elke rij bevat
de datum, tracker, tijdzone van de tracker, Pageviews en bezoeken.
2. Sla de API-sleutel op in Script Properties
Selecteer in het Google Sheet Extensies → Apps Script. Vervolgens:
- Open Projectinstellingen via het tandwielpictogram.
- Selecteer onder Script Properties de optie Add script property.
- Voeg de volgende twee eigenschappen toe:
| Eigenschap | Waarde |
|---|---|
NOWMETRIX_API_KEY |
Uw sleutel, die begint met nm_ |
NOWMETRIX_TRACKER_ID |
De tracker-ID die u wilt exporteren |
3. Voeg het exportscript toe
Vervang de inhoud van Code.gs door dit script. Het controleert de configuratie, beperkt de toegang
tot spreadsheets tot het huidige document, handelt API-fouten af en vervangt het werkblad alleen na een
geslaagd antwoord.
/**
* @OnlyCurrentDoc
*/
const NOWMETRIX_BASE_URL = 'https://api.nowmetrix.com';
function fetchNowMetrix(path) {
const properties = PropertiesService.getScriptProperties();
const apiKey = properties.getProperty('NOWMETRIX_API_KEY');
const trackerId = properties.getProperty('NOWMETRIX_TRACKER_ID');
if (!apiKey || !trackerId) {
throw new Error('NOWMETRIX_API_KEY or NOWMETRIX_TRACKER_ID is missing.');
}
const separator = path.includes('?') ? '&' : '?';
const url = NOWMETRIX_BASE_URL
+ path
+ separator
+ 'site=' + encodeURIComponent(trackerId);
const response = UrlFetchApp.fetch(url, {
method: 'get',
headers: {
Authorization: 'Bearer ' + apiKey,
Accept: 'application/json'
},
muteHttpExceptions: true
});
const status = response.getResponseCode();
const body = response.getContentText();
if (status < 200 || status >= 300) {
throw new Error('NowMetrix API returned HTTP ' + status + ': ' + body);
}
return JSON.parse(body);
}
function toSheetDate(value) {
const parts = value.split('-').map(Number);
return new Date(parts[0], parts[1] - 1, parts[2]);
}
function syncNowMetrixDaily() {
const result = fetchNowMetrix('/v1/overview?days=30');
const rows = result.daily.map(day => [
toSheetDate(day.date),
result.site,
result.timezone,
day.pageviews,
day.visits
]);
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName('Daily')
|| spreadsheet.insertSheet('Daily');
const values = [
['date', 'tracker', 'timezone', 'pageviews', 'visits'],
...rows
];
sheet.clearContents();
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
sheet.setFrozenRows(1);
sheet.getRange(1, 1, 1, values[0].length).setFontWeight('bold');
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, 1).setNumberFormat('yyyy-mm-dd');
sheet.getRange(2, 4, rows.length, 2).setNumberFormat('#,##0');
}
sheet.autoResizeColumns(1, values[0].length);
}
Vervang NOWMETRIX_API_KEY niet door de werkelijke sleutel in de broncode. Het script leest deze tijdens
runtime uit Script Properties. Laat @OnlyCurrentDoc bovenaan staan: hiermee vraagt Google toegang
tot dit spreadsheet aan in plaats van tot alle spreadsheets in uw account.
4. Sla het script op en voer het één keer uit
- Geef het project in de linkerbovenhoek de naam NowMetrix Google Sheets Export.
- Sla het Apps Script-project op via het diskettepictogram of de sneltoets.
- Selecteer
syncNowMetrixDailyin het functiemenu op de werkbalk van de editor. - Selecteer Run naast het functiemenu.
5. Autoriseer uw eigen Apps Script-project
Google vraagt de eerste keer dat het script wordt uitgevoerd om toestemming. Selecteer Review permissions en kies het Google-account dat eigenaar is van het spreadsheet.
Een waarschuwing zoals Google hasn't verified this app is normaal bij een privé Apps Script-project dat u zelf hebt gemaakt. Het e-mailadres van de ontwikkelaar dat Google toont, moet uw eigen Google-account zijn. Het project is geen Google-app van NowMetrix en geeft NowMetrix geen toegang tot uw Google-account.
- Bevestig dat u het Apps Script-project hebt gemaakt en dat het e-mailadres van de ontwikkelaar van u is.
- Selecteer Advanced op het waarschuwingsscherm.
- Ga door naar uw project met de opgegeven naam. Google kan deze link als onveilig aanduiden omdat het privéproject niet is geverifieerd.
- Controleer de gevraagde rechten en selecteer Allow of Continue.
| Recht | Waarom dit nodig is |
|---|---|
| Toegang tot het huidige spreadsheet | Het werkblad Daily in dit Google Sheet maken of bijwerken. |
| Verbinding maken met een externe service | Een HTTPS-verzoek naar https://api.nowmetrix.com verzenden. |
@OnlyCurrentDoc helemaal bovenaan Code.gs staat, sla het bestand op en
voer de functie opnieuw uit.
Als u al bredere toegang tot spreadsheets hebt goedgekeurd, verwijder het project dan via Google Account → Security → Connections to third-party apps and services. Voer het opgeslagen script daarna opnieuw uit om de beperkte rechten aan te vragen.
Google beschrijft deze autorisatiestroom en de beperking van @OnlyCurrentDoc in de
handleiding voor Apps Script-autorisatie.
6. Controleer de eerste export
Na de autorisatie gaat Apps Script verder met de uitvoering. Wacht in het uitvoeringslogboek op Execution completed, ga terug naar het spreadsheet en open het nieuwe werkblad Daily. Het resultaat moet er ongeveer zo uitzien:
| date | tracker | timezone | pageviews | visits |
|---|---|---|---|---|
| 2026-08-22 | TRACKER_ID | Europe/Zurich | 81,240 | 53,210 |
| 2026-08-23 | TRACKER_ID | Europe/Zurich | 77,480 | 50,195 |
7. Plan automatische updates
Open in Apps Script via het klokpictogram Triggers en voeg een trigger toe:
| Functie | syncNowMetrixDaily |
|---|---|
| Implementatie | Head |
| Gebeurtenisbron | Time-driven |
| Frequentie | Elk uur, of minder vaak voor een dagelijks rapport |
De trigger wordt uitgevoerd onder het Google-account waarmee deze is gemaakt. Houd dat account actief en controleer meldingen over fouten in Apps Script. Vermijd onnodig frequente verzoeken: de openbare NowMetrix API staat momenteel 20 verzoeken per minuut per tracker toe, gedeeld over sleutels en gebruikers.
Het voorbeeld vervangt de tabel met de meest recente 30 dagen bij elke geslaagde uitvoering. Zo voorkomt u dubbele datums en blijft het spreadsheet compact.
8. Gebruik het werkblad in Looker Studio
- Maak een rapport in Looker Studio of open een bestaand rapport.
- Selecteer Add data → Google Sheets.
- Selecteer het spreadsheet en het werkblad Daily.
- Gebruik de eerste rij als kopteksten en verbind de gegevensbron.
- Controleer of
dateeen datum is enpageviewsenvisitsnumerieke statistieken zijn.
U kunt nu tijdreeksgrafieken, scorecards, tabellen en berekende velden maken, zoals
pageviews / visits. Looker Studio leest dit als een afzonderlijke gegevensbron; de waarden van
NowMetrix worden niet omgezet in Google Analytics-gebeurtenissen.
Google beschrijft de overige rapportinstellingen in de handleiding voor de Google Sheets-connector.
Andere NowMetrix-gegevens exporteren
| Toepassing | Voorbeeld van endpoint | Aanbevolen gedrag voor het werkblad |
|---|---|---|
| Dagelijkse Pageviews en bezoeken | /v1/overview?days=30 |
Rijen per tracker en datum vervangen of bijwerken |
| Toppagina’s van gisteren | /v1/recap?preset=yesterday&limit=100 |
Eenmaal per dag toevoegen of het huidige resultaat vervangen |
| Huidige live momentopname | /v1/realtime |
De tijdstempel van het antwoord toevoegen bij het opbouwen van een trend |
| Huidige verkeersbronnen | /v1/sources |
De tijdstempel van het antwoord toevoegen of de huidige momentopname vervangen |
preset=last30 bevat totalen voor de volledige voortschrijdende periode. Voeg deze
waarden niet elke dag toe. Exporteer voor een optelbare artikelgeschiedenis een afgeronde periode, zoals
yesterday, en sla de periode bij elke rij op.
Checklist voor beveiliging en delen
- Gebruik een afzonderlijke NowMetrix API-sleutel voor de export en geef alleen toegang tot de benodigde tracker.
- Sla de sleutel uitsluitend op in Script Properties of een andere server-side opslag voor geheime waarden.
- Laat
@OnlyCurrentDocin het script staan om de toegang tot Google Sheets tot dit document te beperken. - Neem de sleutel nooit op in cellen, formules, rapportparameters, URL’s, schermafbeeldingen of logboeken.
- Beperk de bewerkingsrechten voor het Apps Script-project. Beschouw editors als vertrouwde gebruikers.
- Autoriseer het script alleen als Google uw eigen account als ontwikkelaar toont.
- Gebruik voor elk NowMetrix-account een afzonderlijk spreadsheet dat eigendom is van de klant.
- Controleer de instellingen voor delen van zowel Google Sheets als Looker Studio voordat u een rapport publiceert.
- Herroep de API-sleutel onmiddellijk als het spreadsheet, het script of het Google-account mogelijk is gehackt.
Problemen oplossen
| Probleem | Wat u moet controleren |
|---|---|
HTTP 401 |
De API-sleutel ontbreekt, is onvolledig, ongeldig of ingetrokken. |
HTTP 403 |
De API-sleutel heeft geen toegang tot de geconfigureerde tracker. |
HTTP 429 |
De API-limiet voor de tracker is overschreden. Verlaag de frequentie van de trigger. |
HTTP 503 |
De analyticsbackend is tijdelijk niet beschikbaar. Behoud de bestaande gegevens in het spreadsheet en probeer het later opnieuw. |
| Geen werkblad Daily | Voer syncNowMetrixDaily handmatig uit en bekijk de uitvoeringsdetails van Apps Script. |
| Google meldt dat de app niet is geverifieerd | Dit is normaal voor uw privéscript. Ga alleen door als u het project hebt gemaakt en Google uw eigen e-mailadres als ontwikkelaar toont. |
| Google vraagt toegang tot alle spreadsheets | Annuleer, voeg @OnlyCurrentDoc bovenaan Code.gs toe, sla het bestand op en voer de functie opnieuw uit. |
| Datums lijken onjuist | Stel de tijdzone van Google Sheets gelijk aan de tijdzone van de tracker die door de API wordt geretourneerd. |