Google Script - Insertion de Lignes en fonction de la longueur de l'Array
Bonsoir les cracks du google sheet,
Mon fichier de travail a été amélioré par Steelson
https://forum.excel-pratique.com/sheets/google-script-selection-prix-dans-bdd-173675
Cela fonctionne très bien.
Toutefois sue ce meme fichier, je souhaiterais le partager comme une sorte de modèle, et que l'insertion des lignes puissent être fonction d'un utilisateur à un autre.
Aujourd'hui , il y a 199 lignes dans le tableau supérieur de l'onglet "Mat & Comp Quick Search".
Du coup, dans beaucoup de cas il y a de nombreuses lignes vides entre les données de mon tableau supérieur et inférieur qui se trouve en ligne 200.
J'aurais besoin de vous, pour m'aider à modifier le script suivant, afin qu'il insère autant de lignes manquantes entre la ligne 9 et le tableau inférieur, en tenant compte que dans mon futur modèle le tableau inférieur commencerait en ligne 35, comme illustrée dans l'onglet "Copie de Mat & Comp Quick Search".
function firstExtractFromBdd() {
////////////////////////////////////////////////////////////////////////////////
//Delete Duplicate lines from Datas to Mat & Comp Quick Search sheet
////////////////////////////////////////////////////////////////////////////////
var ss, dataInput, a;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetTarget = ss.getSheetByName('Mat & Comp Quick Search');
var clearRange = sheetTarget.getRange("A9:N199");
clearRange.clearContent();
var sheetInput = ss.getSheetByName('Datas from xxxx');
var lastActiveRow = sheetInput.getLastRow();
var dataInput = sheetInput.getRange("A2:B" + lastActiveRow).getValues();
a = [];
a.push(dataInput[0]);
for (var n = 1; n < dataInput.length; n++) {
if (a.join().indexOf(dataInput[n].join()) == -1) {
a.push(dataInput[n])
};
}
sheetTarget.getRange(9,1,a.length,a[1].length).setValues(a);
//Toast message to inform that Unique Values have been set
SpreadsheetApp.getActiveSpreadsheet().toast('Unique list of Ref Numbers has been set in column A & B of "Mat & Comp Quick Search sheet"', 'Script Information:', 10);
////////////////////////////////////////////////////////////////////////////////
//Set prices from Bdd
////////////////////////////////////////////////////////////////////////////////
var src = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1IN1ATpco0Ol6eCpmj0Iqhp_eUXaf42MclcJSRD9fZNs/edit');
var dst = SpreadsheetApp.getActiveSpreadsheet();
var data1 = dst.getSheetByName('Mat & Comp Quick Search').getRange("A9:J199").getValues();
var lastActiveRowBdd = src.getLastRow();
var data2 = src.getSheetByName('Import from CSV').getRange("B1:G" + lastActiveRowBdd).getValues();
for (var j = 0; j < data1.length; j++) {
for (var i = 0; i < data2.length; i++) {
if (data1[j][0] == data2[i][0] && data2[i][3] != "") {
// on reprend la ligne j en la complétant
data1[j] = [data1[j][0],data1[j][1],data1[j][2],...data2[i], 'Selected by Script']
}
}
}
dst.getSheetByName('Mat & Comp Quick Search').getRange("A9:J199").setValues(data1);
//Toast message to inform that Values have been set from Bdd (match perfect)
SpreadsheetApp.getActiveSpreadsheet().toast('All values matching with perfect digits of Ref Numbers have been set in column D to J of "Mat & Comp Quick Search sheet". Highlighted in green!', 'Script Information:', 10);
}Merci encore de votre bienveillance et patience. En espérant avoir été clair dans mes explications!