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

Google Apps Script如何生成符合Sheets API返回格式的JSON数据

实现代码及说明

你原代码存在一处语法错误:SpreadsheetApp.getActiveSpreadsheet() 获取的是整个工作簿实例,不能直接调用getSheetName()、getLastColumn()这类工作表级别的方法,需要先获取对应工作表实例。

以下是修改后可以直接输出符合Google Sheets API返回结构的完整代码:

// 工具函数:将数字列号转为Sheets列字母
function columnToLetter(column) {
  let temp, letter = '';
  while (column > 0) {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}

function mySheet(e){
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheetId = ss.getId();
  const bookName = ss.getName();
  // 先获取当前激活的工作表实例
  const sheet = ss.getActiveSheet();
  const sheetName = sheet.getName();
  const maxCol = sheet.getLastColumn();
  const maxRow = sheet.getLastRow();
  // 拼接符合规范的range字符串
  const rangeStr = `'${sheetName}'!A1:${columnToLetter(maxCol)}${maxRow}`;
  const values = sheet.getDataRange().getValues();

  // 构造和官方API返回完全一致的结构体
  const apiLikeResult = {
    "majorDimension": "ROWS",
    "range": rangeStr,
    "values": values
  };

  // 输出JSON,你也可以根据需求return这个对象
  Logger.log(JSON.stringify(apiLikeResult));
  return apiLikeResult;
}

结构说明

  • majorDimension字段默认填ROWS,和Google Sheets API默认返回的行优先维度一致,如果你需要列优先可以改为COLUMNS,同时调整getValues的获取逻辑即可
  • range字段用单引号包裹工作表名称,兼容工作表名含空格、特殊字符的场景,结束位置的列标识通过工具函数从数字转为字母,符合Sheets的范围书写规范
  • values字段直接使用getValues()返回的二维数组,和API返回的数据结构完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:12:00