Как получить группу rowIndex в getRowGroup - PullRequest
0 голосов
/ 06 декабря 2018

Я работаю с сгруппированными строками в Листе.У меня есть пара групп, и я хочу получить тему каждой группы с помощью скрипта Google Apps.

Я исследовал Классная таблица документов и нашел метод

getRowGroup (rowIndex, groupDepth)

Но все же я не понимаюне знаю, как получить rowIndex с листа.Также количество групп может быть изменено, и я не знаю, как получить тему каждой группы, развернутой или свернутой.

Заранее спасибо.

1 Ответ

0 голосов
/ 19 декабря 2018

Если я понимаю ваш вопрос, вы хотите определить «тему» ​​для любой данной строки, которая может быть в группе строк.Я настроил пример листа следующим образом:

enter image description here

Так что если вы хотите узнать «тему» ​​для значения в ячейке (3,1)«Пино Нуар», вы хотите вернуть значение «Красные» из строки 1.

По сути, rowIndex - это любая строка на листе.Но я верю, что вы ищете строку, в которой находится элемент управленияЧтобы найти эту строку, я создал функцию:

function findGroupRowIndex(sheet, thisRow) {
  //--- if the given row is a part of a Group, then it will return the
  //    rowIndex (the row with the control) of the group, otherwise it
  //    returns 0
  try {
    var rowGroup = sheet.getRowGroup(thisRow, 1);
    var groupDepth = sheet.getRowGroupDepth(thisRow);
    var index = rowGroup.getControlIndex();
    return index;
  } catch (e) {
    //--- this row is not part of a group
    return 0;
  }
}

Важные части функции - убедиться, что вы перехватываете любые исключения, выданные, если данная строка не является частью rowGroup.

Весь мой модуль кода с вызывающей функцией:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  Logger.log(sheet.getName());

  var lookAtRow = 3;
  var topicRow = findGroupRowIndex(sheet,lookAtRow);
  if (topicRow != 0) {
    Logger.log('topic for group on row ' + lookAtRow + ' is ' + 
                sheet.getRange(topicRow,1).getValue());
  } else {
    Logger.log('no topic exists for row ' + lookAtRow);
  }
}

function findGroupRowIndex(sheet, thisRow) {
  //--- if the given row is a part of a Group, then it will return the
  //    rowIndex (the row with the control) of the group, otherwise it
  //    returns 0
  try {
    var rowGroup = sheet.getRowGroup(thisRow, 1);
    var groupDepth = sheet.getRowGroupDepth(thisRow);
    var index = rowGroup.getControlIndex();
    return index;
  } catch (e) {
    //--- this row is not part of a group
    return 0;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...