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

Google Script批量写入JSON数据至谷歌表格遇行数不匹配异常求助

解决Google Script批量写入表格的行数不匹配异常

错误原因

你的代码中,myarray已经是符合setValues要求的二维数组(结构为[[列1值, 列2值...], [第二行列值...]]),但调用setValues([myarray])时多嵌套了一层数组,导致数据变成三维结构[[[行1数据], [行2数据]]]。此时数据的行数为1(外层数组的长度),而目标范围IA3:IG11对应9行,因此触发行数不匹配的异常。

修复步骤

  1. 移除多余的数组嵌套:将setValues([myarray])改为setValues(myarray),直接传入已构建好的二维数组。
  2. 补全异常行的空数据:如果循环中捕获到异常,myarray的长度会小于9,写入时仍会报错。需要在catch块中添加对应长度的空数组,保证myarray的行数与目标范围一致。
  3. 简化冗余代码:不需要parti对象,直接构建行数据并push到数组,减少不必要的变量操作。

修正后的完整代码

var myarray = [];
// 循环9行(b从3到11,共9次)
for (var b = 3; b < 12; b++) {
  var cellvalue = sh.getRange('HS' + b).getValue();
  try {
    // 直接构建当前行的一维数组
    var rowData = [
      data[cellvalue]._genes.cls,
      data[cellvalue]._genes.eyes.d.partId,
      data[cellvalue]._genes.ears.d.partId,
      data[cellvalue]._genes.back.d.partId,
      data[cellvalue]._genes.mouth.d.partId,
      data[cellvalue]._genes.horn.d.partId,
      data[cellvalue]._genes.tail.d.partId
    ];
    myarray.push(rowData);
  } catch (e) {
    console.log(e);
    // 异常时插入7列空值,保证行数匹配(目标范围是IA到IG共7列)
    myarray.push(new Array(7).fill(''));
  }
}

// 直接传入myarray,无需额外嵌套
sh.getRange('IA3:IG11').setValues(myarray);

关键说明

  • setValues要求传入的必须是二维数组,外层数组对应行,内层数组对应列,结构必须与目标范围的行列数完全匹配。
  • 目标范围IA3:IG11是9行×7列,因此myarray必须是包含9个一维数组的二维数组,每个一维数组包含7个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:55:09