Heim >Web-Frontend >js-Tutorial >Warum ist mein Google Apps-Skript so langsam und wie kann ich die Verwendung von „getValues' und „setValues' optimieren?

Warum ist mein Google Apps-Skript so langsam und wie kann ich die Verwendung von „getValues' und „setValues' optimieren?

DDD
DDDOriginal
2024-12-01 03:05:14741Durchsuche

Why is my Google Apps Script so slow, and how can I optimize `getValues` and `setValues` usage?

Lange Verarbeitungszeit aufgrund übermäßiger Verwendung von getValues ​​und setValues

Problem:

Die Code leidet unter übermäßiger Nutzung der Methoden getValues ​​und setValues, was die Verarbeitung erheblich beeinträchtigen kann Zeit, insbesondere bei größeren Datensätzen.

Optimierungstechniken:

Serviceeinsätze minimieren:

  • Unnötiges vermeiden Aufrufe an Google Apps Script-Dienste. Speichern Sie Daten stattdessen lokal zwischen und verarbeiten Sie sie innerhalb des Skripts.

Look-Ahead-Caching:

  • Google Apps Script verwendet einen integrierten Look -Ahead-Caching, um Daten abzurufen, die wahrscheinlich benötigt werden.

Lesen/Schreiben minimieren Operationen:

  • Batch-Lese- und Schreibvorgänge durch Abrufen und Bearbeiten von Daten in Arrays. Dies reduziert die Anzahl der Aufrufe an den Server.

Vermeiden Sie abwechselnde Lese-/Schreibvorgänge:

  • Abwechselnde Lese- und Schreibbefehle stören das Look-Ahead-Caching . Planen Sie Vorgänge, um dieses Wechselmuster zu minimieren.

Verwenden Sie Arrays:

  • Verwenden Sie Arrays, um Daten effizient zu speichern. Rufen Sie alle Daten mit einem einzigen getValues-Aufruf in ein Array ab, führen Sie Operationen daran aus und schreiben Sie sie dann mit einem einzigen setValues-Aufruf zurück.

Beispiel:

Betrachten Sie den folgenden Codeausschnitt:

// Slow version: Alternating read and write operations
const sourceRange = SpreadsheetApp.getActiveSheet().getRange("A1:D2");
const targetRange = sourceRange.offset(2, 0);
for (let i = 0; i < sourceRange.getNumRows(); i++) {
  for (let j = 0; j < sourceRange.getNumColumns(); j++) {
    const value = sourceRange.getCell(i + 1, j + 1).getValue();
    targetRange.getCell(i + 1, j + 1).setValue(value);
  }
}

// Fast version: Batch read and write operations
const sourceValues = sourceRange.getValues();
targetRange.setValues(sourceValues);

Durch Stapeln von Lese- und Schreibvorgängen wird der zweite Code erstellt Snippet reduziert die Anzahl der Anrufe bei Diensten erheblich und verbessert die Bearbeitungszeit.

Das obige ist der detaillierte Inhalt vonWarum ist mein Google Apps-Skript so langsam und wie kann ich die Verwendung von „getValues' und „setValues' optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn