Google App Script 中使用 SpreadsheetApp 服务来可以读取、创建、修改 Google 表格等操作。
获取、修改活动单元格值
function logCurrent() {
let currentSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let currentSheet = currentSpreadsheet.getActiveSheet();
let currentRange = currentSheet.getCurrentCell();
console.log(currentRange.getValue());
}
SpreadsheetApp.getActiveSpreadsheet()
获取当前表格文件对象(Spreadsheet);currentSpreadsheet.getActiveSheet()
获取当前工作表对象(Sheet);currentSheet.getCurrentCell()
获取当前活动单元格对象(Range);- 再通过单元格对象的
getValue()
或setValue()
方法获取或修改活动单元格的值。
表格中的对象
由小到大,可以把 Google 表格中的对象分为 Range、RangeList、Sheet、Spreadsheet。
单元格 Range
Range 是表格里的最小元素,表示单元格的区域,可以是一个单元格或者是一组单元格。
- 当是一个单元格时可以用
getValue()
方法获取单元格显示的值,返回字符串; - 当是一组单元格时则需要用
getValues()
来获取值,返回一个二维数组,第一层为行,第二层为列。
function logData() {
let sheet = SpreadsheetApp.getActiveSheet();
let range = sheet.getDataRange()
let data = range.getValues();
console.log(data);
}
RangeList
RangeList 是多个 Range 的集合。
工作表 Sheet
Sheet 即表格,表格由单元格组成,即是由 Range 组成。
上面代码中sheet.getDataRange()
方法获取了一个单元格区域,区域的左上角为 A1,区域的右下角为最后一个有数据的单元格。
如果表格数据如下图,那么将获取到四行三列的区域,data值就为[[1,2,''],[3, 4,''],['','',''], ['','',5]]
表格文件 Spreadsheet
Spreadsheet 为 Google 表格文件对象,使用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 | 获取当前单元格 | √ | √ |
获取、修改任意单元格值
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheets()[0];
let cell = sheet.getRange("B2");
cell.setValue(100);
参考文档
- Class SpreadsheetApp:https://developers.google.com...