Если я понимаю ваш вопрос, вы хотите определить «тему» для любой данной строки, которая может быть в группе строк.Я настроил пример листа следующим образом:
Так что если вы хотите узнать «тему» для значения в ячейке (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;
}
}