У меня есть большой массив со всеми данными из электронной таблицы, из которой я получаю меньшие массивы, содержащие части исходного массива.
Теперь, с каждым шагом предыдущий массив изменяется и становится равным производному массиву дов конце все массивы одинаковы.
Есть идеи, что я делаю неправильно?
(Я не профессионал и все еще в процессе создания сценария, поэтому, пожалуйста, имейте в видуменя по поводу уродливого / неэффективного кода:)
function dataTables() {
/* All spreadsheet data to tables */
var mastersheet = SpreadsheetApp.openById("xyz");
// Data array of whole sheet with values in "Artikelbezeichnung" (field 6)
var completeTable = mastersheet.getSheetByName("Mastersheet").getDataRange().getValues();
completeTable.splice(0,2); // Remove header lines 1 & 2
for ( i = completeTable.length; i > 0 ; i-- ) {
if (completeTable[i-1][6-1] == "") { completeTable.splice(i-1,1); } // Remove lines with empty "Artikelbezeichnung" (field 6) if necessary
}
Logger.log(completeTable); // Log 1
// Indexeded data array of whole sheet
var completeTableIndexed = completeTable;
for ( i = completeTableIndexed.length; i > 0; i-- ) {
completeTableIndexed[i-1].unshift(i+2);
}
Logger.log(completeTableIndexed); // Log 2
Logger.log(completeTable);
// Data array of all lines eligible for RTN sheet with Indexed
var rtnTableIndexed = completeTableIndexed;
for ( i = rtnTableIndexed.length; i > 0 ; i-- ) {
if ( rtnTableIndexed[i-1][17] == "Nein" ) { rtnTableIndexed.splice(i-1,1); } // Remove lines with "Reparaturcontroller" (field 17) = "Nein" if necessary
else if ( rtnTableIndexed[i-1][28] != "" ) { rtnTableIndexed.splice(i-1,1); } // Remove lines with "Versanddatum G4G -> Hersteller" (tracker, field 28) if necessary
else if ( rtnTableIndexed[i-1][23] == "Ja" && rtnTableIndexed[i-1][25] == "" ) { rtnTableIndexed.splice(i-1,1); } // Remove lines with "KVA (J/N)" (field 23) = "Ja" and KVA is not yet confirmed ("KVA bestätigt am", field 25) if necessary
}
// Data array of all lines eligible for KVA sendings with Indexed
var kvaTableIndexed = completeTableIndexed;
for ( i = kvaTableIndexed.length; i > 0 ; i-- ) {
if ( kvaTableIndexed[i-1][23] != "Ja" && kvaTableIndexed[i-1][24] != "" ) { kvaTableIndexed.splice(i-1,1); } // Remove lines with "KVA (J/N)" (field 23) not "Ja" and "KVA versendet am" (field 24) not empty if necessary
}
var results = [completeTableIndexed,rtnTableIndexed, kvaTableIndexed, completeTable]; // Log 3
Logger.log(completeTableIndexed); // Log 4
Logger.log(rtnTableIndexed);
Logger.log(kvaTableIndexed);
Logger.log(completeTable);
}
Ожидаемый вывод в журнале 1 - это полные данные электронной таблицы без каких-либо пустых строк - это прекрасно работает и выдает около 15 строк.
ОжидаетсяВыход Log 2 представляет собой индексированный массив первого шага, а также исходный массив. Вместо этого он выводит индексированный массив дважды.
Ожидаемым выводом Log 3 и 4 будет исходный массив, индексированный исходный массив и два разбитых массива, в каждой из которых примерно две строки. Вместо этого все зарегистрированные массивы - это разбитые массивы, содержащие две строки. Все они идентичны.
В процессе первоначальный полный массив, кажется, перезаписывается несколько раз.