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]]
spreadsheetapp1.JPG

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]]
spreadsheetapp2.JPG

Spreadsheet

Spreadsheet 为 Google Sheet 文件对象,使用SpreadsheetApp.getActiveSpreadsheet()可获取当前活动的 Spreadsheet。
如下代码,ss.getUrl()获取文件的 URL,例如https://docs.google.com/spreadsheets/d/abc1234567/edit#gid=0ss.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 | 获取当前单元格 | | √ | √ |

标签:,