首页 文章

范围高度不正确 - Google Script

提问于
浏览
2

我正在尝试创建一个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 回答

  • 7

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

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

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

相关问题