Я пытаюсь составить небольшой график для повторяющихся задач на моем рабочем месте.Чтобы настроить это, я перебираю свои данные, чтобы найти значение «Ежеквартально» в столбце 2 и «Повторяющееся» в столбце 3.
Если оно находит эти значения, я помещаю данные строки вмассив.Затем я конкатирую массив несколько раз (для этого я использовал другую функцию, не показанную в приведенном ниже коде) на основе 4-го значения в массиве с именем timesrecurring.
Наконец, я копирую массив на другой лист, используя .setvalues ().Код ниже:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Input Table");
var targetsheet = ss.getSheetByName("Summary Calendar");
var lastrow = sheet.getLastRow();
var datarange = sheet.getRange(8, 2, lastrow-1 , 10).getValues();
var x = [];
for(i=0; i<datarange.length; i++){
if (datarange[i][1] == "Recurring" && datarange[i][2] == "Quarterly" ){
x.push([datarange[i][0],datarange[i][1],datarange[i][2],datarange[i]
[3],datarange[i][4],datarange[i][7],datarange[i][8],datarange[i]
[9],datarange[i][5],datarange[i][6])
var timesrecurring = datarange[i][3]
var y = replicateArray(x,timesrecurring)
targetsheet.getRange(targetsheet.getLastRow()+1, 2,
y.length,y[0].length).setValues(y);
}
}
}
Как вы можете видеть здесь, я ищу строки с "Quarterly" и "Recurring" и вставляю соответствующие строки в массив.Затем я объединяю массив, основываясь на значении timesrecurring.
Сценарий работает хорошо, если в исходной области данных, к которой я применил цикл for, есть только одна строка с «ежеквартально» и «периодически».Однако, как только я добавляю вторую строку, происходит следующее:
Предполагается, что будет 6 строк с отчетом FTE по первому столбцу и 3 строки с Ad-hoc.Однако сценарий сначала копирует отчеты FTE из исходных данных 6 раз, а затем - отчеты FTE и Ad-hoc 3 раза (хотя предполагалось, что это будет только 3 раза).Похоже, что во второй раз он хранит как строку для отчетов FTE, так и Ad-hoc в массиве, а не только строку Ad-hoc.
Я попробовал пару вещей, чтобы обойти эту проблему, и посмотрел в Интернете, но я не смог найти ничего, что сработало.Любая помощь будет оценена.