Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 范围高度不正确-Google脚本_Google Apps Script - Fatal编程技术网

Google apps script 范围高度不正确-Google脚本

Google apps script 范围高度不正确-Google脚本,google-apps-script,Google Apps Script,我正在尝试创建一个GoogleSheet脚本,该脚本将获取一个姓名列表并将其重新发送到GoogleSheet。我有两列数据,第一列包含人名。第二列包含第一个单元格中的人邀请参加聚会的多个单元格。这就产生了一个问题,第1列中的名字可能在第2行,但是如果他们邀请了20个人,那么第1列在第3-21行有空格。现在对你们大多数人来说,这听起来可能毫无意义,但我希望能够按照邀请人姓名的字母顺序对表格进行排序,并能够按照第2栏中客人姓名的字母顺序将其排序到单独的表格中,同时仍然跟踪邀请他们的人。这是我能想到的

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

目前,我一直在将数组写回工作表,我不断得到“不正确的范围高度,是1,但应该是339。”我已经找到了如何成功获得一个数据数组,完全按照我想要的方式填充,但似乎无法获得此部分。我在这里搜索并尝试实施我找到的解决方案,但没有成功

这是我到目前为止提出的,它一直工作到设置值(

function-inviter-sorter(){
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(范围数据);
var info=rangeData.getValues();
var Name={};
//检查第一列中的单元格,如果为空,则将其替换为上一个单元格中的名称。
对于(变量i=0;i对于(var i=0;i您期望的值应该是一个2D数组,一列多行。使用
data.push(Name[i]);
时得到的是一个简单的字符串数组

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


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

希望这有帮助。也许最后一行应该是writeRange.setValues(data)但是从你正在学习编程的事情来看,这不是一个获得帮助的好地方。祝你好运。我承认我对这一切都有基本的了解,但对我能实现我大多数时候想要的东西的概念有足够的把握。我通常会对我看不到正确方向的事情感到困扰。我知道我需要这样做“转置"我将数组转换为列格式,但我没有看到明显的解决方案。我的原始代码是您的建议,我得到了一个对象到数组的错误。我的代码本来可以工作,除非我尝试将一行数据写入列中。就像我说的,我得到了概念,只是挂了几次电话。不过感谢您的建议。如果没有,很抱歉我有一个关于调试的基本规则。收集更多信息:所以…添加日志,使用调试器,更改代码,修改一个工作示例。但是,我的代码太多了,总是由于缺乏信息造成的……很高兴你找到了问题的根源。我知道我一直都在做什么,但我没看到怎么做,谢谢!
 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]);