首页 > 解决方案 > 如何使用数组设置值并匹配长度

问题描述

我从外部 API 获取数据列表,当我执行 setValues() 时,它会出现错误:

数据中的行数与范围内的行数不匹配。数据有 1 但范围有 365。(第 59 行,文件“Extra_queries”)

我尝试删除设置值上的列长度并更改顺序。

我认为阵列不是很好。我认为这个数组是为列而不是为行设置的?预期范围位于第 3 行第 16 列,直到数据结束。

function getComments(doc){
  var basicMetadata = getDeliveryBasicMetadata()
  var ordersId = doc.getRange("C3:C").getValues();
  var last_row = ordersId.filter(String).length;
  var range = doc.getRange(3,16,last_row,1);
  var comments = [];
  for (var i = 3; i <= last_row; ++i){
    var orderIndex = i-3
    var comment = lookForComments(ordersId[orderIndex],basicMetadata);
    comments.push(comment);
  }
  var setValuesLenght = last_row - 2 //as we start on row 3 to align Last_row with lenght of the comments Array. Now both 365
  doc.getRange(3,16,setValuesLenght,1).setValues([comments]);
}

在这里您可以看到使用注释构建的数组。(很多“”,因为这是一个测试)

在此处输入图像描述

标签: google-apps-script

解决方案


问题:

您的数组是一维的,而不是您期望的二维。既然是这种情况,它将永远只有 1 行长。


解决方案:

doc.getRange(3,16,1,comments.length).setValues([comments]);

推荐阅读