如何在Apps Script中为数组指定索引设置值?(Google Sheets开发)
问题分析与修正方案
你的代码报错核心原因是把Range对象当成数组直接索引——resources是Range实例,不是数组,所以resources[i][0]会触发undefined错误。另外,循环里重复调用getValues()会频繁和服务器交互,既低效又容易出问题。
修正后的代码
function longRest() { var mainSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main"); // 一次性读取F36:G44的所有值到二维数组 var values = mainSheet.getRange('F36:G44').getValues(); // 遍历每一行数据 for (var i = 0; i < values.length; i++) { // 检查G列对应行(数组索引[i][1])的值是否非空 if (values[i][1] !== "") { // 将G列的值赋值给F列对应行(数组索引[i][0]) values[i][0] = values[i][1]; } } // 将修改后的数组一次性写回原单元格区域 mainSheet.getRange('F36:G44').setValues(values); }
关键说明
- 先读再改再写:通过
getValues()把单元格数据读进内存数组,修改数组后用setValues()一次性写回,减少服务器交互次数,提升性能。 - 数组索引对应关系:
values[i][0]对应F列第i+36行,values[i][1]对应G列第i+36行(数组从0开始计数)。 - 严格判空:用
!== ""代替!= "",避免把null或其他空值误判为有效内容。
内容的提问来源于stack exchange,提问作者Isaac Marcus
相关产品推荐
相关产品推荐

