范围高度不正确 - Google Script

时间:2014-03-04 00:49:45

标签: google-apps-script

我正在尝试创建一个Google工作表脚本,该脚本将获取名称列表并将其重新发送到Google表格。我有两列数据,第一列包含人名。第二列包含第一个单元格中的人邀请参加聚会的多个单元格。这会产生问题,第1列中的名称可能位于第2行,但如果它们邀请20个人,则第1列的空白行第3-21行。对大多数人来说,现在听起来可能毫无意义,但我希望能够按照邀请人的姓名按字母顺序对表单进行排序,并能够按照客人姓名的字母顺序将其排序为单独的表格在第2列中,同时仍然保留邀请他们的人。这是我能想到完成任务的唯一方法。

我目前仍然坚持将数组写回工作表,我不断得到“不正确的范围高度,是1,但应该是339.”我已经想出如何成功获取数据数据,填写我想要的数据,但似乎无法得到这一部分。我在这里搜索并试图实现我找到的解决方案,但没有运气。

这是我到目前为止所提出的,它一直运行到setValues(

 function inviteSorter() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var current = sheet.getSheets()[0];
  var lastRow = current.getLastRow();
  var rangeData = current.getRange(2,1,lastRow-1,3);
  var numColumns = rangeData.getNumColumns();
//  Logger.log(rangeData);
  var info = rangeData.getValues();
  var Name = {};
//  Examines the cell in the first column, if it is empty replaces it with the name from the previous cell.
  for ( var i = 0; i< info.length; i++){
    if (typeof(info[i][0]) == "string" && info[i][0] == ""){
      Name[i] = Name[i-1];
    } else{
    Name[i] = info[i][0];
    }

  }
  var data = []
  for (var i = 0; i<lastRow-1; i++){
    data.push(Name[i]);
  }

  var writeRange = current.getRange(2,1,data.length,1);

  writeRange.setValues([data]);

1 个答案:

答案 0 :(得分:7)

您期望的值应该是2D数组,1列多行。使用data.push(Name[i]);时得到的是一个简单的字符串数组。

尝试这种方式:data.push([Name[i]]);这将返回一个数组数组,并应满足setValues(data)

的条件

(不要忘记删除上一个setValues语句中的括号)