在谷歌脚本中动态生成范围

时间:2014-03-26 19:44:48

标签: google-apps-script

我对Google App Scripts完全不熟悉,并且很难动态生成范围。

我在工具栏中创建了一个调用函数的按钮。我想要的功能是根据当前单元格设置活动范围,但仅使用行。因此,如果用户在第6行的任何列上,它仍然只会将有效范围设置为(“A6:G6”)

到目前为止我所拥有的只是

myFunction() {
  var ss = SpreadsheetApp;
  var onRow = ss.getActiveRange().getRow();
  xl.setActiveRange(onRow, 1, 1, 7);
}

我知道最后一行不是它的工作方式,但我这是我无法弄清楚的。我想传入onRow作为变量,并修复了以下三个数字,分别代表列号,行数和列数。

1 个答案:

答案 0 :(得分:2)

在使用带有电子表格的Google Apps脚本时,您需要小心不要混淆SpreadsheetApp,电子表格,工作表和范围对象及其方法。在您的示例中,您滥用了SpreadsheetApp对象。

以下是一些示例代码,可以执行您想要的操作,由简单的菜单项控制。请注意,在setRangeByRow()中创建所有这些变量并非绝对必要;为了清楚起见,这只是在这里完成的:

/**
 * Runs when the document is opened.
 * Sets up menu controls.
 */
function onOpen() {
  SpreadsheetApp.getUi().createMenu('Test Range Set')
    .addItem('Select Range', 'setRangeByRow')
    .addToUi();
}

/**
 *  Acquires the row of the current active cell
 *  and sets the active range to the first 7
 *  columns of that row.
 */
function setRangeByRow() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var onRow = sheet.getActiveRange().getRow();
  //Logger.log("ACTIVE ROW: "+onRow);
  var range = sheet.getRange(onRow, 1, 1, 7);
  sheet.setActiveRange(range);
}