当我尝试调用sheet.getActiveRange()函数时,它不会返回表示我正在使用的工作表的当前选定单元格的范围。相反,它通常认为活动范围是cell(1,1),但事实并非如此。该功能在不工作后工作了几分钟,但此后又恢复了同样的问题。这个问题似乎记录在这里1,但是没有答案,所以我再次提出这个问题。
我尝试在getActiveRange()上使用activate(),但是它只会将屏幕上的选择更改为cell(1,1),清楚地说明了问题。
var rng = master.getActiveRange();
Logger.log(rng.getHeight());
从理论上讲,所选范围的高度可以为5或其他任何值,但由于cell(1,1)的高度为1,因此它总是返回为1。基本上,它总是认为活动范围是cell(1,1)。
答案 0 :(得分:0)
此功能将在活动图纸上获取活动范围。
function runOne() {
var rl=SpreadsheetApp.getActiveRangeList().getRanges();
var ls='';
for(var i=0;i<rl.length;i++) {
if(i>0) {
ls+=', ';
}
ls+=Utilities.formatString('\'%s\'!%s',rl[i].getSheet().getName(),rl[i].getA1Notation());
}
SpreadsheetApp.getUi().alert(ls);
}
答案 1 :(得分:0)
我正在对此进行测试,但我仍然保持与您相同的行为,如果一段时间后需要使用SpreadsheetApp.getActiveSheet()
,则需要对其进行“更新”。为此,您只需转到工作表并从工具->脚本编辑器中打开脚本编辑器,然后在运行代码时便会对其进行更新。
此外,我使用Selection class进行了测试,它提供了有关如何进行管理的很好的示例。
要进行快速测试,可以使用以下代码:
function selection(){
var selection = SpreadsheetApp.getActiveSheet().getSelection();
var activeRange = selection.getActiveRange();
Logger.log("Active Cell: " + selection.getCurrentCell().getA1Notation())
Logger.log("Range: " + activeRange.activate().getA1Notation());
}