Mantenere aggiornate le metriche di NowMetrix in Google Sheets
Usare Google Apps Script per recuperare in sicurezza i dati giornalieri di NowMetrix, aggiornare il foglio secondo una pianificazione e renderlo disponibile per calcoli, condivisioni o report di Looker Studio.
Come funziona il collegamento
Il foglio di calcolo funge da piccolo ponte dati sotto il controllo del cliente:
NowMetrix REST API → Google Apps Script → Google Sheet → optional Looker Studio report
I dati non vengono importati in Google Analytics. Apps Script invia una richiesta all’endpoint NowMetrix selezionato usando la chiave API e scrive nel foglio le righe restituite. Looker Studio può quindi utilizzare quel foglio di lavoro come origine dati separata.
1. Preparare la chiave API e il foglio di calcolo
- In NowMetrix, aprire Impostazioni → API e creare una chiave separata con etichetta Google Sheets.
- Copiare la chiave completa quando viene mostrata. In seguito non sarà più possibile visualizzarla.
- Annotare l’ID del tracker del sito da esportare.
- Creare un nuovo foglio Google, ad esempio NowMetrix Export.
- Impostare il fuso orario del foglio sullo stesso fuso orario del tracker NowMetrix.
L’esempio seguente esporta le ultime 30 righe giornaliere da /v1/overview. Ogni riga contiene
la data, il tracker, il fuso orario del tracker, i Pageview e le visite.
2. Salvare la chiave API nelle proprietà dello script
Nel foglio Google, selezionare Estensioni → Apps Script. Quindi:
- Aprire Impostazioni del progetto usando l’icona a forma di ingranaggio.
- In Proprietà dello script, selezionare Aggiungi proprietà dello script.
- Aggiungere le due proprietà seguenti:
| Proprietà | Valore |
|---|---|
NOWMETRIX_API_KEY |
La chiave che inizia con nm_ |
NOWMETRIX_TRACKER_ID |
L’ID del tracker da esportare |
3. Aggiungere lo script di esportazione
Sostituire il contenuto di Code.gs con questo script. Lo script verifica la configurazione,
limita l’accesso ai fogli al documento corrente, gestisce gli errori API e sostituisce il foglio di
lavoro solo dopo una risposta corretta.
/**
* @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);
}
Non sostituire NOWMETRIX_API_KEY con la chiave effettiva nel codice sorgente. Lo script la legge
dalle proprietà dello script durante l’esecuzione. Lasciare @OnlyCurrentDoc all’inizio: indica a
Google di richiedere l’accesso a questo foglio, anziché a tutti i fogli presenti nell’account.
4. Salvare ed eseguire lo script una volta
- Assegnare al progetto il nome NowMetrix Google Sheets Export nell’angolo in alto a sinistra.
- Salvare il progetto Apps Script usando l’icona del dischetto o la scorciatoia da tastiera.
- Selezionare
syncNowMetrixDailynel menu delle funzioni nella barra degli strumenti dell’editor. - Selezionare Esegui accanto al menu delle funzioni.
5. Autorizzare il proprio progetto Apps Script
Google richiede l’autorizzazione alla prima esecuzione dello script. Selezionare Esamina autorizzazioni e scegliere l’account Google proprietario del foglio.
È normale visualizzare un avviso come Google non ha verificato questa app per un progetto Apps Script privato creato autonomamente. L’indirizzo email dello sviluppatore mostrato da Google dovrebbe essere quello del proprio account Google. Il progetto non è un’app Google di NowMetrix e non consente a NowMetrix di accedere all’account Google.
- Verificare di aver creato il progetto Apps Script e che l’indirizzo email dello sviluppatore sia il proprio.
- Selezionare Avanzate nella schermata dell’avviso.
- Proseguire verso il progetto denominato. Google potrebbe indicare il link come non sicuro perché il progetto privato non è verificato.
- Esaminare le autorizzazioni richieste e selezionare Consenti o Continua.
| Autorizzazione | Perché è necessaria |
|---|---|
| Accesso al foglio di calcolo corrente | Creare o aggiornare il foglio di lavoro Daily in questo foglio Google. |
| Connessione a un servizio esterno | Inviare una richiesta HTTPS a https://api.nowmetrix.com. |
@OnlyCurrentDoc sia all’inizio di Code.gs, salvare ed
eseguire di nuovo la funzione.
Se è già stato autorizzato un accesso più ampio ai fogli di calcolo, rimuovere il progetto in Account Google → Sicurezza → Connessioni ad app e servizi di terze parti, quindi eseguire di nuovo lo script salvato per richiedere autorizzazioni più limitate.
Google descrive questo flusso di autorizzazione e la limitazione @OnlyCurrentDoc nella
guida all’autorizzazione di Apps Script.
6. Verificare la prima esportazione
Dopo l’autorizzazione, Apps Script prosegue l’esecuzione. Attendere Esecuzione completata nel log di esecuzione, tornare al foglio e aprire il nuovo foglio di lavoro Daily. Il risultato dovrebbe essere simile al seguente:
| 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. Programmare gli aggiornamenti automatici
In Apps Script, aprire Trigger usando l’icona dell’orologio e aggiungere un trigger:
| Funzione | syncNowMetrixDaily |
|---|---|
| Distribuzione | Head |
| Origine dell’evento | Basato sul tempo |
| Frequenza | Ogni ora, o meno frequentemente per un report giornaliero |
Il trigger viene eseguito dall’account Google che lo ha creato. Mantenere attivo l’account e controllare le notifiche di errore di Apps Script. Evitare richieste inutilmente frequenti: la API pubblica di NowMetrix consente attualmente 20 richieste al minuto per tracker, condivise tra chiavi e utenti.
L’esempio sostituisce la tabella relativa agli ultimi 30 giorni a ogni esecuzione completata correttamente. In questo modo evita date duplicate e mantiene il foglio compatto.
8. Usare il foglio di lavoro in Looker Studio
- Creare o aprire un report in Looker Studio.
- Selezionare Aggiungi dati → Google Sheets.
- Selezionare il foglio di calcolo e il foglio di lavoro Daily.
- Usare la prima riga come intestazione e collegare l’origine dati.
- Verificare che
datesia una data e chepageviewsevisitssiano metriche numeriche.
È ora possibile creare grafici temporali, schede di riepilogo, tabelle e campi calcolati come
pageviews / visits. Looker Studio legge questi dati come un’origine separata; non
trasforma i valori di NowMetrix in eventi di Google Analytics.
Google descrive le restanti impostazioni dei report nella guida al connettore Google Sheets.
Esportare altri dati di NowMetrix
| Caso d’uso | Esempio di endpoint | Comportamento consigliato del foglio |
|---|---|---|
| Pageview e visite giornalieri | /v1/overview?days=30 |
Sostituire o aggiornare le righe in base a tracker e data |
| Pagine principali di ieri | /v1/recap?preset=yesterday&limit=100 |
Aggiungere una volta al giorno o sostituire il risultato corrente |
| Snapshot live corrente | /v1/realtime |
Aggiungere l’ora della risposta quando si crea un trend |
| Fonti di traffico correnti | /v1/sources |
Aggiungere l’ora della risposta o sostituire lo snapshot corrente |
preset=last30 contiene i totali dell’intero intervallo mobile. Non aggiungere
questi valori ogni giorno. Per una cronologia cumulabile degli articoli, esportare un periodo completato
come yesterday e memorizzare l’intervallo in ogni riga.
Checklist per sicurezza e condivisione
- Usare una chiave API NowMetrix separata per l’esportazione e concedere solo l’accesso ai tracker necessari.
- Salvare la chiave esclusivamente nelle proprietà dello script o in un altro archivio di segreti lato server.
- Mantenere
@OnlyCurrentDocnello script per limitare l’accesso di Google Sheets a questo documento. - Non includere mai la chiave in celle, formule, parametri dei report, URL, screenshot o log.
- Limitare l’accesso in modifica al progetto Apps Script. Chi può modificarlo deve essere considerato un utente affidabile.
- Autorizzare lo script solo quando Google mostra il proprio account come sviluppatore.
- Usare un foglio di calcolo separato, di proprietà del cliente, per ogni account NowMetrix.
- Controllare le impostazioni di condivisione sia del foglio Google sia di Looker Studio prima di pubblicare un report.
- Revocare immediatamente la chiave API se il foglio, lo script o l’account Google potrebbero essere compromessi.
Risoluzione dei problemi
| Problema | Cosa controllare |
|---|---|
HTTP 401 |
La chiave API è assente, incompleta, non valida o revocata. |
HTTP 403 |
La chiave API non consente l’accesso al tracker configurato. |
HTTP 429 |
È stato superato il limite API complessivo del tracker. Ridurre la frequenza del trigger. |
HTTP 503 |
Il backend di analytics è temporaneamente non disponibile. Mantenere i dati esistenti nel foglio e riprovare più tardi. |
| Nessun foglio di lavoro Daily | Eseguire manualmente syncNowMetrixDaily e controllare i dettagli dell’esecuzione in Apps Script. |
| Google indica che l’app non è verificata | È previsto per uno script privato. Proseguire solo se il progetto è stato creato personalmente e Google mostra il proprio indirizzo email come sviluppatore. |
| Google richiede l’accesso a tutti i fogli di calcolo | Annullare, aggiungere @OnlyCurrentDoc all’inizio di Code.gs, salvare ed eseguire di nuovo la funzione. |
| Le date sembrano errate | Impostare nel foglio Google lo stesso fuso orario del tracker restituito dalla API. |