Google Sheet脚本问题:如何将变量与数组中各值进行大小比较
Google Sheets脚本问题修正与实现
核心错误点
你用getSheetValues()获取的voltCompareData是二维数组,不是Range对象,所以不能调用getValue()方法——这就是提取voltSample1时出错的原因。getSheetValues()返回的结构是[[值1, 值2, 值3]](对应你取的1行3列数据),需要用数组索引来取值。
修正后的完整代码
function getVoltage() { // 获取用户输入的电压值 var voltReqed = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2").getRange("A1").getValue(); Logger.log("用户输入电压: " + voltReqed); // 从SpecsList表获取第3行第2列开始的1行3列数据,返回二维数组 var voltCompareData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SpecsList").getSheetValues(3, 2, 1, 3); Logger.log("对比数据数组: " + voltCompareData); // 提取数组中第一个对比值(数组索引从0开始,对应表格的第3行第2列) var voltSample1 = voltCompareData[0][0]; Logger.log("第一个对比值: " + voltSample1); // 遍历所有对比值,逐个判断大小关系 var compareValues = voltCompareData[0]; // 取出整行的对比值数组 compareValues.forEach(function(volt) { if (voltReqed > volt) { Logger.log(`${voltReqed} 大于 ${volt}`); } else if (voltReqed < volt) { Logger.log(`${voltReqed} 小于 ${volt}`); } else { Logger.log(`${voltReqed} 等于 ${volt}`); } }); }
关键细节说明
getSheetValues(row, col, numRows, numCols)返回的是二维数组:外层元素对应行,内层元素对应列,索引从0开始(和表格的1起始索引不同)。比如你取的是第3行第2列开始的1行3列,数组结构就是[[单元格(3,2), 单元格(3,3), 单元格(3,4)]]。- 要提取单个值时,用
数组[行索引][列索引],比如第一个值是voltCompareData[0][0],第二个是voltCompareData[0][1]。 - 用
forEach循环可以快速遍历所有对比值,完成大小判断逻辑。
内容的提问来源于stack exchange,提问作者Andrew M
相关产品推荐
相关产品推荐

