上一次说到了getRange
与 getDataRange
但是这只是「取得资料的位置与范围」
如果要「读取」或是「写入」就要使用今天讲的 get 与 set
getValue
与 getValues
从名字上就可以看出一个是单数,另一个在讲复数个值
当取得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栏 导致
有了getRange
、getValues
与 setValues
後
就可以读取题库取得题目(getRange, getValues)
并选择题目呈现页面写入题目(getRange, setValues)
这样就可以完成题库的选题
下一次再来说说如何随机挑题吧~
>>: Day 06 - FOREIGN KEY 实际把键连起来!
1.函式基础 我们经常使用alert();这可以叫出一个警告视窗,alert就是一个系统预先写好的程...
完赛心得 本来以为自己没办法完赛,却在不知不觉中结束了这30天的挑战,虽然一开始就觉得要在30天搞懂...
Keyword: KMM shared module, Expect/Actual 今天我们来看看范...
声音这东西实在是太自然了,所以我们很少去思考这东西的本质到底是什麽 简单的来复习一下声音是什麽,你...
ES6:Promise Promise:代表一个即将成功或失败的非同步操作 会有这几状态: 搁置 (...