You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GAS获取电子表格指定列的行数据?

使用Google Apps Script获取电子表格指定列的行数据

你当前代码里rangeList.getRanges()返回的是Range对象数组,并非单元格的实际值,所以日志只会显示[Range, Range]。要获取指定列的每行具体值,需要对每个Range调用getValues()方法提取数据,再将对应行的数据合并。

修改后的代码如下:

function getAllData() {
  var sheetId = '你的电子表格ID';
  var ss = SpreadsheetApp.openById(sheetId); // 用表格ID打开比URL更稳定,若要用URL请传入完整链接
  var sheet = ss.getSheetByName("Data");
  
  // 指定要获取的列范围
  var rangeList = sheet.getRangeList(['A:B', 'E:F']);
  // 获取所有Range对象
  var ranges = rangeList.getRanges();
  
  // 提取每个Range的二维数组值
  var rangeValues = ranges.map(range => range.getValues());
  
  // 合并对应行的数据,确保每行的A/B/E/F列值在同一数组中
  var mergedData = [];
  // 取两个范围的最大行数,避免某列数据行数不足的问题
  var maxRows = Math.max(rangeValues[0].length, rangeValues[1].length);
  
  for (let i = 0; i < maxRows; i++) {
    // 若当前行无数据则用空数组填充
    var rowAB = rangeValues[0][i] || [];
    var rowEF = rangeValues[1][i] || [];
    // 合并为一行数据
    mergedData.push([...rowAB, ...rowEF]);
  }
  
  Logger.log(mergedData);
  return mergedData;
}

关键说明:

  • getValues()方法会返回Range对应的二维数组,外层数组代表行,内层数组代表每行的单元格值
  • 因为A:B和E:F是两个独立的Range,需要遍历每行将对应位置的数据合并,保证最终每行包含A、B、E、F列的所有值
  • 若使用openByUrl,需传入完整的电子表格URL(例如https://docs.google.com/spreadsheets/d/xxx/edit),而不是仅表格ID,推荐用openById更简洁可靠

内容的提问来源于stack exchange,提问作者Sathya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:50:47