web-dev-qa-db-fra.com

Différence entre trigger onEdit et onChange?

D'après ce que j'ai rassemblé en ligne, onEdit ne fonctionne que lorsque vous modifiez une cellule (pas quand une ligne est ajoutée ou quand une note/un commentaire est ajouté) et onChange capturera qu'un changement a eu lieu et déclencher lorsque cela est approprié.

Devrais-je changer tous mes déclencheurs onEdit en onChange afin qu'ils fonctionnent toujours?

1
que syrah sarah

sur la base d'une recherche rapide, ce sont les différences entre onEdit (e) et onChange (e):

onEdit (e):

brève description:

Le déclencheur onEdit (e) s'exécute automatiquement lorsqu'un utilisateur modifie la valeur d'une cellule dans une feuille de calcul. La plupart des déclencheurs onEdit (e) utilisent les informations contenues dans l'objet événement pour répondre correctement. Par exemple, la fonction onEdit (e) ci-dessous définit un commentaire sur la cellule qui enregistre la dernière fois où elle a été modifiée. Un déclencheur d'édition installable s'exécute lorsqu'un utilisateur modifie une valeur dans une feuille de calcul.

onEdit (e) peut être déclencheur simple ou déclencheur installable:

De simples déclencheurs permettent à Apps Script d'exécuter une fonction automatiquement lorsqu'un certain événement, tel que l'ouverture d'un document, se produit. Les déclencheurs simples sont un ensemble de fonctions réservées intégrées dans Apps Script, comme la fonction onOpen (e), qui s'exécute lorsqu'un utilisateur ouvre un fichier Google Documents, Feuilles, Diapositives ou Formulaires. Les déclencheurs installables offrent plus de fonctionnalités que les déclencheurs simples, mais ils doivent être activés avant utilisation. Dans les deux types de déclencheurs, Apps Script transmet à la fonction déclenchée un objet événement contenant des informations sur le contexte dans lequel l'événement s'est produit.

ce sont les inconvénients:

Comme les déclencheurs simples se déclenchent automatiquement, sans demander d’autorisation à l’utilisateur, ils sont soumis à plusieurs restrictions:

  • Le script doit être lié à un fichier Google Sheets, Slides, Docs ou Forms.
  • Ils ne s'exécutent pas si un fichier est ouvert en mode lecture seule (affichage ou commentaire).
  • Les exécutions de scripts et les demandes d'API n'entraînent pas l'exécution de déclencheurs. Par exemple, l'appel de Range.setValue () pour modifier une cellule ne provoque pas l'exécution du déclencheur onEdit de la feuille de calcul.
  • Ils ne peuvent pas accéder aux services nécessitant une autorisation. Par exemple, un déclencheur simple ne peut pas envoyer d'e-mail car le service Gmail nécessite une autorisation, mais un déclencheur simple peut traduire une phrase avec le service Langue, qui est anonyme.
  • Ils peuvent modifier le fichier auquel ils sont liés, mais ne peuvent pas accéder à d'autres fichiers car cela nécessiterait une autorisation.
  • Ils peuvent ou non être en mesure de déterminer l'identité de l'utilisateur actuel, en fonction d'un ensemble complexe de restrictions de sécurité.
  • Ils ne peuvent pas courir plus de 30 secondes.
  • Dans certaines circonstances, les modules complémentaires pour Google Sheets, les diapositives, les documents et les formulaires exécutent leurs simples déclencheurs onOpen (e) et onEdit (e) en mode sans autorisation, ce qui présente certaines complications supplémentaires. Pour plus d'informations, consultez le guide du cycle de vie des autorisations supplémentaires.



onChange (e):

brève description:

Un déclencheur de modification installable est exécuté lorsqu'un utilisateur modifie lui-même la structure d'une feuille de calcul, par exemple en ajoutant une nouvelle feuille ou en supprimant une colonne.

onChange (e): est seulement déclencheur installable:

Comme les simples déclencheurs, les déclencheurs installables permettent à Apps Script d'exécuter une fonction automatiquement lorsqu'un certain événement, tel que l'ouverture d'un document, se produit. Cependant, les déclencheurs installables offrent plus de flexibilité que les déclencheurs simples: ils peuvent appeler des services nécessitant une autorisation, ils offrent plusieurs types d'événements supplémentaires, notamment des déclencheurs temporels (horloge), et ils peuvent être contrôlés par programme. Apps Script transmet à la fonction déclenchée un objet événement contenant des informations sur le contexte dans lequel l'événement s'est produit, tant pour les déclencheurs simples que pour les déclencheurs installables.

Même si les déclencheurs installables offrent plus de flexibilité que les déclencheurs simples, ils sont soumis à plusieurs restrictions:

ce sont les inconvénients:

  • Ils ne s'exécutent pas si un fichier est ouvert en mode lecture seule (affichage ou commentaire).
  • Les exécutions de scripts et les demandes d'API n'entraînent pas l'exécution de déclencheurs. Par exemple, appeler FormResponse.submit () pour soumettre une nouvelle réponse à un formulaire ne provoque pas l'exécution du déclencheur submit du formulaire.
  • Les déclencheurs installables sont toujours exécutés sous le compte de la personne qui les a créés. Par exemple, si vous créez un déclencheur ouvert installable, il s'exécutera lorsque votre collègue ouvrira le document (si votre collègue dispose d'un accès en édition), mais il fonctionnera sous votre compte. Cela signifie que si vous créez un déclencheur pour envoyer un courrier électronique à l'ouverture d'un document, celui-ci sera toujours envoyé à partir de votre compte, pas nécessairement le compte qui a ouvert le document. Cependant, vous pouvez créer un déclencheur installable pour chaque compte, ce qui entraînerait l'envoi d'un courrier électronique à partir de chaque compte. -Un compte donné ne peut pas voir les déclencheurs installés à partir d'un deuxième compte, même si le premier compte peut toujours activer ces déclencheurs.

note importante:

Le type de changement pour onChange (e):

  • EDIT
  • INSERT_ROW
  • INSERT_COLUMN
  • REMOVE_ROW
  • REMOVE_COLUMN
  • INSERT_GRID
  • REMOVE_GRID
  • FORMAT
  • ou AUTRE

le déclencheur onChange (e) doit être installé, par exemple. changer simplement "onEdit" en "onChange" ne suffit pas. c'est le code d'installation:

function createSpreadsheetOpenTrigger() {
   var ss = SpreadsheetApp.getActive();
   ScriptApp.newTrigger('myFunction')
    .forSpreadsheet(ss)
    .onOpen()
    .create();
    }
5
user0