Sprawdzone metody

W tym dokumencie opisujemy sprawdzone metody zwiększania skuteczności reklam. skryptów.

Minimalizuj wywołania innych usług

Operacje JavaScript w skrypcie są znacznie szybsze niż w przypadku połączenia z innymi usługami. Wszystko, co można osiągnąć w Google Apps Script będzie znacznie szybsze niż w przypadku wykonywania połączeń z serwerów Google lub serwera zewnętrznego, na przykład żądań wysyłanych do Arkuszy, Dokumentów Witryny, Tłumacz, UrlFetch. Skrypty będą działać szybciej, jeśli możesz znaleźć sposoby na zminimalizowanie liczby wywołań tych usług przez skrypty.

Rozważ współpracę przy użyciu dysków współdzielonych

Jeśli pracujesz nad projektem scenariusza z innymi programistami, możesz współpracować nad projektami Apps Script przy użyciu dysków współdzielonych. Pliki na dysku współdzielonym są własnością grupy, a nie poszczególnych osób. Ten ułatwia tworzenie i utrzymywanie projektu.

Używanie operacji wsadowych

Skrypty zwykle muszą odczytywać dane z arkuszy kalkulacyjnych, wykonywać obliczenia a potem zapisać wyniki danych w arkuszu kalkulacyjnym. Aplikacje Google Skrypt ma już wbudowaną optymalizację, np. korzysta z buforowania z wyprzedzeniem pobierania danych, które prawdopodobnie otrzyma skrypt, i zapisywania w pamięci podręcznej prawdopodobnie będzie ustawione.

Możesz pisać skrypty, aby jak najlepiej wykorzystać wbudowaną funkcję buforowania, przez minimalizując liczbę odczytów i zapisów. Naprzemienne polecenia odczytu i zapisu działa wolno. Aby przyspieszyć skrypt, odczytaj wszystkie dane do tablicy za pomocą jednego polecenia wykonywać dowolne operacje na danych w tablicy i zapisywać dane za pomocą wystarczy jedno polecenie.

Oto przykład – nie należy postępować zgodnie z nim. Skrypt za pomocą podanego niżej kodu, aby ustawić kolor tła każdej komórki w Siatka arkusza kalkulacyjnego 100 x 100. Wykorzystuje jako funkcję o nazwie getColorFromCoordinates() (nie pokazano tutaj), aby określić kolor, którego chcesz użyć dla każdej komórki:

  // 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();
  }

Skrypt jest niewydajny: przewija 100 wierszy i 100 kolumn, zapisując z rzędu do 10 000 komórek. Pamięć podręczna zapisu tekstowego Google Apps Script pomaga , bo wymusza zapis zwrotny przy użyciu elementu flush na końcu każdego wiersza. Ponieważ buforowania, dostępnych jest tylko 100 wywołań arkusza kalkulacyjnego.

Wydajność kodu można jednak znacznie zwiększyć, grupując wywołania. Oto przepisać, w którym zakres komórek jest odczytywany w postaci tablicy o nazwie kolory, kolor operacja przypisywania jest wykonywana na danych w tablicy, a wartości w tablicy tablica jest zapisywana w arkuszu kalkulacyjnym:

  // 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);

Niewydajny kod uruchamia się po około 70 sekundach. Wydajny kod działa tylko sekunda!

Unikaj bibliotek w skryptach, które generują duży nacisk na interfejs użytkownika

Biblioteki to wygodny sposób na ponowne wykorzystanie kodu, ale nieco wydłużają czas uruchamiania skryptu. To opóźnienie jest niezauważalne dla stosunkowo długo działających skryptów (np. skrypt narzędziowy czyścić pliki na Dysku Google), ale po stronie klienta interfejsów użytkownika HTML Service, które powtarzają się, krótkoterminowe google.script.run będzie dotyczyło każdego połączenia. Z tego powodu biblioteki powinny oszczędnie można używać w dodatkach, unikaj ich w skryptach niezwiązanych z dodatkami, które generują wiele wywołań funkcji google.script.run.

Korzystanie z usługi Cache

Możesz użyć usługi pamięci podręcznej do buforowania zasobów między wykonaniami skryptu. Buforowanie danych pozwala zmniejszyć ile razy lub z jaką częstotliwością należy pobierać dane. Rozważmy scenariusz, w którym masz kanał RSS na stronie example.com, który zajmuje 20 razy sekund pobierania i chcesz przyspieszyć dostęp do przeciętnego żądania. przykład poniżej pokazuje, jak wykorzystać usługę pamięci podręcznej, aby przyspieszyć dostęp do tego i skalowalnych danych.

  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;
  }

Jeśli elementu nie ma w pamięci podręcznej, musisz odczekać 20 sekund, kolejne dostępy będą bardzo szybkie, dopóki element nie utraci ważności i nie będzie miał dostępu do pamięci podręcznej w ciągu 25 minut.