2017-05-11 2 views
1

J'ai écrit un script gs pour effacer les données de toutes les cellules des feuilles. La feuille de calcul a beaucoup de feuilles (environ 200) et j'obtiens une erreur d'exécution de limite de temps. Peut-être que quelqu'un a des idées pour résoudre ce problème. Voici un exemple de mon code.Délai d'exécution du script de feuille de calcul Google

function cleanAllOld() { 

    var sheetsName = new Array(); 
    var destination = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/link"); 
    var sheets = destination.getSheets(); 

    for (var k = 0; k < sheets.length; k++) { 

    sheetsName.push([sheets[k].getName()]); 

    for (var p = 0; p < sheetsName.length; p++) { 
     var sheet = destination.getSheetByName(sheetsName[p]); 
     if (sheet === null) {} else { 
     sheet.getDataRange().clearContent(); 
     } 
    } 
    } 
} 

Répondre

2

Je ne comprends pas toute la partie de votre code, mais je pense qu'il est trop compliqué pour rien. Voici est un échantillon de travail:

function AllDelete() { 

    var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/link"); 
    var sheets = ss.getSheets(); 
    var i = 0; 

    for(i in sheets){ 

    sheets[i].clearContents(); 

    } 

} 

Edit: Max est rapide et est à droite, la méthode getDataRange() utilise beaucoup de ressources

+0

J'ai erreur « TypeError: fonction Vous ne trouvez pas clearContent dans feuille d'objet. " sans 'getDataRange()'. Avec ce script fonctionne correctement. Je vous remercie. – ysytnik

+0

Mon diable, il manque un 's' dans mon échantillon. Regardez l'édition. –

1

Je pense que le problème est d'obtenir une plage de données.

Essayez remplacer

sheet.getDataRange().clearContent();

par ceci:

sheet.clearContents();