如何使用 AppendRow

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”是未指定的,并且在一次情况下,而不是复制的数据,我得到了所有电子表格都填充了“指定的”字符串或其他乱码。

这段代码不必是最优的,我会在达到全部功能后研究它。先感谢您。

The*_*ter 5

AppendRow需要单行(数组)数据或一维数组。


使用 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)
Sheet2A1:
=SORT(Sheet1!A1:E50,ROW(A1:A50),0)
Run Code Online (Sandbox Code Playgroud)

这将排序 Sheet1A1:E50 从下到上(没有任何实际排序)。


[Array.reverse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)
var unsortedRng = unsorted_sheet.getRange(1,1,unsorted_length, unsorted_width);
var unsortedVal = unsortedRng.getValues();
unsortedVal.reverse();
unsortedRng.setValues(unsortedVal);