Szy*_*zak 4 google-sheets google-apps-script
我从任何编码中都休息了很长时间(比如 5 年),所以现在当我回来做一些有趣的代码和我自己的使用时,我感到完全迷失了,尤其是我实际上从未在电子表格中写过任何宏。所以这对我来说是一个挑战,尤其是我还没有参加任何课程。
这次我正在研究 AppendRow 函数。我的部分代码只需要颠倒一张纸的行顺序并将其粘贴到另一张纸中。排序在这种特殊情况下不起作用,我可以只使用 CopyTo 从第一个底部开始并从第二个顶部复制它。相反,我想在第二张纸中使用 AppendRow 从第一张纸的底行开始循环。
这是我的问题。如何使用 AppendRow 复制内容。我搜索了几个小时,只找到了一种使用硬编码 appendrow 内容的方法,例如:
sheet.appendRow(["a man", "a plan", "panama"]);
Run Code Online (Sandbox Code Playgroud)
我知道 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
};
};
Run Code Online (Sandbox Code Playgroud)
基本上我不知道如何使用“i”作为源的行指示符追加行。不知道应该如何拼写。我得到的只是关于 appendRow 是一个字符串的错误,“1”是未指定的,并且在一次情况下,而不是复制的数据,我得到了所有电子表格都填充了“指定的”字符串或其他乱码。
这段代码不必是最优的,我会在达到全部功能后研究它。先感谢您。
使用 getRange().getValues(); 范围是一个对象。值是一个数组。循环 for: 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]);
}
}
Run Code Online (Sandbox Code Playgroud)
=SORT(Sheet1!A1:E50,ROW(A1:A50),0)
Run Code Online (Sandbox Code Playgroud)
这将排序 Sheet1A1:E50 从下到上(没有任何实际排序)。
var unsortedRng = unsorted_sheet.getRange(1,1,unsorted_length, unsorted_width); var unsortedVal = unsortedRng.getValues(); unsortedVal.reverse(); unsortedRng.setValues(unsortedVal);