Повторяющиеся строки в электронной таблице Google на основе значения одной ячейки - PullRequest
1 голос
/ 21 октября 2019

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

Например:

ячейка L10 содержит значение 45 Строка 23 содержит разные значения (список значений, формулы, vlookup и т. д.), и я хотел бы повторить эту строку, запустив все формулы 44 раза чуть выше первой, поэтому 45 строк от 23 до 67 строки.

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

введите описание изображения здесь

1 Ответ

0 голосов
/ 22 октября 2019

Я создал образец листа на моей стороне, который выглядит следующим образом:

my sample sheet

Затем я создал следующий скрипт:

function insertXRows() {
  var sheets = SpreadsheetApp.getActiveSheet();
  var count = sheets.getRange(3,6).getValue(); //F3
  Logger.log(count);

  //Get my to be copied line
  var copyLine = sheets.getRange(9,2,1,7); //Fix these values depending on your row that you want to copy.
  while(count>0) {
    Logger.log(count);
    //Get last line of my data
    var lastRow = sheets.getDataRange().getValues().length;

    var newRow = sheets.getRange(lastRow+1, 2, 1, 7); //Fix these values depending on your row that you want to copy.
    for (var i = 0; i<copyLine.getValues()[0].length; i++) {
      if (copyLine.getFormulas()[0][i]!="") { //Check formulas first
        sheets.getRange(newRow.getRow(), newRow.getColumn()+i).setFormula(copyLine.getFormulas()[0][i]);
      } else if (copyLine.getValues()[0][i]!="") {
        sheets.getRange(newRow.getRow(), newRow.getColumn()+i).setValue(copyLine.getValues()[0][i]);
      }
    }
    count--;
  }
}

Надеюсь, это поможет!

...