google-apps-script - 谷歌表格脚本:从当前单元格获取多列/行命名范围
问题描述
从其他示例中,我有一个函数返回当前单元格的命名范围的名称 - 但前提是该范围由单个单元格组成。
我开始尝试解析范围的开始和结束 Col 和 Row,但是一旦 cols 出现多个字符,例如“AA”,就会遇到问题。
然后我想如果我能得到单元格的“R1C1”符号,我可以使用 getCell() 来测试它是否存在于范围内。但是,我找不到 getA1Notation() 的等效函数来获取当前单元格的 R1C1。请问它是如何获得的?
function c_GetCellNamedRange() {
const ui = SpreadsheetApp.getUi();
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const cell = sheet.getCurrentCell().getA1Notation();
ui.alert("Current Cell: " + cell);
//get all the name ranges of the spreadsheetsheet
var namedRanges = SpreadsheetApp.getActiveSpreadsheet().getNamedRanges();
// loop through all the names range of the sheet
for(i=0;i<namedRanges.length;i++){
/*
// this only works if range is a single cell! How to loop through?
if(namedRanges[i].getRange().getA1Notation() == A1Notation) {
rangeName = namedRanges[i].getName();
break;
}
*/
// get the current cell R1C1 notation, then use getCell() to test if
// it exists in the named range?
//var rv = namedRanges[i].getCell(cell.getRow(), cell.getColumn())
var rv = namedRanges[i].getCell(cell.getRowIndex(), cell.getColumn())
if (!rv ) {
rangeName = namedRanges[i].getName();
break;
}
}
if ( !rangeName ) rangeName = "none"
ui.alert("Current Cell: " + cell + " \r\n\r\n Named Range: " + rangeName);
}
解决方案
您可以使用getRow()和getColumn()获取单元格的行索引和列索引。然后你可以用它来写它的 R1C1 符号:
const r1c1Notation = `R${sheet.getCurrentCell().getRowIndex()}C${sheet.getCurrentCell().getColumn()}`;
推荐阅读
- linux - 在 Ansible 2.4 中实现 openssl 标准命令(例如 pkcs12)
- reactjs - 在 react 或 vanillajs 中以编程方式修改/操作浏览器历史记录
- database - 如何从 .ibd、.frm 文件恢复数据库
- java - 从画布中绘制的弧中获取坐标
- python - 使用邻接列表 python 征求意见以列出所有最长的路径
- git - 使用 git 扩展更改
- android - 从 json 响应中删除 html 标签
- docker - WhiteSource 扫描无发行版 docker 图像:无法提取 layer.tar
- ionic-framework - 离子如何改变离子含量>主要风格?
- google-cloud-platform - 无法在 Datafusion 中上传 CDAP 自定义插件