Esportazione · Google Sheets

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.

Questa configurazione è adatta per report orari o giornalieri. Google Sheets e Looker Studio memorizzano i dati nella cache: per il monitoraggio della redazione al secondo, usare la dashboard di NowMetrix.

1. Preparare la chiave API e il foglio di calcolo

  1. In NowMetrix, aprire Impostazioni → API e creare una chiave separata con etichetta Google Sheets.
  2. Copiare la chiave completa quando viene mostrata. In seguito non sarà più possibile visualizzarla.
  3. Annotare l’ID del tracker del sito da esportare.
  4. Creare un nuovo foglio Google, ad esempio NowMetrix Export.
  5. 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:

  1. Aprire Impostazioni del progetto usando l’icona a forma di ingranaggio.
  2. In Proprietà dello script, selezionare Aggiungi proprietà dello script.
  3. 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
Non inserire mai la chiave API in una cella del foglio, in un parametro del report, nel codice sorgente dello script, in un URL o in un messaggio di log. Le proprietà dello script impediscono che la chiave compaia nel foglio di lavoro, ma è comunque necessario considerare affidabili le persone che possono modificare il progetto Apps Script.

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

  1. Assegnare al progetto il nome NowMetrix Google Sheets Export nell’angolo in alto a sinistra.
  2. Salvare il progetto Apps Script usando l’icona del dischetto o la scorciatoia da tastiera.
  3. Selezionare syncNowMetrixDaily nel menu delle funzioni nella barra degli strumenti dell’editor.
  4. Selezionare Esegui accanto al menu delle funzioni.
Non selezionare Distribuisci. Questa esportazione non è un’app web, un’API eseguibile, un componente aggiuntivo o una libreria e non richiede alcuna distribuzione. Eseguire direttamente la funzione nell’editor.

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.

  1. Verificare di aver creato il progetto Apps Script e che l’indirizzo email dello sviluppatore sia il proprio.
  2. Selezionare Avanzate nella schermata dell’avviso.
  3. Proseguire verso il progetto denominato. Google potrebbe indicare il link come non sicuro perché il progetto privato non è verificato.
  4. 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.
Interrompere la procedura se l’indirizzo email dello sviluppatore non è il proprio, se non è stato creato il progetto o se il codice è diverso dall’esempio. Se Google richiede l’accesso a tutti i fogli di calcolo, annullare, verificare che @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

  1. Creare o aprire un report in Looker Studio.
  2. Selezionare Aggiungi dati → Google Sheets.
  3. Selezionare il foglio di calcolo e il foglio di lavoro Daily.
  4. Usare la prima riga come intestazione e collegare l’origine dati.
  5. Verificare che date sia una data e che pageviews e visits siano 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
Un Recap come 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 @OnlyCurrentDoc nello 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.
L’accesso API segue i tracker autorizzati per l’utente NowMetrix. La rimozione di tale accesso o la revoca della chiave interrompe le esportazioni future, ma non elimina i dati già copiati in Google.

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.