Google 表格脚本:单元格基础

发布时间:2023-05-06 15:00

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()来获取值,返回一个二维数组,第一层为行,第二层为列。

如下图,data最终的值为[[1,2],[3,4]]
image.png

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]]
Google 表格脚本:单元格基础_第1张图片

表格文件 Spreadsheet

Spreadsheet 为 Google 表格文件对象,使用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 获取当前单元格

获取、修改任意单元格值

let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheets()[0];
let cell = sheet.getRange("B2");
cell.setValue(100);

参考文档

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号