Google 試算表 (4) - 寫入資料到儲存格
前面我們已經試過從 Google 試算表讀取資料,現在要來把資料寫入試算表,如此一來,在沒有資料庫的輔助下,就可以把試算表當作簡單的資料庫使用,也更大大提升了試算表的能力。
認識 getRange()
在 Google 試算表 (2) - 讀取儲存格數值 這篇文章裡有稍微提到了.getRange()
這個方法,如果我們要寫入資料到儲存格裡,最主要會使用.getRange()
來取得要寫入的儲存格或一個範圍內的所有儲存格,用法有下列幾種:
參考資料:getRange
getRange(row, column)
預設包含 row 和 column 兩個參數,結果得出來的 range 就會指向 row 和 column 數字對應的單一儲存格。
var SpreadSheet = SpreadsheetApp.openByUrl('試算表網址'); var SheetName = SpreadSheet.getSheetByName('工作表名稱'); var range = SheetName.getRange(1,3); // 指向 C1
getRange(row, column, numRows)
除了 row 和 column,也可以增加第三個參數,代表 row 的延伸範圍,舉例來說若第一個參數 row 是 3,numRows 為 5,那麼儲存格就是從第三列到第八列。
var SpreadSheet = SpreadsheetApp.openByUrl('試算表網址'); var SheetName = SpreadSheet.getSheetByName('工作表名稱'); var range = SheetName.getRange(3,3,5); // 指向 C3:C8
getRange(row, column, numRows, numColumns)
如果今天四個參數全用上,表示的就是一整個範圍的儲存格。
var SpreadSheet = SpreadsheetApp.openByUrl('試算表網址'); var SheetName = SpreadSheet.getSheetByName('工作表名稱'); var range = SheetName.getRange(3,3,5,2); // 指向 C3:D8
getRange(a1Notation)
除了透過數字來表示外,
getRange
更可以直接指定工作表名稱、儲存格的名稱,某些情況下就不用去思考 A 對應 1、B 對應 2 這種關聯性。var SpreadSheet = SpreadsheetApp.openByUrl('試算表網址'); var SheetName = SpreadSheet.getSheetByName('工作表名稱'); var range = SheetName.getRange('A2:C4');
工作表的名字也可以直接寫在裡頭,使用驚嘆號
!
區隔,注意寫在裡面的話工作表變數 SheetName 要換成試算表變數 SpreadSheet。var SpreadSheet = SpreadsheetApp.openByUrl('試算表網址'); var range = SpreadSheet.getRange('工作表名稱!A2:C4'); //要加!
如果是單一儲存格也是可以。
var SpreadSheet = SpreadsheetApp.openByUrl('試算表網址'); var range = SpreadSheet.getRange('工作表名稱!A1');
使用 setValue()、setValues() 寫入資料
已經知道如何抓到某個儲存格或是某個範圍的儲存格之後,就要來把一些數值寫入儲存格,寫入的方法將會使用setValue()
和setValues()
來實現,從英文的字面意思可以看出,結尾沒有 s 的只能存入「一筆」資料,有 s 的則可以用陣列存入多筆資料。
對於
getValue()
和getValues()
也是相同的概念,沒有 s 的只能取出一個儲存格的資料,有 s 的則是取出一個二維陣列的資料。
setValue()
儲存一筆數值到一個儲存格內,如果這筆數值是個陣列,則是存入陣列的第一個數值。
var SpreadSheet = SpreadsheetApp.openByUrl('試算表網址'); var range = SpreadSheet.getRange('工作表名稱!A1'); range.setValue(123);
setValues()
儲存一個二維陣列數值到一個範圍的儲存格內,陣列第外層是 Row,內層是 Column。
var SpreadSheet = SpreadsheetApp.openByUrl('試算表網址'); var range = SpreadSheet.getRange('工作表名稱!A1:C3'); range.setValues([[1,2,3],[11,22,33],[111,222,333]]);
小結
到這邊差不多就已經完成了寫入資料到儲存格的步驟,更進一步其實可以撰寫一個 debug.gs 來測試,下一篇將會介紹如何插入列或是插入欄,這樣就更能發揮試算表的功能囉!