Als begeisterter Nutzer von Goggle Suite gibt es eine Funktion, die ich mehr und mehr zu schätzen weiß: Das Verlinken von Inhalten! So kann man die aktuellen Verkaufszahlen in Spreadsheets (Excel) auswerten und die Auswertung in einer Vertriebspräsentation (Slides) verlinken.
Wenn man anschließend eine Änderung in Spreadsheets macht, wird die Änderung an die Präsentation weitergereicht. So ist man überall auf dem aktuellen Stand und muss nicht aufwändig mehrere Dokumente aktuell halten.
Zurzeit wird die Präsentation nicht automatisch aktualisiert. Stattdessen wird ein Aktualisierungsbutton angezeigt, der den Nutzer darauf hinweist, dass man das eingebettete Element aktualisieren kann. Dies nervt, wenn man Präsentationen mit vielen verlinkten Elementen hat.
In diesem Beitrag will ich zeigen, dass man mit einem kleinen Script dieses Feature selbst einbauen kann. Wer bis hierher nur Bahnhof versteht oder zu faul zum lesen ist, kann sich auch mein Video am Ende des Beitrags dazu anschauen.
Wie kann man Dokumente miteinander verlinken
Das Verknüpfen von Dokumenten geht recht einfach über Copy und Paste: So kann ich einzelne Zellen in Spreadsheets markieren, kopieren und in einer Präsentation wieder einfügen. Daraufhin wird man per Dialog gefragt, ob man die Werte kopieren oder verknüpfen möchte.
Werden die Dokumente verknüpft, taucht jedesmal ein „Aktualisieren-Button“ neben dem Inhalt auf, wenn die Quelle sich aktualisiert hat.
Das ganze Funktioniert aktuell nur in Google Slides und Google Text mit Werten und Charts aus Google Sheets.
Zwischen Spreadsheets müssen Werte auf andere Weise getauscht werden.
Das Ganze eignet sich super für regelmäßige Geschäftsberichte in Text oder Präsentationsform, die man so quasi automatisch generieren und als PDF verschicken kann.
Alle Charts und Diagramme in einer Präsentation aktualisieren
Hat man, wie gesagt, mehrere Diagramme in seinem Dokument, kann es super lästig sein, diese einzeln zu aktualisieren. Da es noch keine „Dokument aktualisieren“-Funktion in Google Slides gibt, müssen wir diese selbst entwickeln. Dazu öffnet man einfach den Scripteditor (im Menü unter Tools) und fügt folgenden Code ein:
//Add Menüitem Charts->update all to Google Slides when sheet is loaded
function onOpen() {
var ui = SlidesApp.getUi().createMenu('Charts')
.addItem('update all', 'updateAllSlides')
.addToUi();
}
//Iterate throgh all slides and execute updateSlide()
function updateAllSlides() {
SlidesApp.getActivePresentation().getSlides().forEach(updateSlide);
}
//Refresh all Charts on slide
function updateSlide(slide) {
slide.getSheetsCharts().forEach(function(chart){
chart.refresh();
});
}
Wenn man jetzt das Dokument neu läd, wird ein neuer Menüeintrag „Charts->update all“ erzeugt, mit dem man alle Charts in der Präsentation gleichzeitig updaten kann. Zur automatischen Ausführungen kommen wir gleich.
Tabellen automatisch updaten
Tabellen sind aktuell etwas tricky, da Google das Updaten verlinkter Tabelle derzeitig programmatisch nicht unterstützt (siehe Ticket).
Der Workarround geht wieder über Charts! Es gibt nämlich einen eigenen Charttyp der „Tabellenchart“ heißt. Dieser bildet mehr oder weniger den Inhalts aus Sheets als Diagramm ab. Leider geht dabei die Transparenz und die Formatierung verloren.
Bis Google das Ticket oben nicht bearbeitet hat, sehe ich momentan aber keinen anderen Weg ohne großen Mehraufwand. Bei uns reicht es in fast allen Fällen.
Automatische Ausführung
Wer sogar zu faul ist den „Update all“ Button aus dem Script zu nutzen, kann die Trigger Funktion von Google App Script nutzen. So lässt sich der Script zeitbasiert oder bei jedem Öffnen des Dokumentes aktualisieren.
Im Script-Editor geht man dazu auf „Bearbeiten“ und dann „Trigger des aktuellen Projekts“. Dann öffnet sich in einem neuen Fenster die Projektkonsole von Google Scripts und man kann einen neuen Trigger erstellen.
Videodemo
So, das war jetzt viel Text um eine kleine Funktion. Aber meist sprechen bewegte Bilder mehr als tausend Worte. Daher hier eine kleines Videotutorial dazu.
Viel Erfolg bei der Umsetzung!
Hallo Tobias,
vielen Dank für den Beitrag.
Das ist alles überaus gut und verständlich erklärt. Genau die Feature Funktion habe ich aktuell gesucht.
Ich suche die Funktion allerdings für Google Docs/Text. Bei Minute 9:25 sagst Du, dass der Code Snippet hierzu für Google Docs/Text übersetzt werden müsste.
Hast Du so eine Übersetzung oder kannst Du mir sagen wo ich sie herbekommen könnte?
Damit würdest Du mir überaus helfen.
Vielen Dank und viele Grüße,
Louis
Hallo Louis,
dazu bin ich bisher nie gekommen das mal zu probieren. Hab für dich eben mal in die Dokumentation geschaut. Scheint nicht ganz so einfach zu sein, wie ich dachte. Es gibt den Befehl „getSheetsCharts()“ in Google Docs so nicht. Vielleicht komme ich mal in einer ruhigen Minute dazu, den Script anzupassen.
Grüße
Tobias
Hi, vielen Dank für den super Beitrag. Bei mir verziehen sich allerdings die Nummern im Slidedeck immer leicht, sobald ich diese update. Hast du da eine Idee wie ich das umgehen kann?
Liebe Grüße & Danke,
Lola
Hi Tobi, funktioniert mega mein Problem ist jetzt nur, das ich wenn ich die Slide als Präsentation laufen lasse die Daten in der Präsentation nicht aktualisiert werden.
Hab auch schon überlegt ob es einen work around gibt, hänge aber immer bei dem Problem, dass der gesetzte loop und timer nicht ein Programmierbar ist.
Hast du dafür evtl eine Idee ?
Ich hab tatsächlich das ganze als Iframe Eingebunden und dann per Javascript gesagt, dass er die Page jede Stunde komplett neuladen soll. Dann gehts.