Question

Voici un script que je utilise pour une feuille de calcul Google Docs.

Ces liens montrent ce que je fais:

http://i.stack.imgur.com/uGik7.png

http://i.stack.imgur.com/AbKnQ.png

Comment puis-je mettre en place un « drapeau » de sorte que lorsque je lance ce script une seconde fois, il n'ajoute pas les pièces perviously ajoutée?

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Purchase Orders");
  var sheet2 = ss.getSheetByName("Inventory");
  var data = sheet1.getDataRange();
  var i_data = sheet2.getDataRange();
  var lastRow = data.getLastRow();
  var iLastRow = i_data.getLastRow();

  for (i=1;i<=lastRow;i++) {
    if (data.getCell(i, 5).getValue() == "stock"){
      for (n=1;n<=iLastRow;n++){
        if (data.getCell(i,3).getValue() == i_data.getCell(n,3).getValue()) {
        i_data.getCell(n, 1).setValue(i_data.getCell(n,1).getValue() + data.getCell(i,2).getValue());
       }
      }
    }

  }
}​

Je suppose que je suis en train de le faire: Une fois que l'élément a été ajouté à l'inventaire, le script ajoute un x à la colonne i de cette ligne. Puis, quand le script est exécuté à nouveau, il saute sur les lignes avec un x dans la colonne i

Était-ce utile?

La solution

En JavaScript, les fonctions sont des objets. Les objets ont des propriétés. Alors, décorer votre fonction:

function myFunction() {
    if (!myFunction.alreadyDoneRunIt) {
        alert('bapt uia');
        myFunction.alreadyDoneRunIt = true;
    }
}

for (var i = 0; i < 10; i++) {
    myFunction(); // alerts once
}

Autres conseils

Désigner une cellule pour maintenir la valeur du drapeau, et avoir le contrôle de script cellule particulière pour la valeur du drapeau.

Ajoutez les valeurs à un tableau premier. Chaque fois que vous ajoutez un élément vérifiez le tableau pour voir si elle est déjà en elle. Puis boucle votre tableau un poste à l'interface utilisateur.

Voici un poste pour aider à vérifier si le tableau contient déjà la valeur. stackoverflow.com/questions/237104/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top