Zum Hauptinhalt springen

Joomla API & Google Sheets: Der Guide zur Automatisierung


Hast du eine umfangreiche Liste an Daten in Google Sheets – zum Beispiel Therapeuten, Ferienwohnungen oder Standorte – und möchtest diese als Artikel in Joomla veröffentlichen? Und das Beste: Wenn du in Google Sheets eine Zeile änderst, soll sich der Artikel in Joomla automatisch aktualisieren?

Vergiss komplizierte Import-Plugins oder manuelle Arbeit. Wir bauen uns heute eine eigene „Direktleitung“ von Google Sheets zu Joomla – ohne Zusatzkosten, ohne Drittanbieter-Tools und ohne Programmierkenntnisse. Nur Copy & Paste!

1. Die Vorbereitung in Joomla

Bevor wir starten, brauchen wir drei Informationen aus deinem Joomla-Backend:

  • API-Token: Gehe zu Benutzer > Verwalten. Klicke auf deinen Benutzer und öffne den Reiter „Joomla-API-Token“. Kopiere diesen Code.

  • Kategorie-ID: Gehe zu Inhalt > Kategorien. Notiere dir die ID der Ziel-Kategorie (ganz rechts in der Liste).

  • Die URL deiner Seite: Du benötigst den Pfad zur API. Dieser lautet in der Regel: https://deine-domain.de/api/index.php/v1/content/articles

  • Eigene Felder (Custom Fields): Erstelle deine Felder (z. B. Strasse, PLZ). Wichtig: Notiere dir den Namen (Alias), nicht den Titel des Feldes! Diesen findest du in der Feld-Liste in der Spalte „Name“.

Wichtiger Hinweis: Damit Joomla die Daten von außen akzeptiert, gehe in jedes deiner Custom Fields und stelle unter dem Reiter „Optionen“ den Filter auf „Ungefiltert“.

2. Das Google Sheet vorbereiten

Erstelle ein Google Sheet mit folgendem Aufbau (Beispiel):

  • Spalte A: Titel des Artikels

  • Spalte B: Artikeltext (Content)

  • Spalte C: Strasse

  • Spalte D: Hausnummer

  • Spalte E: PLZ

  • Spalte F: Telefon

  • Spalte G: Joomla ID (Diese Spalte unbedingt leer lassen – das Script schreibt hier später die ID rein!)

3. Das „Zauber-Script“ einrichten

Keine Sorge, du musst hier nichts programmieren. Folge einfach diesen Schritten:

  1. Öffne dein Google Sheet.

  2. Gehe auf Erweiterungen > Apps Script.

  3. Lösche den vorhandenen Code und füge diesen ein:

JavaScript
// --- DEINE EINSTELLUNGEN ---
const JOOMLA_URL = 'DEINE_URL_HIER/api/index.php/v1/content/articles';
const API_TOKEN = 'DEIN_API_TOKEN_HIER';
const CAT_ID = 10; // Deine Kategorie-ID
// ---------------------------

function syncJoomlaArticles() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  
  let createdCount = 0;
  let updatedCount = 0;

  for (let i = 1; i < data.length; i++) {
    let row = data[i];
    if (!row[0]) continue; 

    let joomlaId = row[6]; // Spalte G (Index 6)
    
    let payload = {
      "title": row[0],
      "alias": "", 
      "articletext": row[1],
      "catid": CAT_ID,
      "state": 1,
      "language": "*",
      
      // ZUORDNUNG DER FELDER (Name in Joomla : Wert aus Sheet)
      "strasse": String(row[2]).trim(),
      "hausnummer": String(row[3]).trim(),
      "plz": String(row[4]).trim(),
      "tel": String(row[5]).trim()
    };

    let options = {
      "method": joomlaId ? "PATCH" : "POST",
      "contentType": "application/json",
      "headers": {
        "Authorization": "Bearer " + API_TOKEN,
        "Accept": "application/vnd.api+json"
      },
      "payload": JSON.stringify(payload),
      "muteHttpExceptions": true
    };

    let url = joomlaId ? JOOMLA_URL + "/" + joomlaId : JOOMLA_URL;
    let response = UrlFetchApp.fetch(url, options);
    
    if (response.getResponseCode() === 201 || response.getResponseCode() === 200) {
      if (!joomlaId) {
        let resData = JSON.parse(response.getContentText());
        sheet.getRange(i + 1, 7).setValue(resData.data.id);
        createdCount++;
      } else {
        updatedCount++;
      }
    }
  }
  SpreadsheetApp.getUi().alert('Fertig! Erstellt: ' + createdCount + ' | Aktualisiert: ' + updatedCount);
}

4. Google Sicherheits-Check

Da du dein eigenes Script ausführst, musst du Google einmalig erlauben, die Daten zu senden:

  1. Klicke im Script-Editor auf Ausführen.

  2. Ein Fenster erscheint: „Autorisierung erforderlich“. Klicke auf Weiter.

  3. Wähle dein Konto und klicke auf Erweitert -> „[Projektname] öffnen (unsicher)“.

  4. Klicke auf Zulassen.

5. Den Sync-Button erstellen

Damit die Bedienung kinderleicht wird:

  1. Im Sheet: Einfügen > Zeichnung -> Zeichne ein Rechteck mit dem Text „Update Joomla“ -> Speichern.

  2. Rechtsklick auf das Bild -> Drei Punkte ⋮ -> Script zuweisen.

  3. Gib dort syncJoomlaArticles ein.


Warum das so genial ist

  • Name statt ID: Wir sprechen die Felder über ihren Namen (Alias) an. Die Feldgruppe oder die interne ID des Feldes spielen keine Rolle. Das macht den Code extrem flexibel.

  • Intelligenz: Das Script prüft Spalte G. Ist sie leer? Artikel wird erstellt. Steht dort eine ID? Der bestehende Artikel wird aktualisiert.

  • Datenqualität: Durch die trim()-Funktion im Script werden störende Leerzeichen automatisch entfernt.

Viel Erfolg beim Automatisieren deiner Joomla-Inhalte! Dein Team von Agentur Wachter.

13. März 2026
Florian Wachter