Ich habe eine Lösung für mich gefunden. Sie ermöglicht es, beliebig viele Skripte an ein Art Master-Dokument (nennen wir es MyScripts) anzuhängen. Keine Bibliotheken, kein Veröffentlichen erforderlich.
Erstellen Sie ein Dokument und benennen Sie es MyScripts (oder wie auch immer). Der Inhalt des Dokuments kann leer sein, oder Sie könnten dort einige Anweisungen schreiben. Fügen Sie dann den folgenden Code in den Skript-Editor von MyScript ein:
// fügt ein Menü zur Benutzeroberfläche des Master-Dokuments hinzu
function onOpen() {
DocumentApp.getUi()
.createAddonMenu()
.addItem('Etwas tun', 'etwasMachen')
.addItem('Etwas anderes', 'etwasAnderes')
.addToUi()
}
// gibt das Ziel-Dokument basierend auf seiner URL zurück
// kann angepasst werden, um stattdessen die DocumentId zu verwenden
function findDoc(prompt) {
var ui = DocumentApp.getUi();
var pro = ui.prompt(prompt, 'Dokument-URL:', ui.ButtonSet.OK);
var url = pro.getResponseText();
return DocumentApp.openByUrl(url);
}
function etwasMachen() {
var doc = findDoc('Etwas tun');
if (doc) {
// etwas mit dem Ziel-Dokument machen
var len = doc.getBody().getText().length;
DocumentApp.getUi().alert('Das Dokument ist ' + len + ' Zeichen lang')
}
}
function etwasAnderes() {
var doc = findDoc('Etwas anderes');
if (doc) {
// etwas anderes machen
}
}
Die Funktion onOpen()
sollte selbsterklärend sein.
findDoc()
ist der eigentliche Hack. Es fordert den Benutzer nach der URL des Ziel-Dokuments auf, dem Dokument, auf das wir reagieren möchten. Wenn die URL gültig ist, gibt findDoc()
das entsprechende Dokumentenobjekt zurück.
Die letzten beiden Funktionen sind nur Platzhalter und sollten durch Ihren eigenen Code ersetzt werden, aber beachten Sie, wie findDoc()
am Anfang jedes Funktionsaufrufs steht.
Wenn Sie ein Skript gegen ein Dokument ausführen möchten, kopieren Sie seine URL, öffnen Sie dann MyScripts, wählen Sie den entsprechenden Add-Ons-Menüpunkt aus, fügen Sie die URL ein und klicken Sie auf OK.
Bitte beachten Sie, dass Sie beim ersten Versuch, ein Skript auf diese Weise auszuführen, eine Warnmeldung erhalten werden. Stellen Sie einfach sicher, dass Ihr etwasMachen()
, Ihr etwasAnderes()
usw. nur sicheren Code enthalten, bevor Sie die Warnungen ignorieren und die Skripts ausführen.