Google Sheets Script中如何将单元格范围存储到数组变量?
可以实现,你之前的写法问题出在对Google Apps Script的Range对象的用法理解有误。
getRange()方法返回的是Range类实例,仅代表表格中对应的单元格范围,不包含单元格的实际数值。你需要额外调用getValues()方法才能拿到对应格式的二维数组。
正确实现步骤
- 读取范围值到数组
你需要在getRange()后链式调用getValues(),建议补全getRange()的第四个参数(列数)避免歧义,示例代码如下:
// 先明确获取要操作的工作表,避免作用域问题 var sheet = ss.getActiveSheet(); // getRange参数依次为:起始行号、起始列号、读取行数、读取列数,getValues()返回二维值数组 var color = sheet.getRange(2, 2, 3, 1).getValues(); // 此时color的结构就是你需要的 [["red"],["green"],["pink"]]
- 从数组中取值写入单元格
因为getValues()返回的是二维数组,第一维对应行、第二维对应列,所以取值时需要加第二维的索引,示例如下:
// array_count从0开始计数,0对应第一行的red,1对应第二行的green,以此类推 ss.getRange(count, 2).setValue(color[array_count][0]);
额外注意事项
- 数组索引从0开始计数,和Google Sheets的行/列号从1开始计数的规则不同,操作时要注意索引对应
- 如果需要把整个数组一次性写入对应尺寸的单元格范围,可以直接调用
setValues()方法,要求传入的二维数组尺寸和目标Range的行数、列数完全匹配 getValues()会自动匹配单元格的值类型,数字、日期、布尔值都会自动转为对应的JavaScript数据类型
内容的提问来源于stack exchange,提问作者itsover9000
相关产品推荐
相关产品推荐

