Google Sheets向最后一行粘贴数组报错及AppendRow失效问题求助
问题修复方案
1. getRange报错的原因及修复
你用sheet.getRange(myA, myZ)的写法错了——getRange如果传两个参数,要求的是整数类型的行号和列号,但你传的是"A3"、"L3"这种字符串格式的单元格地址,所以才会报"无法转换为int"的错误。
两种正确写法:
- 直接传A1格式的范围字符串:把起始和结束单元格用冒号连起来,作为单个参数传入
sheet.getRange(`${myA}:${myZ}`).setValues(stData);
- 用行、列、行数、列数的参数组合:从目标行开始,第1列(A列),取1行,12列(到L列)
sheet.getRange(lastRow, 1, 1, 12).setValues(stData);
2. appendRow显示异常的原因及修复
你看到的[Ljava.lang.Object;@6ddc861f是二维数组的默认字符串表示,因为appendRow方法要求传入一维数组,但你如果传了stData(这是一个二维数组,格式是[[数据1,数据2,...]]),它就会把整个二维数组当成一个单元格的值,自然显示成这种奇怪的内容。
正确用法是直接传一维数组stStats:
sheet.appendRow(stStats);
完整修复后的代码(两种方式任选其一)
方式一:修复getRange+setValues
function getST() { const playerID = "XXX"; let url = "https://smartytitans.com/api/info/player/"; let sheet = SpreadsheetApp.getActiveSheet(); let request = url + playerID; let response = UrlFetchApp.fetch(request); let data = JSON.parse(response.getContentText()); let stStats = []; stStats.push(data.data.level); stStats.push(data.data.stats.gld); stStats.push(data.data.stats.prest); stStats.push(data.data.stats.invst); stStats.push(data.data.stats.master); stStats.push(data.data.stats.help); stStats.push(data.data.stats.ascendUpg); stStats.push(data.data.stats.bounty); stStats.push(data.data.stats.collection); stStats.push(data.data.cityName); stStats.push(data.data.cityLevel); stStats.push(data.data.rankGld); let stData = []; stData.push(stStats); let lastRow = sheet.getLastRow() + 1; // 修复getRange的写法,用A1格式字符串 sheet.getRange(`A${lastRow}:L${lastRow}`).setValues(stData); }
方式二:用appendRow简化代码(更简洁)
function getST() { const playerID = "XXX"; let url = "https://smartytitans.com/api/info/player/"; let sheet = SpreadsheetApp.getActiveSheet(); let request = url + playerID; let response = UrlFetchApp.fetch(request); let data = JSON.parse(response.getContentText()); let stStats = []; stStats.push(data.data.level); stStats.push(data.data.stats.gld); stStats.push(data.data.stats.prest); stStats.push(data.data.stats.invst); stStats.push(data.data.stats.master); stStats.push(data.data.stats.help); stStats.push(data.data.stats.ascendUpg); stStats.push(data.data.stats.bounty); stStats.push(data.data.stats.collection); stStats.push(data.data.cityName); stStats.push(data.data.cityLevel); stStats.push(data.data.rankGld); // 直接传一维数组给appendRow sheet.appendRow(stStats); }
内容的提问来源于stack exchange,提问作者Areolys
相关产品推荐
相关产品推荐

