在 forEach 循环后结束于特定的 sheet

End on a specific sheet after a forEach loop

我有一个通过 forEach 循环的宏 运行,该循环有效但总是在我的工作簿中的最后一个 sheet 处结束。 我如何让它在指定的 sheet 完成?

我尝试了 getSheetbyname 的几种变体 但我真的不知道放在哪里。

这是代码:

function ResetPage() {
  var sheet = SpreadsheetApp.getActive();
  var racenumber = sheet.getRange('B2');
  var venue = sheet.getRange('E2');
  venue.clearContent();
  racenumber.activate();
  sheet.getCurrentCell().setValue('1');
}
function doForAllTabs() {
  var spreadsheet = SpreadsheetApp.getActive();
  var allsheets = spreadsheet.getSheets();

  allsheets.forEach(function(workbook) {
  if(workbook.getSheetName() !== "Venues") {
    workbook.activate();
    ResetPage();
    }
  });
}

您无需将每个 sheet 设置为活动状态即可更改值。宏记录器可以做到,但会使过程变慢。

这应该在不更改活动单元格的情况下进行更新:

function ResetPage(sheet) {
  var racenumber = sheet.getRange('B2');
  var venue = sheet.getRange('E2');
  racenumber.setValue(1);
  venue.clearContent();
}
function doForAllTabs() {
  var spreadsheet = SpreadsheetApp.getActive();
  var allsheets = spreadsheet.getSheets();

  allsheets.forEach(function(workbook) {
    if(workbook.getSheetName() !== "Venues") {
      ResetPage(workbook);
    }
  });
}
function doForAllTabs() {
  SpreadsheetApp.getActive().getSheets().forEach(sh => {
    if (sh.getName() != "Venues") {
      sh.getRange('B2').setValue(1);
      sh.getRange('E2').setValue('');
    }
  });
}