读取大型数据必备方法!

写入数据

先在表格内写入 100 万个单元格的数据。

function myFunction () {
  const arr = new Array(100000).fill(['test'])
  SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange(1, 1, arr.length, 1).setValues(arr)
}

性能测试

然后来测试一下三种不同的方式获取数据的耗时。

function myFunction () {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]

  console.time('getValues')
  sheet.getRange('A:A').getValues()
  console.timeEnd('getValues')

  console.time('getDisplayValues')
  sheet.getRange('A:A').getDisplayValues()
  console.timeEnd('getDisplayValues')

  console.time('sheet API')
  const sheetID = SpreadsheetApp.getActiveSpreadsheet().getId()
  Sheets.Spreadsheets.Values.get(sheetID, 'test!A:A').values
  console.timeEnd('sheet API')
}


从测试结果可以看出 getDisplayValues 运行的速度最慢,getValues 会稍微快一点点,但是使用 Sheet API 的方法获取数据,速度要快很多。

使用方法

先添加 Google Sheets API 服务

然后使用以下代码

Sheets.Spreadsheets.Values.get(sheetID, 'test!A:A').values

sheetID 是当前表格的 ID,然后后面的参数是表格的名称和范围,写法有点类似于 IMPORTRANGE 函数。