Как создать скрипт электронной таблицы, который каждую минуту перемещается на следующую вкладку? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть электронная таблица, отображающая информацию на двух мониторах.Файл имеет от 5 до 30 вкладок.Я пытался заставить следующий скрипт с управляемым временем триггером переходить с одной вкладки листа на следующую каждую минуту, однако у меня есть две проблемы:

1) - мне нужен цикл, чтобы пропустить четыре вкладки(они имеют фиксированные имена), и я в настоящее время не могу найти работоспособное решение, и
2) - управляемый временем триггер в 1 минуту ничего не делает, не работает.

Вот два сценарияЯ тестировал и настраивал, чтобы найти, работает ли он:

Сценарий 1:

function MoveNext() {
  var spreadsheet = SpreadsheetApp.getActive();
  var nextSheetIndex = spreadsheet.getActiveSheet().getIndex() + 1;

  if (nextSheetIndex > spreadsheet.getSheets().length) { nextSheetIndex = 1; }
  spreadsheet.setActiveSheet(spreadsheet.getSheets()[nextSheetIndex - 1],true);

И сценарий 2 : эта цель пропускает четыре вкладки, которые я не хочу зацикливать:

var ss = SpreadsheetApp.getActive();
var sheets = ss.getSheets();

for (i = 0; i < sheets.length; i++) {
  switch (sheets[i].getSheetName()) {
    case "T1":
    case "T0":
    case "Summary Panel":
    case "Flight Info":
    case "Template":
      break;
    default:


      var nextSheetIndex = ss.getActiveSheet().getIndex() + 1;
      if (nextSheetIndex > ss.getSheets().length) {
        nextSheetIndex = 1;
      }
      ss.setActiveSheet(ss.getSheets()[nextSheetIndex - 1], true);

1 Ответ

0 голосов
/ 11 октября 2018

Вы должны будете добавить свой код таймера самостоятельно, но вот пример того, как перейти к следующему «одобренному» листу.

function MoveNext() {
  var sheetsToSkip = ["Sheet3", "Sheet4", "Sheet7"];
  var thisBook = SpreadsheetApp.getActive();
  var sheetCount = thisBook.getNumSheets();
  var thisSheet = SpreadsheetApp.getActiveSheet();
  var thisSheetName = thisSheet.getName();
  var thisSheetIndex = thisSheet.getIndex() - 1;  //subtract one to get the array index
  var allSheets = thisBook.getSheets();

  var i = thisSheetIndex;
  var notDone = true;
  while (notDone) {
    if (i == (sheetCount-1)) {
      i = 0;
    } else {
      i++;
    }
    Logger.log('next sheet index is ' + i);
    var nextName = allSheets[i].getName();
    if (sheetsToSkip.indexOf(nextName) == -1) {
      var nextSheet = allSheets[i];
      Logger.log('next active sheet should be ' + nextSheet.getName());
      thisBook.setActiveSheet(nextSheet);
      notDone = false;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...