Image de la feuille de calcul Je suis assez nouveau dans le script Google Apps et j'ai besoin de aider.
J'ai une feuille de calcul intitulée "Démarrer" qui a une colonne "reçue" avec une case à cocher. Je suis capable de déplacer la ligne vers une autre feuille si la case à cocher est modifiée pour être vraie mais je dois ajouter une condition de plus. P>
Si la colonne reçue est modifiée pour être true et que l'emplacement est en magasin, je Voulez-vous déplacer la ligne vers la feuille de cible1. Si la colonne reçue est modifiée pour être true et que l'emplacement est la zone, je souhaite déplacer la ligne vers la feuille Target2. P>
Voici un lien vers ma feuille de calcul de test: https://docs.google.com/spreadsheets/d/ 1exixeye1bympnz-gvf6i1vm_rkochbb8kj06_ubvhlqc / Modifier? USP = Partage P>
Voici le script que j'ai jusqu'à présent: p>
function onEdit(event) { // assumes source data in sheet named main // target sheet of move to named Completed // getColumn with check-boxes is currently set to colu 4 or D var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); if(s.getName() == "Start" && r.getColumn() == 4 && r.getValue() == true) { var row = r.getRow(); var numColumns = s.getLastColumn(); var targetSheet1 = ss.getSheetByName("Target1"); var targetSheet2 = ss.getSheetByName("Target2"); var target1 = targetSheet1.getRange(targetSheet1.getLastRow() + 1, 1); var target2 = targetSheet2.getRange(targetSheet2.getLastRow() + 1, 1); var locationStore = ss.getSheetByName("Start") && r.getColumn() == 3 && r.getValue() == "Store"; var locationArea = ss.getSheetByName("Start") && r.getColumn() == 3 && r.getValue() == "Area"; if (locationStore) { s.getRange(row, 1, 1, numColumns).moveTo(target1); s.deleteRow(row); } if (locationArea) { s.getRange(row, 1, 1, numColumns).moveTo(target2); s.deleteRow(row); } } }
3 Réponses :
Essayez ceci:
Étant donné que vous êtes des actions impliquant la modification des données utilisateur, vous pouvez avoir besoin que cela soit un déclencheur constructible et si vous le rendez comme vous le permettez de modifier le nom de quelque chose d'autre que ONEdit () afin que le déclencheur simple ne soit pas activé. IT. P>
function onMyEdit(e) { e.source.toast('Entry'); var sh=e.range.getSheet(); sh.getRange('A23').setValue(JSON.stringify(e)); if(sh.getName()=="Sheet14" && e.range.columnStart==4 && e.value=="TRUE") { e.source.toast('Flag1'); e.range.setValue('FALSE'); var tsh1=e.source.getSheetByName("Target1"); var tsh2=e.source.getSheetByName("Target2"); var trg1=tsh1.getRange(tsh1.getLastRow()+1,1); var trg2=tsh2.getRange(tsh2.getLastRow()+1,1); if (e.range.offset(0,-1).getValue()=="Store") { sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).moveTo(trg1); sh.deleteRow(e.range.rowStart); }else if (e.range.offset(0,-1).getValue()=="Area") { sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).moveTo(trg2); sh.deleteRow(e.range.rowStart); } } }
Merci pour ça! J'ai essayé cela, mais cela ne fonctionne toujours pas. Lorsque je mettez à jour la colonne reçue sur true, je m'attends à ce que l'enregistrement passe de la feuille de démarrage à l'une des feuilles cibles en fonction de la valeur de la colonne Emplacement, mais rien ne se passe.
Veuillez fournir l'image demandée.
Juste ajouté au sommet du post d'origine. :)
Vous devez en faire un déclencheur installé et j'ai fait un petit changement. E.Value == "vrai" à la condition. S'il vous plaît, je n'ai pas aussi changé les noms de vos feuilles cibles.
Un type de plus parce qu'il bougeait et en supprimant deux rangées, je dois ajouter l'autre si elle est en bas. Cela semble donc que ça fonctionne maintenant.
Les antennes de la solution ont affiché, construisant de ce que vous avez envoyé finir par travailler pour moi. Merci beaucoup de m'aider. Au-delà de l'apprécier.
Ceci est certainement réalisable et vous allez la bonne façon. Bâtiment de la réponse de @ Cooper, et à l'aide d'un Voici un exemple de code qui fait ce que vous Besoin: P> Onedit () code> Trigger installable, pour exécuter votre fonction
myonedit (e) code>.
Exemple: h3>
script en action: h3>
Cela a fonctionné !! Le seul changement que je devais faire était d'utiliser onedit (e) au lieu d'ONMYEdit (e). Merci beaucoup!
C'est la solution qui a fonctionné pour moi:
Si vous fournissez et que vous ferez l'image de votre onglet, je serai heureux d'aider. Pourquoi je veux une image ... parce que je n'aime pas suivre les liens de feuille de calcul de ce site.