GitLab Tickets in Google Sheets anzeigen

Manchmal ist es bei den ganzen Tickets und Reportings gar nicht so einfach, den Überblick zu behalten. Heute möchte ich Google App Scripts dafür nutzen, die Daten aus Gitlab direkt in mein Spreadsheet zu übernehmen. Dadurch lassen sich komplett angepasste Reportings erstellen und mit Kunden oder im Team teilen.

Der heutige Hack ist recht simple, gleichzeitig sehr mächtig. Meine Idee: Über eine Funktion hat man Zugriff auf die einzelnen Daten der Tickets in GitLab.

=gitlab(Projekt, IssueId, Feld)

Um auf die Felder zuzugreifen benötigt die Funktion folgende Parameter:

  • Projekt: Entweder die numerische Id des Projektes oder der Pfad aus GitLab ( „Beispielgruppe/Projektname“
  • IssueId: Nummerische Id des Tickets (wie in Gitlab)
  • Feld: Der Inhalt des Feldes, dass man auslesen möchte. Mit Unterstützung der Objekte. So dass man mit „assignee.name“ den Namen des Bearbeiters auslesen kann. Alle Felder findet ihr hier.

Anwendungsfälle

Wofür braucht man das im Alltag? Ich habe an dieser Stelle drei Anwendungsfälle zusammengefasst, wo ich das Script einsetzen würde.

Übersicht über ausgewählte Tickets

Mit wenigen Klicks lassen sich die wichtigsten Tickets und deren aktueller Status auswerten. Diese können direkt mit den Kunden oder im Team geteilt werden.

Einfache Übersicht über eine Auswahl an Tickets

Dadurch lassen sich recht einfach alle möglichen Arten von Reportings generieren. In diesem Fall lese ich die Felder title, assignee.username und state aus. Hilfreich ist in diesem Zusammenhang auch der Einsatz einer bedingten Formatierung.

Status der Tickets auf der Zeitachse

Darstellung der Tickets auf einer Zeitplanung

Für die Projektmanager, die gerne Google Sheets für ihre Zeitplanung verwenden lässt sich der Status des Tickets direkt anzeigen und farblich markieren. So sieht man immer welche Tickets gerade hinter der Zeitplanung sind. Aus Spreadsheets heraus ließen sich dann Erinnerungen verschicken. Aber das wäre ein Thema für einen weiteren Beitrag.

Zeiterfassung und Abrechrechnung von Gitlab-Tickets

Zeiterfassung aus Gitlab Tickets

Gitlab bietet die Möglichkeit mit den Kommandos /estimate und /spend, die Arbeitszeit direkt in den Tickets zu erfassen. Warum nicht über Google Sheets die Abrechnung erzeugen? Mit folgenden Funktionsaufrufen lässt sich das Estimate und Spend eines Tickets auslesen.

=gitlab("player360/editor";$A2;"time_stats.total_time_spent")
=gitlab("player360/editor";$A2;"time_stats.time_estimate")

Wem das Zeiterfassen über GitLab zu umständlich ist, sollte sich vielleicht mal meinen anderen Hack für Zeiterfassung mit dem Google Kalender ansehen.

Funktion in Google Sheets einrichten

Um die Funktion nutzen zu können, muss sie zum aktuellen Google Sheets hinzugefügt werden. Dazu klickt man auf „Tools“ und dann „Scripteditor„. Hier muss man folgenden Code einfügen:

var SERVER='{{SERVER URL}}';
var PRIVATETOKEN='{{TOKEN EINFÜGEN}}';
/**
 * Receives Tickets by gitlab
 *
 * @param {string} project Project path e.g. group/project
 * @param {string} issueId Issue Id
 * @param {string} field Ticket field
 * @return value
 * @customfunction
 */
function gitlab(project, issueId, field) {
  var result=UrlFetchApp
  .fetch('https://'+SERVER+'/api/v4/projects/'+encodeURIComponent(project)+'/issues/'+issueId, {
    "method" : "get",
    "headers": {'PRIVATE-TOKEN': PRIVATETOKEN},
  });
  var resultObj=JSON.parse(result);
  var fields=field.split(".");
  while(fields.length>0){
    resultObj=resultObj[fields.shift()];
  }
  return resultObj;
}

An der Stelle wo {{TOKEN EINFÜGEN}} steht, muss noch der Gitlab-Zugriffstoken hinzugefügt werden. Damit kann die Funktion auf die Daten in Gitlab zugreifen. Den Token kann man bei Gitlab unter „Profil bearbeiten“ -> „Access Token“ anlegen.

Token anlegen unter /profile/personal_access_tokens in Gitlab

Anstelle der {{SERVER URL}}, muss die Adresse des Gitlab-Servers z.B. „gitlab.com“ eingefügt werden.

Achtung! Wichtiger Hinweiß! Bedenkt, dass das Google Sheet immer wieder Anfragen an euren Git-Server schickt. Wenn ihr zu umfangreiche Listen erzeugt kann dass den Server unnötig belasten. Inzwischen drosselt Google die Anzahl der Anfragen zum Glück.

Spannend? Lass uns Gedanken austauschen!