Bei der Arbeit mit Google Sheets lassen sich innerhalb eines Spreadsheets feine, userbasierte Regeln für das Editieren von Tabellenblättern, Spalten und Zeilen festlegen. Leider gibt es keine Möglichkeit, Leserechte einzuschränken. Dies wäre jedoch in vielen Szenarien sehr hilfreich. So zeigt man seinen Kunden nur diejenigen Tickets, die ihn betreffen oder dem Mitarbeiter nur die Projekte, an denen er arbeitet.
Eine mögliche Lösung besteht darin, ein sog. Mastersheet anzulegen und mit Hilfe von IMPORTRANGE ausgewählte Daten von dort aus in eine Richtung lesend anzuzapfen. Leider bedeutet das sehr viel Handarbeit: Neue Sheets anlegen, Dateirechte vergeben, IMPORTRANGE-Formel erarbeiten und einbauen, Permission akzeptieren, Formatierungen setzen. Ändert sich die Struktur oder das Format, muss das dann bei allen Spreadsheets einzeln manuell von Hand erledigt werden.
Folgendes Google Apps Script erledigt das automatisch. Führt man die Methode init() im Mastersheet einmal aus, werden jeweils alle Slavesheets automatisch angelegt, Rechte vergeben sowie Formeln und Formatierungen gesetzt. Ändern sich Daten im Mastersheet, werden diese automatisch im Slavesheet gespiegelt. Ändert sich die Struktur des Mastersheets, führt man init() einfach erneut aus (vorherige Sheets werden dabei automatisch aktualisiert).
82ba709df04366e65cb3a42f84f19631