如何在Googlesheets脚本中打破/退出For循环



当Googlesheets脚本中的特定逻辑条件为真时,如何中断循环/停止函数。就我而言,我有一个程序,该程序在循环中连续设置单元格 B1 的值并评估单元格 D11 中的结果。

我想要的是,如果结果是字符串 NNN,那么程序必须立即停止。

以下是我所拥有的,但是当逻辑条件为真时,程序不会退出/停止/退出(否则程序工作正常(。任何帮助表示赞赏。


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

更新

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

您可以使用break从 FOR 循环中出去。我认为这是一种简单的方法。

示例脚本:

var ar = [["e1"], ["e2"], ["e3"], ["e4"], ["NNN"], ["e6"]];
for (var i = 0; i < ar.length; i++) {
if (ar[i][0] == 'NNN') {
break;
}
}
Logger.log(i) // 4

修改了您的脚本:

如果这反映到脚本中,则可以按如下方式进行修改。

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') {
break;
}
}
......
}

但是,在您的脚本中,我认为sheet.getRange('D11').getValue()可以像下面这样从 FOR 循环中写入。关于这个,因为我不知道你的脚本的细节,请确认一下。

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