Simpan metrik NowMetrix di Google Sheets
Gunakan Google Apps Script untuk mengambil data NowMetrix harian dengan aman, memperbarui spreadsheet sesuai jadwal, serta menyediakan data untuk kalkulasi, berbagi, atau laporan Looker Studio.
Cara kerja koneksi
Spreadsheet berfungsi sebagai jembatan data kecil yang dikendalikan pelanggan:
NowMetrix REST API → Google Apps Script → Google Sheet → optional Looker Studio report
Data tidak diimpor ke Google Analytics. Apps Script meminta endpoint NowMetrix yang dipilih dengan API key Anda, lalu menulis baris yang dikembalikan ke spreadsheet. Looker Studio kemudian dapat menggunakan lembar kerja tersebut sebagai sumber data terpisah.
1. Siapkan API key dan spreadsheet
- Di NowMetrix, buka Pengaturan → API dan buat key terpisah dengan label Google Sheets.
- Salin seluruh key saat ditampilkan. Key tersebut tidak dapat ditampilkan lagi.
- Catat tracker ID untuk situs web yang ingin Anda ekspor.
- Buat Google Sheet baru, misalnya NowMetrix Export.
- Atur zona waktu spreadsheet agar sama dengan zona waktu tracker NowMetrix.
Contoh di bawah mengekspor 30 baris harian terakhir dari /v1/overview. Setiap baris berisi
tanggal, tracker, zona waktu tracker, pageviews, dan visits.
2. Simpan API key di Script Properties
Di Google Sheet, pilih Ekstensi → Apps Script. Kemudian:
- Buka Pengaturan proyek menggunakan ikon roda gigi.
- Di bagian Properti skrip, pilih Tambahkan properti skrip.
- Tambahkan dua properti berikut:
| Properti | Nilai |
|---|---|
NOWMETRIX_API_KEY |
Key Anda yang diawali nm_ |
NOWMETRIX_TRACKER_ID |
Tracker ID yang akan diekspor |
3. Tambahkan skrip ekspor
Ganti isi Code.gs dengan skrip ini. Skrip memeriksa konfigurasi, membatasi akses
spreadsheet ke dokumen saat ini, menangani error API, dan hanya mengganti lembar kerja setelah
respons berhasil diterima.
/**
* @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);
}
Jangan mengganti NOWMETRIX_API_KEY dengan key sebenarnya di sumber skrip. Skrip membacanya
dari Script Properties saat runtime. Pertahankan @OnlyCurrentDoc di bagian atas: perintah ini
memberi tahu Google untuk meminta akses ke spreadsheet ini, bukan ke semua spreadsheet di akun Anda.
4. Simpan dan jalankan skrip sekali
- Beri nama proyek NowMetrix Google Sheets Export di pojok kiri atas.
- Simpan proyek Apps Script menggunakan ikon disket atau pintasan keyboard.
- Pilih
syncNowMetrixDailydi menu fungsi pada toolbar editor. - Pilih Run di samping menu fungsi.
5. Otorisasi proyek Apps Script Anda sendiri
Google meminta izin saat skrip pertama kali dijalankan. Pilih Tinjau izin dan pilih akun Google yang memiliki spreadsheet tersebut.
Peringatan seperti Google belum memverifikasi aplikasi ini wajar muncul untuk proyek Apps Script pribadi yang Anda buat sendiri. Email developer yang ditampilkan Google harus merupakan akun Google Anda sendiri. Proyek ini bukan aplikasi Google milik NowMetrix dan tidak memberikan akses ke akun Google Anda kepada NowMetrix.
- Pastikan Anda membuat proyek Apps Script dan email developer adalah milik Anda.
- Pilih Lanjutan pada layar peringatan.
- Lanjutkan ke proyek yang Anda beri nama. Google mungkin menandai tautan ini sebagai tidak aman karena proyek pribadi tersebut belum diverifikasi.
- Tinjau izin yang diminta, lalu pilih Allow atau Lanjutkan.
| Izin | Alasan diperlukan |
|---|---|
| Akses ke spreadsheet saat ini | Membuat atau memperbarui lembar kerja Daily di Google Sheet ini. |
| Terhubung ke layanan eksternal | Mengirim permintaan HTTPS ke https://api.nowmetrix.com. |
@OnlyCurrentDoc berada di bagian paling atas Code.gs,
simpan, lalu jalankan kembali fungsinya.
Jika sebelumnya Anda telah menyetujui akses spreadsheet yang lebih luas, hapus proyek tersebut melalui Akun Google → Keamanan → Koneksi ke aplikasi dan layanan pihak ketiga, lalu jalankan kembali skrip yang telah disimpan untuk meminta izin yang lebih terbatas.
Google menjelaskan alur otorisasi ini dan pembatasan @OnlyCurrentDoc dalam
panduan otorisasi Apps Script.
6. Verifikasi ekspor pertama
Setelah otorisasi, Apps Script melanjutkan proses. Tunggu hingga Eksekusi selesai muncul di log eksekusi, kembali ke spreadsheet, lalu buka lembar kerja Daily yang baru. Hasilnya seharusnya kurang lebih seperti berikut:
| 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. Jadwalkan pembaruan otomatis
Di Apps Script, buka Pemicu menggunakan ikon jam, lalu tambahkan trigger:
| Fungsi | syncNowMetrixDaily |
|---|---|
| Deployment | Head |
| Sumber peristiwa | Berbasis waktu |
| Frekuensi | Setiap jam, atau lebih jarang untuk laporan harian |
Trigger berjalan menggunakan akun Google yang membuatnya. Pastikan akun tersebut tetap aktif dan tinjau notifikasi kegagalan Apps Script. Hindari permintaan yang terlalu sering: API publik NowMetrix saat ini mengizinkan 20 permintaan per menit untuk setiap tracker, yang digunakan bersama oleh semua key dan pengguna.
Contoh ini mengganti tabel 30 hari berjalan pada setiap proses yang berhasil. Dengan begitu, tanggal duplikat dapat dihindari dan ukuran sheet tetap ringkas.
8. Gunakan lembar kerja di Looker Studio
- Buat atau buka laporan di Looker Studio.
- Pilih Tambahkan data → Google Sheets.
- Pilih spreadsheet dan lembar kerja Daily.
- Gunakan baris pertama sebagai header, lalu hubungkan sumber data.
- Pastikan
datedikenali sebagai tanggal danpageviewssertavisitssebagai metrik numerik.
Anda kini dapat membuat grafik deret waktu, kartu skor, tabel, dan kolom terhitung seperti
pageviews / visits. Looker Studio membaca data ini sebagai sumber data terpisah; data
tersebut tidak mengubah nilai NowMetrix menjadi peristiwa Google Analytics.
Google menjelaskan pengaturan laporan lainnya dalam panduan konektor Google Sheets.
Ekspor data NowMetrix lainnya
| Kasus penggunaan | Contoh endpoint | Perilaku sheet yang disarankan |
|---|---|---|
| Pageviews dan Visits harian | /v1/overview?days=30 |
Ganti atau perbarui baris berdasarkan tracker dan tanggal |
| Halaman teratas kemarin | /v1/recap?preset=yesterday&limit=100 |
Tambahkan sekali sehari atau ganti hasil saat ini |
| Snapshot live saat ini | /v1/realtime |
Tambahkan cap waktu respons saat membuat tren |
| Sumber lalu lintas saat ini | /v1/sources |
Tambahkan cap waktu respons atau ganti snapshot saat ini |
preset=last30 berisi total untuk seluruh rentang berjalan. Jangan menjumlahkan
nilai tersebut setiap hari. Untuk riwayat artikel yang dapat dijumlahkan, ekspor periode yang sudah
selesai seperti yesterday dan simpan rentangnya di setiap baris.
Daftar periksa keamanan dan berbagi
- Gunakan API key NowMetrix terpisah untuk ekspor dan berikan akses hanya ke tracker yang diperlukan.
- Simpan key hanya di Script Properties atau penyimpanan rahasia sisi server lainnya.
- Pertahankan
@OnlyCurrentDocdi dalam skrip untuk membatasi akses Google Sheets ke dokumen ini. - Jangan pernah menyertakan key di sel, formula, parameter laporan, URL, tangkapan layar, atau log.
- Batasi akses edit ke proyek Apps Script. Editor harus diperlakukan sebagai pengguna tepercaya.
- Otorisasi skrip hanya jika Google menampilkan akun Anda sendiri sebagai developer.
- Gunakan spreadsheet milik pelanggan yang terpisah untuk setiap akun NowMetrix.
- Tinjau setelan berbagi Google Sheet dan Looker Studio sebelum menerbitkan laporan.
- Segera cabut API key jika sheet, skrip, atau akun Google mungkin telah disusupi.
Pemecahan masalah
| Masalah | Yang perlu diperiksa |
|---|---|
HTTP 401 |
API key tidak ada, tidak lengkap, tidak valid, atau telah dicabut. |
HTTP 403 |
API key tidak memiliki akses ke tracker yang dikonfigurasi. |
HTTP 429 |
Batas laju API untuk tracker telah terlampaui. Kurangi frekuensi trigger. |
HTTP 503 |
Backend analitik sedang tidak tersedia. Pertahankan data sheet yang ada dan coba lagi nanti. |
| Tidak ada lembar kerja Daily | Jalankan syncNowMetrixDaily secara manual dan periksa detail eksekusi Apps Script. |
| Google menyatakan aplikasi belum diverifikasi | Hal ini wajar untuk skrip pribadi Anda. Lanjutkan hanya jika Anda membuat proyek tersebut dan Google menampilkan email developer Anda sendiri. |
| Google meminta akses ke semua spreadsheet | Batalkan proses, tambahkan @OnlyCurrentDoc di bagian atas Code.gs, simpan, lalu jalankan kembali fungsinya. |
| Tanggal terlihat keliru | Samakan zona waktu Google Sheet dengan zona waktu tracker yang dikembalikan oleh API. |