Google App Script 之 SpreadsheetApp
Google App Script 中的 SpreadsheetApp 服务可以读取、创建、修改 Google Sheet。
例如下方代码,SpreadsheetApp.getActiveSpreadsheet()
方法得到当前表格文件对象(Spreadsheet),currentSpreadsheet.getActiveSheet()
方法得到当前工作表对象(Sheet),currentSheet.getCurrentCell()
得到当前活动单元格对象(Range),再通过单元格对象的getValue
方法获取到活动单元格的值。
function logCurrent() {
let currentSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
let currentSheet = currentSpreadsheet.getActiveSheet();
let currentRange = currentSheet.getCurrentCell();
console.log(currentRange.getValue());
}
由小到大,可以把 Google Sheet 分为 Range、RangeList、Sheet、Spreadsheet。
Range
Range 是 Google Sheet 里的最小元素,表示单元格的区域,可以是一个单元格或者是一组单元格。
当是一个单元格时可以用getValue()
方法获取单元格显示的值,返回字符串;当是一组单元格则需要用getValues()
来获取值,返回一个二维数组,第一层为行,第二层为列。
如下图,data
最终的值为[[1,2],[3,4]]
function logData() {
let sheet = SpreadsheetApp.getActiveSheet();
let range = sheet.getDataRange()
let data = range.getValues();
console.log(data);
}
Sheet
Sheet 即表格,表格由单元格组成,也可以说是由 Range 组成。
上图中的sheet.getDataRange()
方法获取了一个单元格区域,区域的左上角为 A1,区域的右下角为最后一个有数据的单元格。
如果表格数据如下图,那么将获取到四行三列的区域,data
值就为[[1,2,''],[3, 4,''],['','',''], ['','',5]]
Spreadsheet
Spreadsheet 为 Google Sheet 文件对象,使用SpreadsheetApp.getActiveSpreadsheet()
可获取当前活动的 Spreadsheet。
如下代码,ss.getUrl()
获取文件的 URL,例如https://docs.google.com/spreadsheets/d/abc1234567/edit#gid=0
,ss.getId()
获取文件的 ID,也就是URL中的“abc1234567”部分,ss.getName()
获取文件名,
let ss = SpreadsheetApp.getActiveSpreadsheet();
cosole.log(ss.getUrl());
cosole.log(ss.getId());
cosole.log(ss.getName());
“getActiveXXX”方法
由于当前对象是唯一的,所以在 SpreadSheetApp、SpreadSheet、Sheet 对象中都有类似的方法,且结果都是一样,如下表格总结了相关方法:
| 方法 | 作用 | SpreadsheetApp | Spreadsheet | Sheet |
|———————-|———————-|:————-:|:———–:|:—–:|
| getActiveSpreadsheet | 获取当前 Spreadsheet | √ | | |
| getActive | 获取当前 Spreadsheet | √ | | |
| getActiveSheet | 获取当前 Sheet | √ | √ | |
| getActiveRangeList | 获取当前 RangeList | √ | √ | √ |
| getActiveRange | 获取当前 Range | √ | √ | √ |
| getActiveCell | 获取当前单元格 | √ | √ | √ |
| getCurrentCell | 获取当前单元格 | | √ | √ |
标签:Google, JavaScript