In diesem Dokument sind Best Practices aufgeführt, mit denen Sie die Leistung verbessern können. Ihrer Skripts.
Anrufe bei anderen Diensten minimieren
Die Verwendung von JavaScript-Vorgängen in Ihrem Script ist wesentlich schneller als das Aufrufen anderer Dienste. Alles, was Sie mit Google Apps Script erledigen können ist viel schneller als Aufrufe, bei denen Daten von von Google oder einem externen Server, z. B. Anfragen an Google Tabellen, Sites, Translate, UrlFetch und so weiter. Ihre Skripts werden schneller ausgeführt, wenn Sie die Aufrufe der Skripts an diese Dienste minimieren.
Für die Zusammenarbeit geteilte Ablagen verwenden
Wenn Sie mit anderen Entwicklern an einem Skriptprojekt arbeiten, in geteilten Ablagen an Apps Script-Projekten zusammenarbeiten Die Dateien in einer geteilten Ablage gehören der Gruppe und nicht einzelnen Personen. Dieses die Entwicklung und Pflege des Projekts erleichtern.
Batchvorgänge verwenden
Skripte müssen häufig Daten aus einer Tabellenkalkulation einlesen, Berechnungen durchführen, und schreiben die Ergebnisse der Daten in eine Tabellenkalkulation. Google-Apps Das Script verfügt bereits über eine integrierte Optimierung, z. B. ein Look-Ahead-Caching. was ein Skript voraussichtlich erhalten wird, und schreibt Caching, festgelegt ist.
Sie können Skripts so schreiben, dass Sie die Vorteile des integrierten Cachings voll ausschöpfen. um die Anzahl der Lese- und Schreibvorgänge zu minimieren. Abwechselnde Lese- und Schreibbefehle ist langsam. Um ein Skript zu beschleunigen, lesen Sie mit einem Befehl alle Daten in ein Array. Operationen an den Daten im Array ausführen und die Daten mit einen Befehl ausführen.
Hier ist ein Beispiel, das Sie nicht befolgen oder verwenden sollten. Ein Skript
verwendet den folgenden Code, um die Hintergrundfarben jeder Zelle in einem
Tabellenraster mit 100 x 100 Pixeln. Sie verwendet als Funktion
getColorFromCoordinates()
(hier nicht gezeigt), um festzulegen, welche Farbe verwendet werden soll
für jede Zelle:
// 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: Es durchläuft 100 Zeilen und 100 Spalten und schreibt auf 10.000 Zellen zu übertragen. Der Google Apps Script-Rückschreibe-Cache hilft, da er ein Zurückschreiben mit Leerung am Ende jeder Zeile erzwingt. Aufgrund des Cachings werden nur 100 Aufrufe an die Tabelle gesendet.
Der Code kann jedoch viel effizienter gestaltet werden, wenn die Aufrufe gruppiert werden. Hier ist ein umschreiben, bei dem der Zellenbereich in ein Array namens „Colors“ (Farben) eingelesen wird, Zuweisungsvorgang für die Daten im Array durchgeführt wird, und die Werte in Arrays werden in die Tabellenkalkulation geschrieben:
// 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. Der effiziente Code wird in nur einer Sekunde ausgeführt.
Bibliotheken in Skripts mit vielen UI-lasten vermeiden
Bibliotheken bieten eine bequeme Möglichkeit, Code wiederzuverwenden,
allerdings dauert es etwas länger, bis das Skript gestartet wird. Diese Verzögerung
bei relativ lang andauernden Skripts (z. B. Dienstprogrammskripts
Ihre Google Drive-Dateien bereinigen), aber für clientseitige
HTML Service-Benutzeroberflächen, die wiederholte,
google.script.run
mit kurzer Laufzeit
-Aufrufen, wirkt sich die Verzögerung auf jeden Aufruf aus. Aus diesem Grund sollten Bibliotheken
Sie sollten nur sparsam in Add-ons verwendet werden.
Vermeiden Sie sie in Skripts ohne Add-on, die viele google.script.run
-Aufrufe ausführen.
Cache-Dienst verwenden
Sie können den Cache-Dienst verwenden. um Ressourcen zwischen Skriptausführungen im Cache zu speichern. Durch das Caching von Daten können Sie die Anzahl oder Häufigkeit, mit der Sie die Daten abrufen müssen. Stellen Sie sich ein Szenario vor, bei dem Sie einen RSS-Feed auf example.com haben, der 20 Sekunden zum Abrufen und Sie möchten den Zugriff für die durchschnittliche Anfrage beschleunigen. Die Das folgende Beispiel zeigt, wie Sie mit dem Cache-Dienst den Zugriff auf diese Daten.
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;
}
Sie müssen zwar noch 20 Sekunden warten, wenn sich das Element nicht im Cache befindet, nachfolgende Zugriffe erfolgen sehr schnell, bis das Element nicht mehr im Cache gespeichert ist. in 25 Minuten.