Problème incrémentation

Bonjour tout le monde,

J'ai un petit souci avec un script.

Je souhaite que ma valeur qui apparait en colonne B ligne 2 "MD1" soit incrémenter en colonne B ligne 38 par la valeur "MD2" et que ce schéma ce répète toutes les 36 lignes pour arriver à une valeur de "MD382"

Je n'arrive pas malheureusement à trouve l'erreur. Est-ce que vous pourriez m'éclairer s'il vous plait.

Je vous remercie

function duplicateRowsWithLinks() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange(2, 1, 36, sheet.getLastColumn()); // Lignes 2 à 37
  const data = range.getValues(); // Récupère les données des lignes 2 à 37

  let mdCounterA = 2; // Commencer à "md2" pour la colonne A
  let mdCounterB = 2; // Commencer à "MD2" pour la colonne B
  let linkCounter = 2; // Le lien en colonne AB commence à "MD2"

  // Répéter 380 fois
  for (let i = 0; i < 380; i++) {
    const newData = data.map((row) => {
      return row.map((cell, colIndex) => {
        // Modification de la colonne A (index 0)
        if (colIndex === 0) {
          // Remplacer "md1" par "mdX" dans la colonne A, débutant par "md2"
          return cell.toString().replace(/md1/g, `md${mdCounterA}`);
        }
        // Modification de la colonne B (index 1)
        if (colIndex === 1) {
          // Remplacer "md1" par "MDX" dans la colonne B, débutant par "MD2"
          return cell.toString().replace(/md1/g, `MD${mdCounterB}`);
        }
        // Modification de la colonne AB (index 27) pour le lien de l'image
        if (colIndex === 27) {
          // Remplacer "MD1" par "MDX" dans la colonne AB en utilisant linkCounter
          return cell.toString().replace(/MD1/g, `MD${linkCounter}`);
        }
        return cell; // Les autres colonnes restent inchangées
      });
    });

    // Coller les nouvelles données à la fin du tableau
    sheet.getRange(sheet.getLastRow() + 1, 1, 36, newData[0].length).setValues(newData);

    // Incrémenter le compteur A (md2 -> md3 -> md4 -> ...)
    mdCounterA++;

    // Incrémenter le compteur B tous les 36 lignes pour qu'il change seulement aux nouvelles duplications
    if ((i + 1) % 36 === 0) {
      mdCounterB++;
    }

    // Incrémenter le compteur de lien en colonne AB
    linkCounter++;
  }
}

Tu veux débuter en B2 avec la valeur MD1 et terminer en B13752 avec MD382 ?

Oui exactement... Malheureusement je ne sais pas pourquoi il me copie juste la valeur MD1 toutes les 36 lignes mais il ne l'incrémente pas.

Alors, le + simple possible :

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  for(i=1;i<382;i++){
    sheet.getRange((2+i*36),2).setValue('MD'+i)
  }
}

Mais c'est lent, car on setValue à chaque itération

Plus rapide, mais insère des données vides sur la colonne B là où il n'y a pas de MD :

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let values = Array(382 * 36).fill(['']);
  for (i=1;i<382; i++) {
    const rowIndex = 1 + i * 36;
    values[rowIndex - 1] = ['MD' + i];
  }
  sheet.getRange(3, 2, values.length, 1).setValues(values);
}
Rechercher des sujets similaires à "probleme incrementation"