Как использовать AppendRow - PullRequest
0 голосов
/ 05 мая 2018

Я взял довольно длительный перерыв от любого кодирования (например, 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» в качестве индикатора строки для источника. Не знаю, как это должно быть написано. Все, что я получил, это ошибки о appendRow, являющемся строкой, что «1» не определено, и в одном случае вместо скопированных данных я получил всю электронную таблицу, заполненную «uspecified» строками или другим бредом.

Этот код не обязательно должен быть оптимальным, я рассмотрю его после того, как достигну полной функциональности. Заранее спасибо.

1 Ответ

0 голосов
/ 05 мая 2018

AppendRow ожидает одну строку (массив) данных.

<Ч />

Используйте getRange (). GetValues ​​(); Диапазон это объект. Значения это массив. Цикл для: for (var i = unsorted_length; i> 1; i--) {}, первый индекс i = unsorted_length не определен в массиве, а последнее число i равно 2. Таким образом, также, Modify цикл, как показано ниже:

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]);
    }
}

<ч />
Sheet2A1:

=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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...