You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script 如何获取电子表格手动选中的单元格范围引用

问题原因

你代码中调用setActiveSheet(ss.getSheets()[1])强制切换工作表的操作,会重置目标工作表的默认选中范围为A1单元格,直接覆盖了你之前在表格界面选中的行数据,这是返回结果错误的核心原因。
另外如果你直接在Apps Script编辑器后台运行脚本,没有表格前端的交互上下文,也会默认返回A1单元格的选中结果。

修正后的代码
function cancelBooking() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  Logger.log('Spreadsheet: ' + ss.getName());
  const targetSheetName = 'Booking Database';
  // 直接获取当前用户激活的工作表,不做强制切换操作
  const currentSheet = ss.getActiveSheet();
  
  // 校验操作工作表是否正确,不需要限制操作表可以删除这段校验逻辑
  if (currentSheet.getName() !== targetSheetName) {
    SpreadsheetApp.getUi().alert(`请切换到「${targetSheetName}」工作表后再运行脚本`);
    return;
  }
  Logger.log('Sheet: ' + currentSheet.getName());

  // 获取选中范围
  const activeRange = currentSheet.getActiveRange();
  Logger.log('选中范围起始行号:' + activeRange.getRow());
  Logger.log('选中范围总行数:' + activeRange.getNumRows());
  Logger.log('选中范围A1标识:' + activeRange.getA1Notation());

  // 示例:获取选中整行的所有数据
  if (activeRange.getNumColumns() === currentSheet.getMaxColumns()) {
    const rowData = activeRange.getValues()[0];
    Logger.log('选中行数据:' + JSON.stringify(rowData));
  }
}
运行注意事项
  • 不要在Apps Script代码编辑器中直接点击运行按钮,需要将脚本绑定到表格的自定义菜单/插入的绘图按钮,在表格界面选中目标行后点击触发脚本,才能正常获取选中范围。
  • 如果需要支持选中多行批量处理,遍历activeRange.getValues()返回的二维数组即可。

内容的提问来源于stack exchange,提问作者PhilTilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:27:03