Как вставить две строки для каждых трех строк числа в листе Google, используя скрипт приложения - PullRequest
0 голосов
/ 04 июня 2018

изображение примера добавления строк

Как показано на рисунке, в столбце A 11 строк чисел, я хочу добавить в него строки и сделать так, чтобы они отображались в виде чисел встолбец D

Вы видите для каждых 3 строк числа в A, я хочу добавить новую строку вверх и вниз, новую строку в верхней части со значением "0", а нижнюю строку ссумма значений этих трех строк чисел, например, первые три строки равны 1,2,3, а их сумма равна «1 + 2 + 3 = 6», вторые три строки равны 4,5,6, а сумма равна «4 + 5 + 6 = 15 ", третьи три строки - 7,8,9, а сумма" 7 + 8 + 9 = 24 ", как показано на рисунке, и вы видите, что последняя часть столбца -" 10 и 12 ", которые представляют собой две строки (меньше трех строк), но в этом случае все равно необходимо добавить две новые строки, одну строку сверху с «0» и одну строку снизу с его суммой «10 + 12 = 22»

Прямо сейчас я написал две функции цикла для вставки строк

function insertRows() {
         var ss = SpreadsheetApp.getActiveSpreadsheet();
         var sheet = ss.getSheetByName("sheet1");

         var numRows = SpreadsheetApp.getActiveSpreadsheet().getSheetByName ("sheet1").getLastRow();

         for (var i=1; i <= numRows+2; i+=4) {
              var addrow = sheet.insertRowsBefore(i,1);
              }

         }

  function insertRows2() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getSheetByName("sheet1");

        var numRows = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1").getLastRow();

           for (var j=4; j <= numRows+2; j+=5) {
                var rowadd= sheet.insertRowsAfter(j,1)
                }
     }

"insertRows ()" используется для вставки строки заголовка, "insertRows2 ()" используется для вставки thВ нижней строке, пока эти две функции работают хорошо, чтобы вставить строки в нужном месте, но я не знаю, как заполнить верхние строки с "0" в цикле и как заполнить значение суммы каждоготри ряда чисел в нижних рядах.

Ребята, вы знаете, как заполнить строки правильными значениями?

1 Ответ

0 голосов
/ 05 июня 2018

Как насчет этого примера сценария?Я думаю, что есть несколько ответов для вашей ситуации.Поэтому, пожалуйста, подумайте об этом как об одном из них.

Поток:

  1. Получить значения из «A1: A11» листа 1.
  2. Используя полученные значения, онсоздает массив для результата.
    • Сначала он разделяет значения, в то время как вставляет 0 в верхнюю часть и сумму конца.
    • В качестве важного момента массив создается для размещения электронной таблицы как 2размерный массив.
  3. Поместить значения результата в «D1: 19» листа 1.

Пример сценария:

function insertRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("sheet1");
  var value = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues().filter(Number);
  var result = [];
  var temp = [[0]];
  var sum = 0;
  for (var i = 0; i < value.length; i++) {
    temp.push(value[i]);
    sum += value[i][0];
    if ((i + 1) % 3 == 0 || i == value.length - 1) {
      temp.push([sum]);
      result = result.concat(temp);
      temp = [[0]];
      sum = 0;
    }    
  }
  sheet.getRange(1, 4, result.length, 1).setValues(result);
}

Примечание:

  • При запуске этого примера сценария изменяется последняя строка листа.Поэтому я использовал от filter() до var value = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues().

Если это не то, что вы хотите, пожалуйста, сообщите мне.Я хотел бы изменить свой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...