Wie zu brechen / verlassen einer For-Schleife im Skript Googlesheets
Wie kann ich ausbrechen aus einer Schleife /stop-Funktion, wenn eine bestimmte logische Bedingung wahr ist in Googlesheets Skript. In meinem Fall, ich habe ein Programm, das in einer Endlosschleife setzt den Wert der Zelle B1, und wertet das Ergebnis in die Zelle D11.
Was ich will, ist, dass, wenn das Ergebnis ist ein string, NNN, dann muss das Programm sofort beenden.
Folgende ist, was ich habe, aber das Programm nicht beenden /anhalten /beenden, wenn die logische Bedingung wahr ist (das Programm ansonsten einwandfrei funktioniert). Jede Hilfe zu schätzen.
function loopX() {
var xx;
var yy;
......
for (var i = 0; i < data.length; i++) {
sheet.getRange('B1').setValue(data[i][0]);
SpreadsheetApp.flush();
Utilities.sleep(4000);
if (sheet.getRange('D11').getValue() == 'NNN')
exit();
}
......
}
Aktualisiert
function loopC() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('SheetN'); //name of your sheet
var data = ss.getSheetByName('data').getRange('A625:A2910').getValues();
if (sheet.getRange('D11').getValue() != "NNN") {
for (var i = 0; i < data.length; i++) {
sheet.getRange('B1').setValue(data[i][0]);
SpreadsheetApp.flush();
Utilities.sleep(4000);
}
}
}
InformationsquelleAutor Tapan Samaddar | 2017-08-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
break
aus FOR-SCHLEIFE. Ich denke, dass dies ein einfacher Weg.Beispiel-Skript :
Geändert-Skript :
Wenn dies widerspiegelt sich Ihr Skript, wie folgt ändern können.
Aber, in Ihrem Skript, ich denke, dass
sheet.getRange('D11').getValue()
möglicherweise werden geschrieben, um aus der FOR-SCHLEIFE wie im Bild unten gezeigt. Über dieses, seit ich weiß nicht, die Details Ihres Skripts, bitte bestätigen Sie es.Samaddar ich kann nicht finden, Ihre ganze Skript und Blatt von deiner Frage. Tut mir Leid. Kann ich Sie bitten, über dein script mit meiner Probe? Wenn Sie das tun können, importieren Sie es auf Ihre Frage.
Funktion loopC() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('SheetN'); // name der Platte var data = ss.getSheetByName ("Daten").getRange('A625:A2910').getValues(); if (sheet.getRange('D11').getValue() != "NNN") { for (var i = 0; i < - Daten.length; i++) { sheet.getRange ("B1").setValue(data[i][0]); SpreadsheetApp.flush(); Utilities.sleep(4000); } } } Auch der Wert der Zelle D11 wird wie folgt berechnet: =wenn(UND(SUMME(M214:M216)>2,O216>$G$6,V212<1,V213<1),"NNN","NA")
Samaddar, Wenn die for-Schleife wird ausgeführt, in Ihrer modifizierten script, es bedeutet, dass
D11
ist nichtNNN
. Wenn Sie sehen, dieD11
auf Ihrer Tabelle, ist die Zelle vonD11
NNN
? Wenn es so ist, wie über die änderung vonif (sheet.getRange('D11').getValue() != "NNN") {
zuif (sheet.getRange('D11').getDisplayValue() != "NNN") {
?if (sheet.getRange('D11').getDisplayValue() != "NNN") {...} nicht funktioniert. Irgendwie wird der Ausdruck nicht ausgeführt.
InformationsquelleAutor Tanaike