尝试使 Google 电子表格自动滚动到填充行的底部。尝试了代码但出现错误
Trying to make a Google spreadsheet auto scroll to bottom filled in row. Tried a code but getting an error
我从 this question 中获取了以下代码。我试图让我的 400+ 行 Google sheet 在打开时自动滚动到 sheet 的底部而不是第一行。我收到第 2 行代码的错误。
TypeError: 无法从未定义中读取 属性 "source"。 (第 2 行,文件 "Code")
我有一种感觉,这是因为我的跨页上有多个标签sheet,但我对代码的了解不够深,无法修复它。我希望它只适用于第一个选项卡。
function onOpen(e) {
var spreadsheet = e.source;
var sheet = spreadsheet.getActiveSheet();
var lastRow = spreadsheet.getLastRow();
/* if (sheet.getMaxRows() == lastRow) {
sheet.appendRow([""]);
}
lastRow = lastRow + 1;
*/
var range = sheet.getRange("A" + lastRow + ":A" + lastRow);
sheet.setActiveRange(range);
}
Vidar S. Ramdal 在 referred topic 中给出的说明以及@OlegValter 试图在评论中解释的说明 非常 重要。一定要全部完成。
- 转到工具 → 脚本编辑器并粘贴以下内容:
function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = ss.getSheets()[0].getName();
// Logger.log("DEBUG: sheetname = "+sheetname)
var sheet = ss.getSheetByName(sheetname);
var lastRow = sheet.getLastRow();
var range = sheet.getRange(lastRow,1);
sheet.setActiveRange(range);
}
删除任何调用 onOpen()、onOpen(e) 或类似代码的现有代码。
点击保存按钮,然后关闭脚本编辑器,传播sheet.
现在,再次打开您的价差sheet。给它几秒钟,您应该会看到光标落到第一个 sheet 内容最后一行的 A 列。无论您上次使用价差 sheet.
时 sheet/row/column 处于活动状态,都会发生这种情况
注:
正如@OlegValter 所解释的那样,onOpen() 不是可以从脚本编辑器中 运行 的函数。如果您点击"run" 来执行该功能,它将不起作用。它只会在点差sheet打开时执行。
说明
ss.getSheets()[0].getName();
getSheets()
(Doc ref) gets all the sheets in the spreadsheet, and getSheets()[0]
limits this to just the first sheet in the spreadsheet. getName()returnssheet的名字。结合起来,这一行returns第一个sheet的名字在Spreadsheet.
ss.getSheetByName(sheetname);
getSheetByName(name)
(Doc ref) returns 具有给定名称的 sheet。
sheet.getLastRow()
-
returns 包含内容的最后一行的位置 (Doc ref)
sheet.getRange(lastRow,1);
getRange(row, column)
returns 给定坐标左上角单元格的范围。我们用lastRow
作为行的值,1表示A列(Doc ref)
setActiveRange(range)
将指定范围设置为活动 sheet 中的活动范围,并将范围中左上角的单元格设置为当前单元格 (Doc ref)。换句话说,屏幕移动到活动单元格。
我从 this question 中获取了以下代码。我试图让我的 400+ 行 Google sheet 在打开时自动滚动到 sheet 的底部而不是第一行。我收到第 2 行代码的错误。
TypeError: 无法从未定义中读取 属性 "source"。 (第 2 行,文件 "Code")
我有一种感觉,这是因为我的跨页上有多个标签sheet,但我对代码的了解不够深,无法修复它。我希望它只适用于第一个选项卡。
function onOpen(e) {
var spreadsheet = e.source;
var sheet = spreadsheet.getActiveSheet();
var lastRow = spreadsheet.getLastRow();
/* if (sheet.getMaxRows() == lastRow) {
sheet.appendRow([""]);
}
lastRow = lastRow + 1;
*/
var range = sheet.getRange("A" + lastRow + ":A" + lastRow);
sheet.setActiveRange(range);
}
Vidar S. Ramdal 在 referred topic 中给出的说明以及@OlegValter 试图在评论中解释的说明 非常 重要。一定要全部完成。
- 转到工具 → 脚本编辑器并粘贴以下内容:
function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = ss.getSheets()[0].getName();
// Logger.log("DEBUG: sheetname = "+sheetname)
var sheet = ss.getSheetByName(sheetname);
var lastRow = sheet.getLastRow();
var range = sheet.getRange(lastRow,1);
sheet.setActiveRange(range);
}
删除任何调用 onOpen()、onOpen(e) 或类似代码的现有代码。
点击保存按钮,然后关闭脚本编辑器,传播sheet.
现在,再次打开您的价差sheet。给它几秒钟,您应该会看到光标落到第一个 sheet 内容最后一行的 A 列。无论您上次使用价差 sheet.
时 sheet/row/column 处于活动状态,都会发生这种情况
注:
正如@OlegValter 所解释的那样,onOpen() 不是可以从脚本编辑器中 运行 的函数。如果您点击"run" 来执行该功能,它将不起作用。它只会在点差sheet打开时执行。
说明
ss.getSheets()[0].getName();
getSheets()
(Doc ref) gets all the sheets in the spreadsheet, andgetSheets()[0]
limits this to just the first sheet in the spreadsheet. getName()returnssheet的名字。结合起来,这一行returns第一个sheet的名字在Spreadsheet.ss.getSheetByName(sheetname);
getSheetByName(name)
(Doc ref) returns 具有给定名称的 sheet。sheet.getLastRow()
-
returns 包含内容的最后一行的位置 (Doc ref)sheet.getRange(lastRow,1);
getRange(row, column)
returns 给定坐标左上角单元格的范围。我们用lastRow
作为行的值,1表示A列(Doc ref)setActiveRange(range)
将指定范围设置为活动 sheet 中的活动范围,并将范围中左上角的单元格设置为当前单元格 (Doc ref)。换句话说,屏幕移动到活动单元格。