Lange Verarbeitungszeit: Adressierung von getValue() und Zelleneinfügungen
In Ihrem bereitgestellten Code ist das Problem der übermäßigen Verarbeitungszeit auf die Häufigkeit zurückzuführen Verwendung der Methoden Range.getValue() und Range.setValue() innerhalb einer Schleife. Während das Skript jede Zelle in Spalte A durchläuft, liest und schreibt es Werte mehrmals, was die Ausführung erheblich verlangsamt.
Optimierung des Codes
Um diese Leistung zu beheben Bei diesem Problem ist es wichtig, die Aufrufe von Diensten zu minimieren und sich dabei vor allem auf die Reduzierung der Anzahl der Range.getValue()- und Range.setValue()-Operationen zu konzentrieren. So können Sie Ihren Code optimieren:
Batch-Lesevorgänge
Anstatt den Wert jeder Zelle einzeln mit range1.getValue() abzurufen, lesen Sie die Werte aller benötigte Zellen in einem Batch-Vorgang. Wenn Sie beispielsweise die Werte der aktuellen Zeile und der nächsten drei Zeilen benötigen, können Sie s.getRange(row 1, 1, 4, 1).getValues() verwenden, um sie alle auf einmal abzurufen.
Batch-Schreibvorgänge
Anstatt die Werte einzelner Zellen festzulegen, sammeln Sie auf ähnliche Weise alle Werte, die geschrieben werden müssen, und sammeln Sie sie dann Weisen Sie sie in einem Batch-Vorgang zu. Wenn Sie beispielsweise Werte in die aktuelle Zeile und die nächsten drei Zeilen schreiben möchten, können Sie range1.offset(0, 0, 4).setValues([["data 1"], ["data 2"], ["Daten 3"], ["Daten 4"]]); um dies zu tun.
Beispiel für eine Optimierung
Hier ist eine optimierte Version Ihres Codes, die diese Optimierungen enthält:
function format() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getActiveSheet(); var lastRow = s.getRange("A:A").getLastRow(); var allValues = s.getRange(1, 1, lastRow, 1).getValues(); // Loop through all rows in the spreadsheet for (var row = 0; row < lastRow; row++) { var cellValue = allValues[row][0]; if (typeof cellValue === 'number') { continue; } } }
Durch die Verwendung dieser Optimierungen können Sie die Anzahl der Aufrufe von Diensten erheblich reduzieren und die Leistung Ihres Skripts verbessern. Dieser Ansatz reduziert die Anzahl der Aufrufe von Diensten von 8 pro Schleife auf nur 2, was zu einer erheblichen Verkürzung der Verarbeitungszeit führt.
Das obige ist der detaillierte Inhalt vonWie kann ich Google Apps Script optimieren, um lange Verarbeitungszeiten zu reduzieren, die durch häufige Aufrufe von „getValue()' und „setValue()' verursacht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!