我从任何编码(比如5年)中花了相当长的时间,所以现在我回来做一些有趣的代码和我自己的用法,我觉得完全迷失了,特别是我实际上从来没有在电子表格中写过任何宏。所以这对我来说是一个挑战,特别是我还没有参加任何课程。
这次我正在研究AppendRow功能。我的部分代码只需要反转一张纸的行顺序并将其粘贴到另一张纸上。排序在这种特殊情况下不起作用,我只能使用CopyTo从第一个底部开始,然后从第二个顶部复制它。相反,我想在第二张表格中使用AppendRow,从第一张表格的底行开始。
这是我的问题。我如何使用AppendRow复制内容。我正在寻找几个小时,只找到了一种方法来使用硬编码的追加内容,如:
sheet.appendRow(["a man", "a plan", "panama"]);
我知道appendRow将Object [] []作为参数但我的技能缺乏。我试着这样做:
function SortBankStatement() {
var ss = SpreadsheetApp.getActive();
var unsorted_sheet = ss.getSheetByName("RawAcc1");
var sorted_sheet = ss.getSheetByName("Bank Statement History");
var unsorted_length = unsorted_sheet.getLastRow();
var unsorted_width = unsorted_sheet.getLastColumn();
var unsorted = unsorted_sheet.getRange(1,1,unsorted_length, unsorted_width);
for (var i=unsorted_length;
i>1;
i--) {
sorted_sheet.appendRow(unsorted[i][0]); //don't work
sorted_sheet.appendRow([unsorted[1][i]]); //don't work
sorted_sheet.appendRow([unsorted]); //don't work
sorted_sheet.appendRow([unsorted[i]]); //don't work
sorted_sheet.appendRow(unsorted.getValue(i)); //don't work
sorted_sheet.appendRow(unsorted(please.work)); //surprisingly, don't work
};
};
基本上我不知道如何使用“i”作为源的行指示符来追加Row。不知道应该如何拼写。我得到的是关于appendRow是一个字符串的错误,“1”未指定,并且在一次情况下而不是复制的数据我得到了所有电子表格,其中填充了“我们指定的”字符串或其他乱码。
此代码不一定是最佳的,我将在达到完整功能后对其进行调查。提前谢谢。
答案 0 :(得分:1)
使用getRange()。getValues();范围是一个对象。值是一个数组。循环:for(var i = unsorted_length; i> 1; i--){},第一个索引i = unsorted_length在数组中未定义,i的最后一个数是2.因此,另外,修改循环如下:
function SortBankStatement() {
var ss = SpreadsheetApp.getActive();
var unsorted_sheet = ss.getSheetByName("RawAcc1");
var sorted_sheet = ss.getSheetByName("Bank Statement History");
var unsorted_length = unsorted_sheet.getLastRow();
var unsorted_width = unsorted_sheet.getLastColumn();
var unsorted = unsorted_sheet.getRange(1,1,unsorted_length, unsorted_width).getValues();
for (var i=unsorted_length - 1; i>1; i--) {
sorted_sheet.appendRow(unsorted[i]);
}
}
=SORT(Sheet1!A1:E50,ROW(A1:A50),0)
这将订购Sheet1A1:E50从下到上(没有任何实际排序)。
<小时/> Array.reverse()
var unsortedRng = unsorted_sheet.getRange(1,1,unsorted_length, unsorted_width); var unsortedVal = unsortedRng.getValues(); unsortedVal.reverse(); unsortedRng.setValues(unsortedVal);
答案 1 :(得分:1)
后来,但是如果您在.getValues()
调用之后链接了getRange()
来实际获取值数组,则某些选项将起作用
(如公认的答案一样)