Best Practices

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 Skript ist wesentlich schneller als anderen Diensten anrufen. 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.

Über geteilte Ablagen zusammenarbeiten

Wenn Sie mit anderen Entwicklern an einem Skriptprojekt arbeiten, in geteilten Ablagen an Apps Script-Projekten zusammenarbeiten Dateien in einer geteilten Ablage gehören der Gruppe, 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 mit Leerung am Ende jeder Zeile einen Rückschreibvorgang erzwingt. Weil des Cachings gibt es nur 100 Aufrufe an die Tabelle.

Der Code kann jedoch viel effizienter gemacht werden, indem die Aufrufe in Batches zusammengefasst 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).setBackgroundColors(colors);

Die Ausführung des ineffizienten Codes dauert etwa 70 Sekunden. Der effiziente Code läuft nur 1 Sekunde!

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.