google-apps-script - 在谷歌脚本中动态生成范围

标签 google-apps-script

我对 Google 应用脚本完全陌生,正在努力动态生成范围。

我在工具栏中创建了一个调用函数的按钮。我希望该函数执行的操作是根据当前单元格设置事件范围,但仅使用行。因此,如果用户位于第 6 行中的任何列,它仍然只会将事件范围设置为 ("A6:G6")

到目前为止我所拥有的是

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

我知道最后一行不是它的工作原理,但这就是我无法弄清楚的。我想传入onRow作为变量,固定下面三个数字,分别代表列数、行数和列数。

最佳答案

将 Google Apps 脚本与电子表格结合使用时,您需要小心,不要混淆 SpreadsheetApp、电子表格、Sheet 和 Range 对象及其方法。在您的示例中,您滥用了 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);
}

关于google-apps-script - 在谷歌脚本中动态生成范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671512/

相关文章:

javascript - 将外部 javascript 导入到 google apps 脚本

javascript - 为什么所有字段在 Data Studio 中都显示为维度?

javascript - Google Apps 脚本 - 以字符串形式发送电子邮件

google-apps-script - Google Apps 脚本图表使用第 1 行作为标题

javascript - Google Apps 脚本中的数组 "includes"方法失败

javascript - Google 脚本 - 表单 - 删除分页符/节时出现问题 - "Invalid data updating form"

user-interface - 您可以在 Google 表格单元格中以编程方式生成按钮吗?

google-apps-script - 以编程方式在 Google 电子表格图表中设置最小值

google-sheets - 带有自定义脚本的公式不会在 Google 电子表格中更新

javascript - 使用 Google Apps 脚本从 HTML 页面上的 JSON 数据创建下拉列表