我正在处理工作表中的分组行。我有几个小组,我想使用Google Apps脚本获取每个小组的主题。
我研究了Class Sheet doc,发现了方法
getRowGroup(rowIndex,groupDepth)
但是我仍然不知道如何从工作表接收rowIndex。另外,组的数量可以更改,我不知道如何获得每个组的主题,无论是扩展的还是折叠的。
谢谢。
答案 0 :(得分:1)
如果我理解您的问题,则希望确定行组中任何给定行的“主题”。我设置了一个这样的示例工作表:
因此,如果您想知道单元格(3,1)“黑皮诺”中某个值的“主题”,则要从第1行返回值“ Reds”。
基本上,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;
}
}