Gitlab Issues (Project/Group) in Google Sheets anzeigen

Bereits im Mai diesen Jahres hatte ich gezeigt, wie man Daten aus Gitlab mit Hilfe der GitLab API und Google App Scripts in einem Google Sheet anzeigen kann. Darauf basierend ist in den letzten Tagen ein neues Script entstanden, das ich mit euch teilen möchte.

Diesmal geht es darum eine ganze Liste von Issues über die Api abzufragen und in Google Sheets darzustellen. Zum Beispiel um sie einem Kunden zukommen zu lassen.

Ziel ist, eine Funktion wie:

=gitlabProjectIssues("myProject", "state=opened&order_by=milestone_due", "iid,title,author.name,milestone.due_date")

Wie man Gitlab Issues abfragt

Die Gitlab API ist sehr mächtig und ermöglicht die einfache Integration in andere Tools. Zum Abfragen von Issues kann man zwei verschiedene Wege gehen, die ich beide unterstützen möchte. Zum einen kann man sich die Issues eines Projekts und zum anderen kann alle Issues aus einer Gruppe abfragen. Letzteres ist sehr praktisch wenn man mehrere Projekte (z.B. App und Server) in getrennten Repositories hat, sie aber über geteilte Meilensteine verwaltet.

Entsprechend habe ich zwei Funktionen erstellt. Vom Verhalten sind die beiden ziemlich ähnlich:

=gitlabProjectIssues(PROJECT_ID, ABFRAGE, FELDER)
=gitlabGroupIssues(GROUP_ID, ABFRAGE, FELDER)

Projekt oder Gruppe

Die PROJECT_ID und die GROUP_ID lassen sich aus der Issue-URL von jeweiligen Projekt ableiten.

  • Project-Issues: https://gitlab.com/gitlab-org/gitlab/-/issues -> gitlab-org/gitlab
  • Group-Issues: https://gitlab.com/groups/gitlab-org/-/issues -> gitlab-org

Abfrage

Für die Abfrage gibt es verschiedene Möglichkeiten, die auch miteinander kombiniert werden können:

  • Issue-Status: state=opened
  • Labels: labels=foo
  • Meilensteine: milestone=1.0.0
  • Author: author_id
  • Reihenfolge: order_by=milestone_due

Eine Kombination sieht dann zum Beispiel so aus: „state=opened&labels=foo“. Eine komplette Liste findet ihr unter https://docs.gitlab.com/ee/api/issues.html#list-issues

Felder

Als letzter Parameter wird festgelegt, welche Felder angezeigt werden sollen und welche Reihenfolge sie haben. Will man auf Unterfelder eines Objektes zugreifen (z.B. Name des Meilensteins), so kann der Punkt „.“ wie bei JavaScript verwendet werden.

Die einzelnen Felder werden mit Komma getrennt.

project_id,iid,title,author.name,milestone.title,milestone.due_date
Gitlab Issues in Google Sheets

Den kompletten Script dazu findet ihr hier: https://gitlab.com/TobiSell/gitlab-issues-on-google-sheets

Spannend? Lass uns Gedanken austauschen!