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

Google Script/JavaScript中如何将数据填入二维数组及报错处理

问题原因
  • 你初始化的二维数组var array=[[],[]]仅包含2个空的子数组元素,对应索引是0和1
  • 循环变量i从1开始一直到5,当i >= 2时,array[i]本身就是未定义的undefined,直接对array[i][0]赋值就会触发Cannot set property '0' of undefined报错
  • 原写法即使修复赋值逻辑,数组的索引0也会是空值,不符合你要求的从第一个元素开始就是[name,result]的需求
修复方案

推荐直接用数组push方法,写法更简洁也不会出现索引错位问题:

function one(){  
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sheet = ss.getSheetByName("123aaa");  
  var num_of_samples = 5;  
  var array = []; // 初始化为空数组即可
  for(i=1; i <= num_of_samples; i++){  
    var name = sheet.getRange(2*i+6,2).getValue();  
    var result = sheet.getRange(2*i+7,2).getValue();
    // 直接把新生成的子数组压入大数组
    array.push([name, result]);
  }  
  Logger.log(array);
}

如果要保留索引赋值的写法,需要提前给对应位置的子数组做初始化:

function one(){  
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sheet = ss.getSheetByName("123aaa");  
  var num_of_samples = 5;  
  var array = [];
  for(i=1; i <= num_of_samples; i++){  
    var name = sheet.getRange(2*i+6,2).getValue();  
    var result = sheet.getRange(2*i+7,2).getValue();
    array[i-1] = []; // 先初始化当前索引对应的子数组,用i-1是让数组索引从0开始连续
    array[i-1][0] = name;
    array[i-1][1] = result;
  }  
  Logger.log(array);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 02:30:03