2010-12-14 35 views
4

Voici un script que j'utilise pour une feuille de calcul Google Docs.Le drapeau d'installation en Javascript

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 une seconde fois exécuter ce script, il ne ajouter les articles en stock ajoutés par perméabilité?

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. Ensuite, lorsque le script est exécuté à nouveau, il ignore les lignes avec un x dans la colonne i

Répondre

2

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

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

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

Je ne comprends pas. "alreadyDoneRunIt ??" – David

3

Désigner une cellule pour contenir la valeur de l'indicateur et demander au script de vérifier cette cellule particulière pour la valeur de l'indicateur.

+0

Alors, comment le configurer pour cela. Une fois que l'article a été ajouté à l'inventaire, le script ajoute un x à la colonne i de cette ligne. Ensuite, lorsque le script est exécuté à nouveau, il passe les lignes avec un x dans la colonne i – David

+0

Vous avez probablement déjà résolu ceci, mais anywho ... Le X dans la colonne I résoudra parfaitement votre problème. Vous souhaitez stocker le drapeau qui indique que chaque ligne a été traitée dans la feuille de calcul elle-même, de sorte que vous ne perdiez pas cette information lorsque vous fermez la feuille. En outre, vous (ou un autre utilisateur) pouvez vouloir savoir si une ligne particulière a été traitée. –

1

Ajoutez les valeurs à un tableau en premier. Chaque fois que vous ajoutez un élément, vérifiez le tableau pour voir s'il s'y trouve déjà. Puis bouclez votre tableau un message à l'interface utilisateur.

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

+0

Je suis un peu confus. Pouvez-vous donner un exemple? – David

+0

N'utilisez pas de tableau pour la recherche, utilisez un hachage. –