Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

google sheet的app script中getRange 與 getDataRange的差異

內容目錄

google sheet的app script中getRange 與 getDataRange的差異

沒想到會碰到google sheet的app script的需求,哈哈,時常耳聞如果有在使用google sheet的話app script會增加非常多助力,實際寫過還真的如此,類似Excel的巨集,但因為google api整合的很好,所以實際上能做非常多事情,今天就來記錄一下遇到的一些狀況。

如何取資料

使用app script在sheet中大多時間應該會去查找資料,跟資料庫不同,我們必須手刻查找的方式,就是一欄(column)一列(row)的去找,就會使用getRange 與 getDataRange這兩個函式。

getRange

主要功能就是指定資料範圍,可以選用A1標記或是R1C1標記。
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet?hl=zh-tw#getrangea1notation
舉例來說如下,以sheet中的第一欄第一列那格儲存格(cell)來說:

A1標記

getRange('A1')  //(欄位置,列位置) 

R1C1標記

getRange(1,1,1,1)  //(起始列,起始欄,欄數,列數) 

在sheet上方可以看到每欄都有標記像是A~Z
左側則有列數標記1 ~ 1000
以此類推
有幾種範圍指定方式,
1.指定一個儲存格(cell)
就是上述例子,規格就是先欄後列,所以就是getRange('A1'),如果是B20那就是getRange('B20'),用R1C1標記的話就getRange(2,20,1,1),

2.指定範圍
將以上方式拓展成一個區域時的寫法如下,例如A1~C10,也就是會有3欄10列的狀況。

A1標記

getRange('A1:C10')

R1C1標記

getRange(1,1,3,10)

當然你想要指定某欄或某列就要看你的資料長相如何來決定囉。

getDataRange

這個函式會指定這張分頁的所有資料(有資料的範圍),並且回傳所有資料,像是以下

getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())

getRangeList

有個跟getRange很像的getRangeList,則是可以回傳多個範圍內的集合,效果不同。