Открыть на сегодняшний день в нескольких вкладках на листе - PullRequest
0 голосов
/ 03 марта 2020

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

Мои даты начинаются с H1 и go до AL1.

Я попытался настроить скрипт, чтобы отразить это, но с небольшим успехом

   function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange("H1:AL1");   // get all 2nd row
  var values = range.getValues();
  var day = 24*3600*1000;  
  var now = Date.now();  
  var ssdate; 
  for (var i = 0; i < values[0].length; i++) {
    try {
      ssdate = values[0][i].getTime();
    }
    catch(e) {
    }
    if (ssdate && ssdate <= now && now < ssdate + day) {
      sheet.setActiveRange(range.offset(0,i,1,1));
      break;
    }    
  }
}

1 Ответ

0 голосов
/ 06 марта 2020

Для этого решения, я полагаю, у вас есть все месяцы, заказанные с января по декабрь, поэтому январь находится на первой позиции.

Вы можете устанавливать новую дату каждый раз, когда открываете электронную таблицу, получаете месяц и день и используете active в листах и ​​диапазоне:

function onOpen(){

  let date = new Date();
  let month = Utilities.formatDate(date, 'UTC', 'M');
  let day = Utilities.formatDate(date, 'UTC', 'd');

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  sheets[month - 1].activate();

  var range = sheets[month - 1].getRange(1, 7 + parseInt(day));
  sheets[month - 1].setActiveRange(range);

}

Вы заметите 7 + parseInt(day). Поскольку H начинается с 8-й позиции, мы добавляем дни текущего месяца, но выводим 1. В противном случае первый день месяца будет 8 + 1 (H + 1), и он будет сосредоточен на I. Кроме того, parseInt это преобразовать day в целое число, чтобы избежать 7 + 6 = 76.

Ссылки :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...