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:
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
, row
ne 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 openById
est 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
Enregistrer un commentaire