iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
Software Development

一份考卷不夠你可以出兩份!用 google apps script 出線上考題系列 第 20

[DAY 20] 新增欄位及修改儲存格格式

昨天有提到放入考題資訊時的注意事項
1.答案資訊不能直接往下放
2.放入後的格式須注意是否有改變
所以今天要避開這些放入考題資訊


新增欄、列

經測試,雖不能直接往下放,但往上面放就OK~
因為如果之前沒有新回應,他會從題目列的下一列開始寫入新回應
所以我們要往題目列的上方插入新的列

var ss = SpreadsheetApp.openById(回應試算表ID);
var now_ss = ss.getSheetByName(你的分頁名稱);

now_ss.insertColumnsBefore(1, 2)
now_ss.insertRowsBefore(1, 6)

來解釋一下
insertColumnsBefore(1, 2) 是指在第一欄往前插入2欄
因為自動生成的「時間戳記」必在第一欄
往前生成2欄是因為一欄要寫「自算得分」,另一欄要寫「學生戰力」

insertRowsBefore(1, 6) 是指在第一列往前插入6列
因為題目列必在第一列
會插入6列是因為我有「章節、答案、得分、累計正確人數、累計答對人數、答對率」等6列
你可以依照自己的需求修改


儲存格格式

有的時候我的章節是以1-3-2表示
但是寫入後卻被讀取為2001/3/2
故接下來要說如何寫入在資料時指定格式

例如要在'A1:E1'放入如下資訊
['1-3-1', '1-3-1', '1-3-1', '1-3-2', '1-3-2']

例如要在'A2:E2'放入如下資訊
[3.0, 3.0, 3.0, 5.0, 5.0]

var data1 = ['1-3-1', '1-3-1', '1-3-1', '1-3-2', '1-3-2'];
var data2 = [3.0, 3.0, 3.0, 5.0, 5.0];

ss.getRange('A1:E1').setNumberFormat('@').setValues([data1])
ss.getRange('A2:E2').setNumberFormat('0.0').setValues([data2])

說明一下
.setNumberFormat('@') 表示這些儲存格的格式為「文字」
.setNumberFormat('0.0') 表示這些儲存格的格式為「數字且顯示到小數點後一位」
這樣就可以正確顯示你想要的呈現方式囉~


那目前就已經可以把答案配分都移到這個回應試算表頁面
以後只要開啟這個回應試算表分頁就能看到當下的考試資訊
並且也可以再自己用解答的部分對作答者的回應對答案了

再接下來會介紹一些理論
如:試題反映理論(Item Response Theory, IRT)、真實分數模型(True Score Model)
並說說如何把他代入其中估計學生戰力囉~


上一篇
[DAY 19] 驗算得分的理由及注意事項
下一篇
[DAY 21] 真實分數模型
系列文
一份考卷不夠你可以出兩份!用 google apps script 出線上考題30

尚未有邦友留言

立即登入留言