如何让光标移动到 Google 表格行?

How to get cursor to move to a Google Sheets row?

我有以下绑定脚本,可用于向电子表格添加新行:

function addSong() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var lastRow = sheet.getLastRow()
  sheet.appendRow([lastRow+1]);
  var range = sheet.getRange(sheet.getLastRow(), 1);
  SpreadsheetApp.setActiveRange(range);
}

我期望将光标(即 select)放在最后(和新)行的最后两行不起作用。但事实并非如此。

我做错了什么?

您可能想尝试 SpreadsheetApp.flush()。

function addSong() {
    var ss = SpreadsheetApp.getActive();
    var sheet = ss.getActiveSheet();
    var lastRow = sheet.getLastRow()
    sheet.appendRow([lastRow+1]);
    SpreadsheetApp.flush();
    var range = sheet.getRange(sheet.getLastRow(), 1);
    SpreadsheetApp.setActiveRange(range);
}

这应该重置电子表格并立即进行更改,而不是等到脚本完成添加最后一行。

我想这就是您要找的。您需要使用正确的 getRange() 函数来指定范围的维度;只接受两个参数的那个总是 returns 一个单元格。

该程序还设置了背景颜色,以便清楚地了解实际范围。

这也将设置选择,但您可能想了解范围与 Selection Class

之间的关系
function addSong(song) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var lastRow = sheet.getLastRow()
  sheet.appendRow([lastRow+1,song]);
  var range = sheet.getRange(sheet.getLastRow(), 1);
  // getRange(row, column, numRows, numColumns)
  var range = sheet.getRange(sheet.getLastRow()-1, 1, 2, 2);

  SpreadsheetApp.setActiveRange(range);
  range.setBackground('green');
}

function test() {
  addSong("Stairway to Heaven");
}