---
slug: google-sheets
title: "Wie bringe ich meine Zahlen in Google Sheets?"
category: berichte
locale: de
updated: 2026-10-15
keywords: ["Google Sheets","Google Tabellen","Apps Script","Tabelle","Vorlage","Auslöser","Lese-Schnittstelle","IMPORTDATA"]
questions: ["Kann ich meine Zahlen in eine Google-Tabelle holen, die sich jeden Tag selbst aktualisiert?","Google Sheets verbinden","Metrunio in Google Tabellen","Gibt es eine Vorlage für Google Sheets?","Wie aktualisiert sich eine Tabelle automatisch mit meinen Zahlen?","Geht das mit IMPORTDATA?","Wo lege ich den Schlüssel in Apps Script ab?"]
url: https://bench.metrunio.com/de/hilfe/google-sheets
---

# Wie bringe ich meine Zahlen in Google Sheets?

**Kann ich meine Zahlen in eine Google-Tabelle holen, die sich jeden Tag selbst aktualisiert?**

Mit einem kurzen Apps Script, das jeden Morgen deine Tageszeilen je Kanal und Kampagne über die Lese-Schnittstelle holt und ein Blatt neu füllt. Den Lese-Schlüssel legst du in den Skripteigenschaften ab, nicht im Code und nicht in einer Formel. Die Lese-Schnittstelle gehört zu Growth, Scale und dem Agenturtarif.

Eine Formel in Google Sheets kann deine Zahlen nicht selbst abholen: Die Lese-Schnittstelle verlangt den Schlüssel im Kopf der Anfrage, und den setzt keine Formel. Das übernimmt ein kurzes Skript in Apps Script, der Skriptumgebung, die zu jeder Google-Tabelle gehört. Es holt jeden Morgen die Tageszeilen deines Kontos und schreibt sie in ein Blatt namens „Metrunio“. Pivot-Tabellen und Diagramme, die auf diesem Blatt aufbauen, zeigen danach die neuen Zahlen.

## So richtest du es ein

1. Leg im Portal unter „Exporte & KI-Verbindungen“ bei „API-Zugang“ einen Lese-Schlüssel an, am besten einen eigenen nur für diese Tabelle. Er wird nur einmal vollständig angezeigt.
2. Öffne die Tabelle und wähle „Erweiterungen > Apps Script“. Ersetze den Inhalt von Code.gs durch die Vorlage unten und speichere.
3. Öffne links die „Projekteinstellungen“ und füge unter „Skripteigenschaften“ die Eigenschaft METRUNIO_READ_KEY hinzu, mit deinem Schlüssel als Wert.
4. Wähle oben die Funktion installDailyTrigger und klicke auf „Ausführen“. Beim ersten Mal fragt Google nach deiner Zustimmung: Das Skript will Tabellen bearbeiten, eine externe Adresse abrufen und täglich laufen, auch wenn du nicht angemeldet bist. Meldet Google, die App sei nicht überprüft: Es ist dein eigenes Skript, und über „Erweitert“ geht es weiter.
5. Danach steht das Blatt „Metrunio“ da, und der Auslöser füllt es jeden Morgen zwischen 6 und 7 Uhr neu.

## Die Vorlage

```javascript
// Metrunio: Tageszeilen je Kanal und Kampagne im Blatt „Metrunio“.
// Den Lese-Schlüssel trägst du in den Projekteinstellungen unter
// „Skripteigenschaften“ als METRUNIO_READ_KEY ein, nie hier im Code.
const API_URL = 'https://api.metrunio.com/v1/data/daily';
const SHEET_NAME = 'Metrunio';
const COLUMNS = [
  ['day', 'Tag'],
  ['channelName', 'Kanal'],
  ['campaignName', 'Kampagne'],
  ['attributedConversions', 'Zugeordnete Conversions'],
  ['attributedRevenue', 'Zugeordneter Umsatz'],
  ['postViewConversions', 'Post-View-Conversions'],
  ['unattributedConversions', 'Nicht zugeordnete Conversions'],
  ['unattributedRevenue', 'Nicht zugeordneter Umsatz'],
  ['clicks', 'Klicks'],
  ['impressions', 'Impressionen'],
  ['viewableImpressions', 'Sichtbare Impressionen'],
  ['cost', 'Kosten'],
];

// Holt die Zahlen und schreibt das Blatt neu. Der Auslöser ruft das jeden Morgen auf.
function updateMetrunio() {
  const key = PropertiesService.getScriptProperties().getProperty('METRUNIO_READ_KEY');
  if (!key) throw new Error('Die Skripteigenschaft METRUNIO_READ_KEY fehlt.');

  const response = UrlFetchApp.fetch(API_URL, {
    headers: { Authorization: 'Bearer ' + key, 'Accept-Language': 'de' },
    muteHttpExceptions: true,
  });
  const body = response.getContentText();
  if (response.getResponseCode() !== 200) {
    throw new Error('Metrunio ' + response.getResponseCode() + ': ' + errorMessage(body));
  }

  const values = [COLUMNS.map((column) => column[1])];
  for (const row of JSON.parse(body).data) {
    values.push(COLUMNS.map((column) => cell(row[column[0]])));
  }
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getSheetByName(SHEET_NAME) || spreadsheet.insertSheet(SHEET_NAME);
  sheet.clearContents();
  sheet.getRange(1, 1, values.length, COLUMNS.length).setValues(values);
}

// Leere Kosten bleiben leer: keine Kosten erfasst, nicht null Euro.
// Ein Name, der mit =, +, - oder @ beginnt, bleibt Text und wird keine Formel.
function cell(value) {
  if (value === null || value === undefined) return '';
  if (typeof value === 'string' && /^[=+@-]/.test(value)) return "'" + value;
  return value;
}

// Die Meldung der Schnittstelle, in der Sprache aus Accept-Language.
function errorMessage(body) {
  try {
    const error = JSON.parse(body).error;
    return [error.message].concat(error.resolution || []).join(' ');
  } catch (parseError) {
    return body.slice(0, 300);
  }
}

// Einmal ausführen: legt den täglichen Lauf zwischen 6 und 7 Uhr an und füllt das Blatt sofort.
function installDailyTrigger() {
  for (const trigger of ScriptApp.getProjectTriggers()) {
    if (trigger.getHandlerFunction() === 'updateMetrunio') ScriptApp.deleteTrigger(trigger);
  }
  ScriptApp.newTrigger('updateMetrunio').timeBased().everyDays(1).atHour(6).create();
  updateMetrunio();
}
```

