试图让 Google 电子表格自动滚动到底部填充的行。尝试了代码但收到错误

Mar*_*man 1 google-sheets autoscroll google-apps-script

我有从这个问题中获取的以下代码。我试图让我的 400 多行 Google 工作表在打开时自动滚动到工作表的底部,而不是第一行。我收到第 2 行代码的错误。

类型错误:无法从未定义中读取属性“源”。(第 2 行,文件“代码”)

我有一种感觉,因为我的电子表格上有多个选项卡,但我不太了解代码来修复它。我希望它只在第一个选项卡上工作。

    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);
    }
Run Code Online (Sandbox Code Playgroud)

Ted*_*noz 8

Vidar S. Ramdal在提到的主题中给出的说明以及@OlegValter 试图在评论中解释的说明非常重要。一定要把它们都做完。

  1. 转到工具?脚本编辑器并粘贴以下内容:

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);
}
Run Code Online (Sandbox Code Playgroud)
  1. 删除任何现有的调用 onOpen()、onOpen(e) 或类似代码的代码。

  2. 单击“保存”按钮,然后关闭脚本编辑器和电子表格。

  3. 现在,再次打开您的电子表格。给它几秒钟,您应该会看到光标下降到第一张纸上最后一行内容的 A 列。无论您上次使用电子表格时哪个工作表/行/列处于活动状态,都会发生这种情况。

笔记:

正如@OlegValter 所解释的那样,onOpen() 不是一个可以从脚本编辑器运行的函数。如果您单击“运行”来执行该功能,它将不起作用。它只会在电子表格打开时执行。


解释

  • ss.getSheets()[0].getName();
    getSheets()( Doc ref ) 获取电子表格中的所有工作表,并将其getSheets()[0]限制为电子表格中的第一张工作表。getName()返回工作表的名称。合并后,该行返回电子表格中第一个工作表的名称。
  • ss.getSheetByName(sheetname);
    getSheetByName(name)( Doc ref ) 返回具有给定名称的工作表。
  • sheet.getLastRow()-
    返回有内容的最后一行的位置(Doc ref
  • sheet.getRange(lastRow,1);
    getRange(row, column)返回给定坐标处左上角单元格的范围。我们用lastRow作为行的值,用 1 来表示 A 列(Doc ref
  • setActiveRange(range) 将指定范围设置为活动工作表中的活动范围,将范围内左上角的单元格设置为当前单元格 ( Doc ref )。换句话说,屏幕移动到活动单元格。