Code erreur sur script google sheet

J'ai récupé ce code et j'ai ce type d'erreur qui s'affiche : TypeError: Cannot read properties of undefined (reading 'source')onEdit@ Code.gs:2

Je ne comprends pas l'erreur et surtout comment la corriger !!!!

Voici le code:

function onEdit(e) {

var sheet1 = e.source.getActiveSheet();

var sheet2 = e.source.getSheetByName('Topo');

var cell = e.range.getA1Notation();

if (sheet1.getName() == 'Relevé' && sheet2 != null && cell != 'P21:R21' && sheet1.getRange(cell).getValue() != '' && sheet1.getRange(cell).offset(-1, 0).getValue() != '') {

sheet2.appendRow([sheet1.getRange(cell).getValue()]);

} else if (sheet1.getName() == 'Relevé' && sheet2 != null && cell != 'A1:A3' && sheet1.getRange(cell).getValue() != '' && sheet1.getRange(cell).offset(-1, 0).getValue() == '') {

sheet2.appendRow(['\n' + sheet1.getRange(cell).getValue()]); }}

Un petit coup de pouce.

Merci beaucoup.

Bonjour,

C'est un script qui fonctionne lorsque tu fais une modification dans ta feuille.

Il ne peut pas pas se lancer avec la fonction "exécuter" de l'éditeur de script.

Fais un test depuis ta feuille, il devrait fonctionner (si tu n'as pas d'erreur avec tes plages et noms d'onglets) !

Cordialement,

Fil.

Bonjour,

Je vais essayer.

Merci

Re

Alors, ç afonctionne nikel sauf que ça me mets les valeurs en A1,A2,A3 et moi, je voudrais transposer c'est à dire en A1,B1,C1 etc..

Merci Filoche .

Les scripts sont plus le domaine de Pierre et Sébastien.

Je leur laisse la main pour te répondre...

😇

Merci.

Bonjour,

Pour décortiquer le script semble réaliser, étape par étape :

1- déclaration de la feuille où a eu lieu la modification, la feuille Topo et la cellule où a eu lieu la modification.

function onEdit(e) {
var sheet1 = e.source.getActiveSheet();
var sheet2 = e.source.getSheetByName('Topo'); 
var cell = e.range.getA1Notation();

2- une condition qui vérifie si la feuille où a eu lieu la modif s'appelle "Relevé" et si la feuille "Topo" existe bel et bien et si la cellule modifiée n'est pas P21:R21 et si la modification est différente de vide et si l'offset en -1,0 a une valeur différente de vite.

if (sheet1.getName() == 'Relevé' && sheet2 != null && cell != 'P21:R21' && sheet1.getRange(cell).getValue() != '' && sheet1.getRange(cell).offset(-1, 0).getValue() != '') {

3- si la condition précédente est remplie, alors ajout d'une ligne (première ligne) de la feuille Relevé et insère la donnée contenue dans cell.

sheet2.appendRow([sheet1.getRange(cell).getValue()]);

4- si condition 2- pas remplie, alors, si le nom de la si la feuille où a eu lieu la modif s'appelle "Relevé" et si la feuille "Topo" existe bel et bien et si la cellule modifiée n'est pas A1:A3 et si la modification est différente de vide et si l'offset en -1,0 a une valeur différente de vite.

} else if (sheet1.getName() == 'Relevé' && sheet2 != null && cell != 'A1:A3' && sheet1.getRange(cell).getValue() != '' && sheet1.getRange(cell).offset(-1, 0).getValue() == '') {

5- si la condition précédente est remplie, alors ajout d'une ligne (première ligne) de la feuille Relevé et insère le texte : "\n" + la donnée contenue dans cell. (> \n ne fonctionne pas dans sheet)

sheet2.appendRow(['\n' + sheet1.getRange(cell).getValue()]); }}

Qu'est ce qui ne fonctionne pas ?

Je crois qu'il aimerait que le texte soit inséré sur la première ligne (en horizontal) au lieu de la première colonne (en vertical) !

Bonjour

Merci de prendre un peu de temps pour m'aider.

Je vous joins le fichier en question car, je n'y arrive pas ; il est réalisé avec sheet mais en l'enregistrent sur mon bureau, il est passé en xlsx..

Je pense que vous devez connaître la procédure pour le passer en Sheet;

merci beaucoup

Dany, si ton besoin est d’insérer les données en transposé comme indiqué par @Filoche, il faut revoir différemment l'insertion :

function onEdit(e) {
  const sheet1 = e.source.getActiveSheet();
  const sheet2 = e.source.getSheetByName('Topo');
  const cell = e.range.getA1Notation();

  if (sheet1.getName() == 'Relevé' && sheet2 != null && cell != 'P21:R21' && sheet1.getRange(cell).getValue() != '' && sheet1.getRange(cell).offset(-1, 0).getValue() != '') {
    sheet2.getRange(1, sheet2.getLastColumn() + 1, 1, 1).setValue(['\n' + sheet1.getRange(cell).getValue()]);
  } else if (sheet1.getName() == 'Relevé' && sheet2 != null && cell != 'A1:A3' && sheet1.getRange(cell).getValue() != '' && sheet1.getRange(cell).offset(-1, 0).getValue() == '') {
    sheet2.getRange(1, sheet2.getLastColumn() + 1, 1, 1).setValue(['\n' + sheet1.getRange(cell).getValue()]);
  }
}

Par contre, je ne suis pas certain de la fiabilité de ces tests :

cell != 'P21:R21'
cell != 'A1:A3'

Ok, merci beaucoup,

Je vais tester.

Rechercher des sujets similaires à "code erreur script google sheet"