Envoyer une ligne d'une feuille de calcul à une autre en fonction de 2 conditions avec Apps Script

J'essaie d'envoyer une ligne d'une feuille de calcul à une autre et le script ci-dessous fonctionne correctement. Mais maintenant j'essaie d'ajouter deux améliorations:

  • Activez le script si dans la colonne C il y a les voix "Yellow 1" ou "Green 2" ou "Red 3" ou "Brown 5"

  • Après avoir envoyé la ligne à la feuille de calcul cible, supprimez la ligne de la feuille de calcul source

  • j'essaie avec:

  • IF statement

  • s.deleteRow(row)

  • Mais je ne peux pas atteindre le but, car il y a des erreurs

    function onEdit(event) {
    if(r.getColumn() == 3 && r.getValue() == 'Yellow 1','Green 2','Red 3','Brown 5') {
    var ss = SpreadsheetApp.openById('xxx');
    var r = sss.getSheetByName('source');
    var SRange = ss.getDataRange();
    var A1Range = SRange.getA1Notation();
    var SData = SRange.getValues();
    var tss = SpreadsheetApp.openById('yyy');
    var ts = tss.getSheetByName('destination');
    s.getRange(row, 1, 1, numColumns).moveTo(ts);
    ss.deleteRow(row);
    }
    }


    Solution du problème

    Je crois que votre objectif est le suivant.


    • Lorsque l'une des valeurs de 'Yellow 1','Green 2','Red 3','Brown 5'est placée dans la colonne "C" de la feuille "source" de la feuille de calcul active, vous souhaitez déplacer cette ligne vers la feuille "destination" dans une autre feuille de calcul.

    • Vous souhaitez exécuter ce script par le déclencheur OnEdit.


    Malheureusement, quand j'ai vu votre script d'affichage, j'ai remarqué que le script avait beaucoup de points de modification. Par exemple, les variables de r, sss, s, rowne sont pas déclarées. Alors, dans ce cas, que diriez-vous de l'exemple de script suivant ?

    Exemple de scénario :

    Veuillez remplacer ###de var dstSheet = SpreadsheetApp.openById('###').getSheetByName('destination');par votre ID de feuille de calcul de destination. Et, veuillez installer le déclencheur OnEdit sur la fonctioninstalledOnEdit. Parce que quand openByIdest utilisé, il est nécessaire d'utiliser le déclencheur installable.

    function installedOnEdit(e) {
    var range = e.range;
    var sheet = range.getSheet();
    var values = ['Yellow 1', 'Green 2', 'Red 3', 'Brown 5'];
    if (sheet.getSheetName() == 'source' && range.columnStart == 3 && values.includes(range.getValue())) {
    var dstSheet = SpreadsheetApp.openById('###').getSheetByName('destination');
    var rowValue = sheet.getRange(range.rowStart, 1, 1, sheet.getLastColumn()).getValues()[0];
    dstSheet.appendRow(rowValue);
    sheet.deleteRows(range.rowStart, 1);
    }
    }


    • Dans ce script, lorsque vous modifiez la colonne "C" de la feuille "souece", lorsque la valeur modifiée est incluse dans les valeurs de ['Yellow 1', 'Green 2', 'Red 3', 'Brown 5'], la ligne est déplacée vers la feuille de destination. Et la ligne est supprimée.


    Référence:


    • Déclencheurs installables

    Commentaires

    Posts les plus consultés de ce blog

    Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

    Détecter les appuis sur les touches fléchées en JavaScript

    Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"