我正在尝试创建一个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]);
答案 0 :(得分:7)
您期望的值应该是2D数组,1列多行。使用data.push(Name[i]);
时得到的是一个简单的字符串数组。
尝试这种方式:data.push([Name[i]]);
这将返回一个数组数组,并应满足setValues(data)
(不要忘记删除上一个setValues语句中的括号)