【发布时间】:2020-08-09 00:18:58
【问题描述】:
Tl;博士。将getValues() 链接到班级表getActiveRange() 是一种好习惯吗?什么可能导致有时返回 [[]] 而不是预期值?
注意:[[]] 是日志/脚本执行页面中显示的内容。这些“事物”不显示字符串的引号字符。
这来自Get selected values in row,我在其中发布了一个答案,其中包含几个备选方案来获取活动范围的值。
这里特意问一下下面代码随机失败的原因
function myFunction2(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var values = sheet.getActiveRange().getValues();
Logger.log(values);
}
发生故障时我遵循的步骤
- 创建一个新的电子表格
- 向一行添加一些值
- 选择行
单击相应的行标题 - 单击工具 > 脚本编辑器 这将创建一个使用新运行时 (Chrome V8) 的有界项目,这是一个用于 Google Apps 脚本的默认 Google Cloud 项目
- 添加一个简单的函数:
function myFunction() {
var values = SpreadsheetApp.getActiveRange().getValues();
Logger.log(values);
}
- 运行 myFunction 授权脚本
- 运行 myFunction 以实际执行 myFunction
- 按Ctrl + Enter打开日志
- 在本题开头添加引用函数(
myFunction2) - 运行
myFunction2 - 使用引用的键盘快捷键打开日志(步骤 7)
记录了
[[]]而不是预期值。
- 添加第三个函数
function myFunction3(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var range = sheet.getActiveRange();
var values = range.getValues();
Logger.log(values);
}
- 运行
myFunction3 - 使用引用的键盘快捷键打开日志
- 再次运行
myFunction2 - 使用参考的键盘快捷键打开日志(步骤 7)。 现在已记录了预期值。
以下是使用 Class Sheet getActiveRange() 与 getRow()、getValues() 等一些 Class Range 方法链接的问题,但当前答案没有提及问题的原因,它们只是提供了替代代码
- Emailing data from a spreadsheet at a specific time of day
- Convert row and column data to column-only
- Trying to copy values from another tab but keep getting error "function getValues() can not be used as the left-hand side"
我已经搜索了Issue Tracker。虽然有一些与 getActiveRange 相关的问题,例如 Calls to .getActiveRange() don't return correct cells as seen in filter views、getActiveRange() incorrect in onChange trigger for some column/row operations 等,但它们似乎与此问题没有直接关系。
截至 2020 年 8 月 9 日(UTC),相同的电子表格/有界脚本正在返回预期值,无论如何我添加了另一个函数来测试 getValues()、getRow()、getColumn()、getA1Notation() 和 @987654355 @。都返回了预期值。
我刚刚发现另一个关于 getActiveRange() 的类似问题的问题 -> getActiveRange not returning current selection。这个问题不是重复的,因为该问题只提到在 24 小时后它再次工作,但没有提到将 Class Range 方法链接到 getActiveRange() 是否是一种好习惯,并且当前的答案没有解释为什么会发生这种情况。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: javascript google-apps-script google-sheets method-chaining