使用 setValues 函数的问题

2023-12-26

我在使用时不断收到错误消息setValues()函数将数组导出到 Google 表格。我尝试了许多不同的方法来创建二维数组,但仍然不断收到相同的错误。有时我的代码会运行(数组将导出到电子表格),但我仍然会收到错误。

我最初使用的是setValue()函数在 for 循环中,但代码会因为运行时间太长而超时。因此,我尝试将所有数据转储到二维数组中,然后将其一次性输入到电子表格中。

尝试将数组创建为空的二维数组

  var outputArray = [[]]

并使用.push将数据填充到其中

尝试使用以下函数创建空数组:

function create2DArray(rows) {
  var arr = [];

  for (var i=0;i<rows;i++) {
     arr[i] = [];
  }

  return arr;
}

并按行添加数据(在按 rowNumber 迭代的 for 循环内部)

outputArray[rowNumber] = [data1, data2, data3,...]

使用上面相同的函数创建空数组并创建中间数组,然后将其放入输出数组中

outputArrayIntermediate[0] = data1;
outputArrayIntermediate[1] = data2;
outputArrayIntermediate[2] = data3;
outputArrayIntermediate[3] = data4;...

outputArray[rowNumber] = outputArrayIntermediate;

这是错误不断发生的地方

var setRows = outputArray.length;
 var setColumns = outputArray[0].length

  revenueSheet.getRange(2,1,setRows,setColumns).setValues(outputArray);

当我包含 setColumns 变量时,出现错误: “数据中的列数与范围中的列数不匹配。数据为 0,但范围为 11。” 这仍会将数据填充到电子表格中。

当我不包含 setColumns 变量时,我收到错误: “数据中的列数与范围中的列数不匹配。数据有 11,但范围有 1。”


是否存在某一行比另一行拥有更多列的情况?例如,如果数据中的“行”1 为 5 列(outputArray.length= 5) 并且第 2 行有 6,那么数据需要具有 6 列的范围。

如果是这种情况,这里有一些解决方案为了简单起见:

1.如果您插入数据的位置右侧没有重要数据,您可以使用revenueSheet.getMaxColumns()在你的.getRange().setValues().

2.迭代数据集以找到长度最长的行并将其设置为列数。要执行此操作,请参阅这个答案 https://stackoverflow.com/a/33577421/1691677一些选项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 setValues 函数的问题 的相关文章

随机推荐