google-apps-script - 滚动单元格显示在屏幕顶部
问题描述
在共享的 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.");
}
}
但是,所选单元格位于屏幕底部,而我希望它位于顶部。
如果起始位置位于作业列表的底部,则它可以工作。但如果起始位置在顶部,大多数用户开始的位置就不会。
解决方案
我找到了解决我的问题的方法,使用 Flush 命令。
我能够选择/激活列中的最后一个单元格,执行 .flush 命令,然后(有效地)向上滚动到我想要的单元格
var lastcell = sheet.getRange(sheet.getLastRow(), 1, 1, 1)
sheet.setActiveRange(lastcell);
SpreadsheetApp.flush();
sheet.setActiveRange(range);
推荐阅读
- python - AWS Redshift 查询优化
- node.js - 无法部署/服务 Firebase 并出现错误:在 package.json 中未定义“导出”主
- java - 无法使用 XPath 匹配功能来查找与名称模式与 vRealize Orchestrator 的 VcPlugin 匹配的虚拟机
- python - Scipy.optimize - 最小化不会给出与 Excel 相同的结果
- python - 在 PyBnB 中使用 Pyomo 模型 (pybnb.pyomo.problem)
- firebase - 在 Flutter 中从 Firebase 创建数据列表(数组)
- angular - 使用角度表单控件中的数组制作所需的字段?
- python - 如何在 Geany (.ipynb) 中使用笔记本 python 文件?
- javascript - 在 React 测试库中发现多个元素错误
- arrays - 如何显示具有 2rem 左边距的每个子元素列表?