Script apps google sheet

Bonjour,

J'ai crée un script sur google sheet permettant d'alimenter une base de données avec un formulaire. "ajouter des données" "effacer des données" "rechercher des données" & "modifier des données.

Ce script fonctionne très bien sauf un bug que je n'arrive pas à corriger. Sur la fonction modifier des données. Si j'ai indiqué une valeur avec un premier enregistrement et que je veux supprimer cette valeur en utilisant la touche Suppr et que je fais modifier les données celle-ci ne se modifie pas. sauf si initialement il y avait 200 et que je mets 100 alors ça fonctionne.

// Fonction pour soumettre les modifications de données à la feuille de base de données
function majMODIF() {

  var myGooglSheet = SpreadsheetApp.getActiveSpreadsheet(); //déclarer une variable et définir avec la feuille google active

  var shUserForm = myGooglSheet.getSheetByName("Formulaire"); //déclarer une variable et la définir avec la feuille de calcul du formulaire utilisateur

  var datasheet = myGooglSheet.getSheetByName("TVX 2023"); //déclarer une variable et la définir avec la feuille de calcul Base de données

  //pour créer l'instance de l'environnement d'interface utilisateur pour utiliser les fonctionnalités de la boîte de message
  var ui = SpreadsheetApp.getUi();

  // Affiche une boîte de dialogue avec un titre, un message et les boutons "Oui" et "Non". L'utilisateur peut également
  //fermez la boîte de dialogue en cliquant sur le bouton de fermeture dans sa barre de titre.
  var response = ui.alert("Enregistrement", 'Voulez-Vous Modifier  La Ligne ? ', ui.ButtonSet.YES_NO);

  // Vérification de la réponse de l'utilisateur et effacement du formulaire si l'utilisateur sélectionne Oui
  if (response == ui.Button.NO) {
    return;//exit from this function
  }

  //Validation de l'entrée. Si la validation est vraie, procédez au transfert des données vers la feuille de base de données
  if (validateEntryMODIF() == true) {

    // paramètres
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const [src, dst] = ["Formulaire", "TVX 2023"];
    const rng = ['B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'B10', 'B11', 'B12', 'B13', 'B14', 'B15', 'B16','B17', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D19', 'D21', 'E5', 'E11', 'E15', 'E20', 'F5', 'F11', 'F15', 'F20', 'G5','G11', 'H5','H15','I20','I22','I23']
    const col = [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 25, 28, 29, 30, 34, 35, 36, 44, 45, 46, 47, 48, 49, 51, 52, 53, 61, 66, 67, 6, 18, 21, 24 ,7, 19, 22, 26, 13, 20, 14, 23, 65, 50, 54]
    if (rng.length != col.length) { return }

    // recherche ligne
    const str = ss.getSheetByName(src).getRange(rng[0]).getDisplayValue();
    const ids = ss.getSheetByName(dst).getRange(1, col[0], ss.getSheetByName(dst).getLastRow(), 1).getDisplayValues().flat()
    let ligne = +ids.indexOf(str) + 1
    if (ligne == 0) {
      ligne = ss.getSheetByName(dst).getLastRow() + 1
    }

    // capture des données
    const rngSrc = rng.map(e => `'${src}'!${e}`);
    const values = Sheets.Spreadsheets.Values.batchGet(ss.getId(), { ranges: rngSrc })

    // injection des données
    const rngDst = col.map(c => `'${dst}'!${columnToLetter(c)}${ligne}`);
    const data = rngDst.map((e, i) => ({ range: e, values: values.valueRanges[i].values }));
    Sheets.Spreadsheets.Values.batchUpdate({ data, valueInputOption: "USER_ENTERED" }, ss.getId());

  function columnToLetter(column) {
    var temp, letter = '';
    while (column > 0) {
      temp = (column - 1) % 26;
      letter = String.fromCharCode(temp + 65) + letter;
      column = (column - temp - 1) / 26;
    }
    return letter;
  }

  ui.alert(' "Modification De La Ligne     ' + shUserForm.getRange("B4").getValues() + ' "');

  //Effacer les données du formulaire de saisie de données
  shUserForm.getRange("B4:B17").clearContent();
  shUserForm.getRange("D4:D16").clearContent();
  shUserForm.getRange("D19:D21").clearContent();
  shUserForm.getRange("G20:H20").clearContent();
}
}
Rechercher des sujets similaires à "script apps google sheet"