2017-01-14 1 views
0

Je voulais juste inspecter tous les caractères d'un document, mais cela prend en compte le temps limite de 6 minutes, pour un document de 40000 caractères. Je suppose que je devrais stocker les données et y accéder à partir de là, mais comment cette pratique est-elle appelée?basic mais EXTREMEMENT LENT

function myFunction() { 
    var body = DocumentApp.getActiveDocument().getBody(); 
    var text = body.getText(); 
    var editText = body.editAsText(); 


    for (var i = 0 ; i < text.length; i++){ 
    Logger.log(text[i]); 
    Logger.log(editText.getAttributes(i)); 
    } 
} 
+1

Que voulez-vous faire avec les personnages? Comme ceci vous faites 80k appels à Logger qui sera évidemment lent. est-ce que tout sera enregistré en tant que caractères uniques? –

+0

J'ai besoin de mon script pour considérer chaque caractère, afin de définir des motifs, afin de corriger des erreurs et/ou des attributs spécifiques. La journalisation est-elle plus lourde que toute autre opération? – lucanapo

+0

oui mais de quelle façon voulez-vous les inspecter, un appel à l'enregistreur fait 80k fois sera lent puisqu'il s'agit d'une opération d'E/S (qui inclut à cet effet les appels d'API etc.), si vous le faites en mémoire . –

Répondre

0

Essayez d'utiliser batch operations qui fait partie de la Best Practices lors de la programmation dans Google Apps Script. Un code optimisé a été inclus dans le guide.

Vous pouvez écrire des scripts pour tirer le meilleur parti de la mise en cache intégrée, en minimisant le nombre de lectures et d'écritures. Alterner les commandes de lecture et d'écriture est lent. Pour accélérer un script, lisez toutes les données dans un tableau avec une commande, effectuez des opérations sur les données du tableau et écrivez les données avec une commande.