滚动单元格显示在屏幕顶部



在共享的谷歌工作表中,用户根据每个工作输入他们的小时数,作为预测工具。作业分为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.");
}
}

但是,所选单元格位于屏幕底部,而我希望它位于顶部。

如果起始位置在作业列表的底部,那么它就起作用了。但如果起始位置在顶部,即大多数用户的起始位置,则不会。

我找到了一个解决问题的方法,使用Flush命令。

我可以选择/激活列中的最后一个单元格,执行.flash命令,然后(有效地(向上滚动到我想要的单元格

var lastcell = sheet.getRange(sheet.getLastRow(), 1, 1, 1)
sheet.setActiveRange(lastcell);
SpreadsheetApp.flush();
sheet.setActiveRange(range);

最新更新