Ячейка прокрутки отображается в верхней части экрана - PullRequest
1 голос
/ 25 октября 2019

В общем листе Google пользователи вводят свои часы для каждой работы в качестве инструмента прогнозирования. Задания делятся на 3 группы, поэтому я хочу, чтобы у меня был сценарий, чтобы пользователи могли легко прокрутить до нужного раздела.

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

// global variables
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var err_msg = "Sorry, can't find link to "
var lastcell = sheet.getRange(sheet.getLastRow(), 1, 1, 1); //row, column, numRows, numColumns


// search in column A:A for the headings, returns row number
function findInColumn(data) {

  var sheet  = SpreadsheetApp.getActiveSpreadsheet();
  var values = sheet.getRange('A1:A' + sheet.getLastRow()).getValues();    // column + ":" + column like A:A

  //var values = column.getValues(); 
  var row = 0;

  while ( values[row] && values[row][0] !== data ) {
    row++;
  }

  if (values[row][0] === data) 
    return row+1;
  else 
    return -1;

}


function jumpTo_LargeScaleHybrid() {

  var data = "LARGE SCALE / HYBRID";
  var rownum = findInColumn(data);

  var range = sheet.getRange(rownum, 1, 1, 1); //row, column, numRows, numColumns

  if (rownum && -1) {
    sheet.setActiveRange(range);
  }
  else {
    Browser.msgBox("Sorry, can't find link to 'LARGE SCALE / HYBRID'. Someone must have changed the target name.");
  }
}

Однако выбранная ячейка находится в нижней части экрана, тогда как мне бы это хотелосьвверху.

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

1 Ответ

0 голосов
/ 26 октября 2019

Я нашел обходной путь для своей проблемы, используя команду Flush.

Я смог выбрать / активировать последнюю ячейку в столбце, выполнить команду .flush и затем (эффективно) прокрутитьдо клетки я хочу

var lastcell = sheet.getRange(sheet.getLastRow(), 1, 1, 1)
sheet.setActiveRange(lastcell);
SpreadsheetApp.flush();
sheet.setActiveRange(range);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...