[DAY 15] getValues 与 setValues

上一次说到了getRangegetDataRange
但是这只是「取得资料的位置与范围」
如果要「读取」或是「写入」就要使用今天讲的 get 与 set


getValuegetValues
从名字上就可以看出一个是单数,另一个在讲复数个值
当取得Range 范围後就可以使用这个方法

假设资料表格如下

index 栏A 栏B 栏C
1 1 2 3
2 3 5
3 4
var ss = SpreadSheetApp.getActiveSheet(); \\ 使用当前试算表(spread sheet)启动中的分页(sheet)
var range1 = ss.getRange('A2');    \\ 取得 A2 储存格
var range2 = ss.getRange('A1:C3'); \\ 取得 A1~C3 的矩形范围

Logger.log(range1.getValue());    \\ 结果:''
Logger.log(range1.getValues());   \\ 结果:[['']]

Logger.log(range2.getValue());   \\ 结果:1
Logger.log(range2.getValues());   \\ 结果:[[1,2,3],['',3,5],[4,'','']]

可以看到 getValues 会回传一个二阶列表
以先写列再写行的方式回传值
而直接使用 getValue 时,则是直接回传该值
若对一个矩形范围使用getValue,回传左上角的值

如果有合并储存格
则最左上角的值视为被合并的内容
其余为空值


先了解getValues 有助於了解如何使用setValues
由於getValues 回传二阶列表
故在写入时也应使用二阶列表

ss.getRange('A2').setValue(3)  // A2 的储存格中写入3
ss.getRange('A1:C1').setValues([[1,2,3]])     // A1 写入 1, B1 写入 2, C1 写入3
ss.getRange('B2:B4').setValues([[1],[2],[3]]) // B2 写入 1, B3 写入 2, B4 写入3

如果自己在尝试使用setValues 时报错
通常都是因为列表问题和范围问题
列表问题是指,可能没有写成二阶列表

范围问题是指
可能以栏为单位写入,应写成[[v1], [v2], [v3], ...] 却输入成 [[v1, v2, v3, ...]]
或是数量不符,如:'A1:C5'应输入5列3栏的列表,却写成6列或4栏 导致


有了getRangegetValuessetValues
就可以读取题库取得题目(getRange, getValues)
并选择题目呈现页面写入题目(getRange, setValues)
这样就可以完成题库的选题

下一次再来说说如何随机挑题吧~


<<:  [Day11] 介面篇 - 显示血条

>>:  Day 06 - FOREIGN KEY 实际把键连起来!

javascript函式教学1

1.函式基础 我们经常使用alert();这可以叫出一个警告视窗,alert就是一个系统预先写好的程...

【Day 30】完赛 --- 30天搞懂机器学习真的搞错了什麽

完赛心得 本来以为自己没办法完赛,却在不知不觉中结束了这30天的挑战,虽然一开始就觉得要在30天搞懂...

Day 7:How do you turn this on? KMM是如何做到的?

Keyword: KMM shared module, Expect/Actual 今天我们来看看范...

【Day2】声音的一些基本介绍

声音这东西实在是太自然了,所以我们很少去思考这东西的本质到底是什麽 简单的来复习一下声音是什麽,你...

JavaScript Day24 - Promise(1)

ES6:Promise Promise:代表一个即将成功或失败的非同步操作 会有这几状态: 搁置 (...