【发布时间】:2020-12-22 12:18:49
【问题描述】:
我想从我的工作表中获取一个范围。正如Best practices 中所建议的那样,我正在尝试获取一个数组并对其进行操作,但我很困惑:
const ss = Spreadsheet.getActive(),
sh = ss.getSheetByName("Sheet1"),
rg = sh.getRange("A1:C1"),//has 1,2,3
values = rg.getValues();
console.log(values);
日志显示
[[1,2,3]]
如你所见,我得到了所有三个元素。但是,当我记录数组的长度(array.length)时,它只是 1(而不是 3)。当我使用.indexOf 或.includes 测试元素是否存在时,它会显示-1 或false。
const values = /*same as logged above*/[[1,2,3]];
console.log(values.indexOf(2));//got -1 expected 1
console.log(values.includes(1));//got false expected true
为什么?
setValues() 也有同样的问题。
rg.setValues([1,2,3]);//throws error
错误是
“参数 (number[]) 与 SpreadsheetApp.Range.setValues 的方法签名不匹配。”
我的具体问题是:getValues() 究竟返回了什么?它是一种特殊的数组吗?
【问题讨论】:
-
欢迎用不同的方法来解释这个概念。关于这个概念的问题已被反复提出。感谢您对此问题的新答案。
标签: arrays google-apps-script multidimensional-array google-sheets