如何中断/退出Googlesheets脚本中的For循环

Tap*_*dar 3 google-sheets google-sheets-api

当Googlesheets脚本中的特定逻辑条件为true时,如何跳出循环/停止功能。就我而言,我有一个程序,该程序在循环中连续设置单元格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();

  }
......
}
Run Code Online (Sandbox Code Playgroud)

更新

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 5

您可以使用breakFOR FOROP出门。我认为这是一种简单的方法。

示例脚本:

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
Run Code Online (Sandbox Code Playgroud)

修改了脚本:

如果这反映到您的脚本,则可以进行如下修改。

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;
    }
  }
......
}
Run Code Online (Sandbox Code Playgroud)

但是,在您的脚本中,我认为sheet.getRange('D11').getValue()可以像下面这样从FOR LOOP中写入。关于此,由于我不知道您的脚本的详细信息,请进行确认。

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);
  }
}
Run Code Online (Sandbox Code Playgroud)