google-apps-script - 使用工作表名称时 getRangeByName 返回 null
问题描述
我正在尝试获取活动工作表的内容。为了实现这一点,我正在尝试使用 getRangeByName()。如果您记录 sheetName 的值,您将看到它确实返回了活动工作表的名称。但是当我使用 sheetName 作为 getRangeByName 的参数时,范围为空。
function TestMacro()
{
var cellVal = SpreadsheetApp.getActiveSheet().getActiveCell().getValue();
SpreadsheetApp.getUi().alert(FindIdenticalValue(cellVal));
}
function FindIdenticalValue(cellVal)
{
var sheetName = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
var range = SpreadsheetApp.getActive().getRangeByName(sheetName);
var rowCount = range.getNumRows();
var colCount = range.getNumColumns();
return true;
}
解决方案
在这里查看命名范围是什么。它们与工作表的名称不同。电子表格中的层次结构如下:
- 电子表格文件的名称,例如预算
- 1. 以内的工作表名称,例如 2021 年预算
- 2. 内的范围名称,例如 line_items(例如 A2:A10)
要查看您是否实际上有任何命名范围,请使用此
function logNamedRanges(){
const namedRanges = SpreadsheetApp.getActive().getNamedRanges()
if( !ranges.length ) {
console.log("No ranges available")
return
}
namedRanges.forEach( namedRange => {
console.log( namedRange.getName() )
const range = namedRange.getRange()
})
}
据我了解,您正在尝试获取活动工作表的内容,为此只需执行以下操作:
function getActiveSheetData(){
return SpreadsheetApp.getActiveSheet().getDataRange().getValues()
}
推荐阅读
- python - Python cv2.VideoWriter() 从 numpy 数组写入 .avi 时会产生失真的视频
- python - 每个线程一个 aiohttp ClientSession?
- android - Adnroid 中的 Google Pay api 集成
- angular - Facebook 使用 Angular 和 Google Firebase 登录失败 - URL 被阻止
- git - 当存储库中的代码与当前代码不同时,为什么 git 说一切都是最新的?
- python - Python 3 Tkinter,如果尚未创建窗口,则创建窗口
- windows - Windows 任务计划程序 - 如何让任务在某个时间之前只运行一次?
- firebase - 如何在不获取 Firestore 中文档内容的情况下获取集合中文档 ID 的列表?
- regex - 只有满足条件,Regex 才能捕获某个字符串?
- laravel - 验证另一个字段是否为空 laravel 验证