Le script des applications Google, onChange, ne peut pas transmettre un objet déclencheur à une variable [duplicate]
Ce poste a été fermé, mais je n'ai pas été en mesure de trouver un problème comparable ailleurs.
J'essaie de travailler sur un script qui masquera les lignes d'un déclencheur onChange (). Lorsqu'une cellule devient "0", je veux que la ligne dans laquelle se trouve la cellule devienne masquée. Les commentaires de mon premier message m'ont appris que l'objet transmis par onChange ne contient pas de plage. Existe-t-il une solution de contournement qui résoudrait ce problème?
Ma feuille de calcul a une feuille d'entrée pour le backend et une feuille de sortie pour le frontend qui va au client. J'ai besoin d'un déclencheur onChange, de sorte que lorsque les données sont envoyées au frontend, elles sont bien formées pour être envoyées par courrier électronique au client. Plus important encore, j'ai besoin de masquer les lignes vides ('0).
Je suis nouveau et j'apprends, donc ce que j'ai écrit ne fonctionne pas car les objets onChange n'incluent pas de plage. Merci.
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.range;
var VALUE = cell.getValue();
if(VALUE == 0){
sheet.hideRow(cell);
}
}
J'ai aussi essayé:
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.getValue();
if(cell == 0){
sheet.hideRow(cell);
}
}
Réponses
Aucune valeur de plage n'est renvoyée par un déclencheur onChange. Voici à quoi ressemble l'objet événement.
{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}
Gardez également à l'esprit que onChange nécessite un déclencheur installable.
Objet d'événement onChange
Il semble que vous ayez les déclencheurs confus. Le déclencheur se déclenche lorsqu'un changement "plus important" ou structurel se produit, plutôt que les valeurs modifiées. À partir de la documentation :onChange onEditonChange
Un déclencheur de modification installable s'exécute 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.
Vous pouvez voir à partir des spécifications d'objet d'événement qu'aucune valeur n'est transmise au programmeur à partir du onChange
déclencheur et que le type de fonctionnalité que vous recherchez n'est donc pas facile à réaliser.
Vous souhaitez utiliser le onEdit
déclencheur qui fonctionnera plus près de ce que vous recherchez. Il se déclenchera sur tout changement de valeur et vous donnera les nouvelles et anciennes valeurs. onEdit
est également un " déclencheur simple ", il n'est donc pas nécessaire d'installer des déclencheurs supplémentaires comme vous le faites pour onChange
.
L'utilisation de onEdit
votre code ressemblera à ceci:
function onEdit(e) {
val range = e.range;
val sheet = SpreadsheetApp.getActiveSheet();
if (e.value == 0) {
var rowNum = e.range.getRow();
sheet.hideRow(rowNum);
}
}