## Was im Blatt steht

Eine Zeile je Tag, Kanal und Kampagne für die letzten 30 Tage bis einschließlich heute, gezählt in der Zeitzone deines Kontos. Den heutigen Tag enthält das Blatt erst nach dem Lauf am nächsten Morgen vollständig. Zugeordnete Conversions und zugeordneter Umsatz folgen dem Standardmodell deines Kontos, wie die Berichte; Klicks und Impressionen sind gemessen.

Bleibt eine Zelle bei den Kosten leer, sind für diese Zeile keine Kosten erfasst. Das ist nicht dasselbe wie null Euro. Nicht zugeordnete Conversions stehen in der Zeile ohne Kanal und Kampagne, und die Summen je Kanal sind dieselben wie unter „Kanäle & Attribution“.

## Anpassen

- Spalten: Die Liste COLUMNS legt Reihenfolge und Überschriften fest. Streich, was du nicht brauchst. Die Schnittstelle liefert außerdem die Kennungen von Kanal und Kampagne (channelId, campaignId) und den zugeordneten Akquisitionswert (attributedSetValue). Das ist der Wert, den du einer Conversion selbst gegeben hast, kein Umsatz.
- Zeitraum: Häng an API_URL zum Beispiel ?from=2026-01-01 an. Ohne Ende reicht der Zeitraum bis heute. Eine Abfrage liefert höchstens 50.000 Zeilen; braucht sie mehr, sagt die Schnittstelle ab, statt Zeilen wegzulassen, und ein kürzerer Zeitraum hilft.
- Modell: Mit ?model=linear rechnet die Schnittstelle in einem festen Modell statt im Standardmodell deines Kontos. Zwei Angaben verbindest du mit &, etwa ?from=2026-01-01&model=linear.

Schlägt ein Lauf fehl, etwa weil der Schlüssel widerrufen oder abgelaufen ist, schickt Google dir eine Mail mit der Meldung von Metrunio. Das Blatt behält dann den Stand des letzten erfolgreichen Laufs.

## Warum nicht IMPORTDATA?

IMPORTDATA holt eine Adresse, schickt aber keinen Kopf mit. Der Schlüssel müsste deshalb in der Adresse stehen und damit in einer Formel, die jede Person lesen kann, der du die Tabelle zeigst. Die Lese-Schnittstelle nimmt den Schlüssel ohnehin nur im Kopf der Anfrage an.

> **Achtung:** Der Schlüssel steht in keiner Zelle und in keiner Formel. Wer die Tabelle bearbeiten darf, kann aber das Skript öffnen und ihn in den Skripteigenschaften lesen. Gib die Tabelle deshalb nur Personen zum Bearbeiten, die den Schlüssel kennen dürfen, und zieh ihn unter „Exporte & KI-Verbindungen“ zurück, wenn jemand das Team verlässt.

> **Hinweis:** Die Zahlen gehen von Metrunio zu Google, weil du sie dort ansehen willst, und Google verarbeitet sie nach den Bedingungen deines Google-Kontos. Die Zeilen sind Summen je Tag, Kanal und Kampagne und enthalten keine Kennungen einzelner Personen. Ziehst du den Schlüssel zurück, holt das Skript nichts mehr; was schon in der Tabelle steht, bleibt dort, bis du es löschst.

## Ebenfalls gefragt

- Google Sheets verbinden
- Metrunio in Google Tabellen
- Gibt es eine Vorlage für Google Sheets?
- Wie aktualisiert sich eine Tabelle automatisch mit meinen Zahlen?
- Geht das mit IMPORTDATA?
- Wo lege ich den Schlüssel in Apps Script ab?

## Weiterführend

- https://bench.metrunio.com/de/hilfe/power-bi-und-excel
- https://bench.metrunio.com/de/hilfe/csv-export
- https://bench.metrunio.com/de/hilfe/mcp-anbinden
- https://bench.metrunio.com/de/hilfe/api-keys-rotieren
- https://bench.metrunio.com/de/hilfe/tagesgrenzen-und-zeitzone
- https://bench.metrunio.com/de/hilfe/attributionsmodelle
