首页 > 解决方案 > 滚动单元格显示在屏幕顶部

问题描述

在共享的 Google 表格中,用户可以针对每项工作输入他们的工作时间,作为预测工具。这些工作分为 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.");
  }
}

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

如果起始位置位于作业列表的底部,则它可以工作。但如果起始位置在顶部,大多数用户开始的位置就不会。

标签: google-apps-scriptgoogle-sheets

解决方案


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

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

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

推荐阅读