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
相关产品推荐
相关产品推荐

