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

Den kompletten Script dazu findet ihr hier: https://gitlab.com/TobiSell/gitlab-issues-on-google-sheets
Was haltet Ihr von der Funktion? Was würdet ihr noch vermissen. Schreibt es gerne in die Kommentare.