Maison > interface Web > js tutoriel > Comment puis-je optimiser le script Google Apps pour réduire les longs temps de traitement causés par les appels fréquents « getValue() » et « setValue() » ?

Comment puis-je optimiser le script Google Apps pour réduire les longs temps de traitement causés par les appels fréquents « getValue() » et « setValue() » ?

Susan Sarandon
Libérer: 2024-12-08 09:00:23
original
687 Les gens l'ont consulté

How Can I Optimize Google Apps Script to Reduce Long Processing Times Caused by Frequent `getValue()` and `setValue()` Calls?

Temps de traitement long : résolution de getValue() et des insertions de cellules

Dans le code que vous avez fourni, le problème du temps de traitement excessif provient du fréquent utilisation des méthodes Range.getValue() et Range.setValue() dans une boucle. Lorsque le script parcourt chaque cellule de la colonne A, il lit et écrit les valeurs plusieurs fois, ce qui ralentit considérablement l'exécution.

Optimisation du code

Pour remédier à cette performance problème, il est essentiel de minimiser les appels aux services, principalement axés sur la réduction du nombre d'opérations Range.getValue() et Range.setValue(). Voici comment optimiser votre code :

Lectures par lots

Au lieu de récupérer la valeur de chaque cellule individuellement à l'aide de range1.getValue(), lisez les valeurs de tous les cellules requises en une seule opération par lots. Par exemple, si vous avez besoin des valeurs de la ligne actuelle et des trois lignes suivantes, vous pouvez utiliser s.getRange(row 1, 1, 4, 1).getValues() pour les récupérer toutes en même temps.

Écritures par lots

De même, au lieu de définir les valeurs de cellules individuelles, rassemblez toutes les valeurs qui doivent être écrites, puis attribuez-les en une seule opération par lots. Par exemple, si vous souhaitez écrire des valeurs dans la ligne actuelle et les trois lignes suivantes, vous pouvez utiliser range1.offset(0, 0, 4).setValues([["data 1"], ["data 2"], ["données 3"], ["données 4"]]); pour ce faire.

Exemple d'optimisation

Voici une version optimisée de votre code qui intègre ces optimisations :

function format() {

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getActiveSheet();
    var lastRow = s.getRange("A:A").getLastRow();

    var allValues = s.getRange(1, 1, lastRow, 1).getValues();

    // Loop through all rows in the spreadsheet
    for (var row = 0; row < lastRow; row++) {
        var cellValue = allValues[row][0];
        if (typeof cellValue === 'number') {
            continue;
        }
    }
}
Copier après la connexion

En utilisant ces optimisations , vous pouvez réduire considérablement le nombre d'appels aux services et améliorer les performances de votre script. Cette approche réduit le nombre d'appels aux services de 8 par boucle à seulement 2, ce qui entraîne une diminution significative du temps de traitement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal