In diesem Dokument finden Sie Best Practices zur Verbesserung der Scriptleistung.
Aufrufe anderer Dienste minimieren
Die Verwendung von JavaScript-Vorgängen in Ihrem Script ist schneller als der Aufruf anderer Dienste. Alles, was Sie in Google Apps Script selbst erledigen, geht schneller, als wenn Sie Daten von den Google-Servern oder einem externen Server abrufen, z. B. Anfragen an Sheets, Docs, Sites, Translate und UrlFetch. Ihre Skripts werden schneller ausgeführt, wenn Sie die Anzahl der Dienstaufrufe minimieren.
Zusammenarbeit mit geteilten Ablagen
Wenn Sie mit anderen Entwicklern an einem Scriptprojekt arbeiten, arbeiten Sie über geteilte Ablagen zusammen. Dateien in einer geteilten Ablage gehören der Gruppe und nicht einzelnen Personen. Das erleichtert die Projektentwicklung und -wartung.
Batchvorgänge verwenden
Mit Skripts werden in der Regel Daten aus einer Tabelle gelesen, Berechnungen durchgeführt und Ergebnisse zurückgeschrieben. Apps Script verwendet integrierte Optimierungen wie Look-Ahead und Write-Caching.
Maximieren Sie das integrierte Caching, indem Sie Lese- und Schreibvorgänge minimieren. Das abwechselnde Ausführen von Lese- und Schreibbefehlen ist langsam. Um ein Script zu beschleunigen, lesen Sie alle Daten mit einem Befehl in ein Array ein, führen Sie Vorgänge für die Arraydaten aus und schreiben Sie die Daten mit einem Befehl aus.
Vermeiden Sie abwechselnde Lese- und Schreibvorgänge wie in diesem ineffizienten Beispiel:
// DO NOT USE THIS CODE. It is an example of SLOW, INEFFICIENT code.
// FOR DEMONSTRATION ONLY
var cell = sheet.getRange('a1');
for (var y = 0; y < 100; y++) {
xcoord = xmin;
for (var x = 0; x < 100; x++) {
var c = getColorFromCoordinates(xcoord, ycoord);
cell.offset(y, x).setBackgroundColor(c);
xcoord += xincrement;
}
ycoord -= yincrement;
SpreadsheetApp.flush();
}
Das Skript ist ineffizient,da es 10.000 Zellen mit aufeinanderfolgenden Schreibvorgängen durchläuft. Der Write-Back-Cache ist zwar hilfreich, aber das Zusammenfassen von Aufrufen in Batches ist viel effizienter:
// OKAY TO USE THIS EXAMPLE or code based on it.
var cell = sheet.getRange('a1');
var colors = new Array(100);
for (var y = 0; y < 100; y++) {
xcoord = xmin;
colors[y] = new Array(100);
for (var x = 0; x < 100; x++) {
colors[y][x] = getColorFromCoordinates(xcoord, ycoord);
xcoord += xincrement;
}
ycoord -= yincrement;
}
sheet.getRange(1, 1, 100, 100).setBackgrounds(colors);
Die Ausführung des ineffizienten Codes dauert etwa 70 Sekunden, während der effiziente Code in nur einer Sekunde ausgeführt wird.
Bibliotheken in UI-lastigen Skripts vermeiden
Bibliotheken sind praktisch, um Code wiederzuverwenden, erhöhen aber die Startzeit des Skripts. Diese Verzögerung ist in clientseitigen HTML Service-Benutzeroberflächen zu beobachten, die wiederholte, kurz laufende google.script.run-Aufrufe ausführen. Verwenden Sie Bibliotheken sparsam in Add-ons und vermeiden Sie sie in Skripts, die viele google.script.run-Aufrufe ausführen.
Cache-Dienst verwenden
Mit dem Cache-Dienst können Sie Ressourcen zwischen Scriptausführungen im Cache speichern. Durch das Caching wird die Häufigkeit des Datenabrufs reduziert. Im folgenden Beispiel wird gezeigt, wie Sie den Cache-Dienst verwenden, um den Zugriff auf einen langsamen RSS-Feed zu beschleunigen.
function getRssFeed() {
var cache = CacheService.getScriptCache();
var cached = cache.get("rss-feed-contents");
if (cached != null) {
return cached;
}
// This fetch takes 20 seconds:
var result = UrlFetchApp.fetch("http://example.com/my-slow-rss-feed.xml");
var contents = result.getContentText();
cache.put("rss-feed-contents", contents, 1500); // cache for 25 minutes
return contents;
}
Wenn sich das Element nicht im Cache befindet, müssen Sie weiterhin 20 Sekunden warten. Bei nachfolgenden Zugriffen ist die Wartezeit jedoch kurz, bis das Element abläuft.