Code d'exécution trop rapide pour les applications de script...?
J'ai écrit du code à exécuter lors de cette feuille de calcul est ouvert. Surtout, vérifier pour voir si il y a des feuilles en plus de la feuille nommée "Main" et si c'est possible de supprimer toutes les mais la "main" un. (Le "Principal" feuille de la première feuille à tout moment.) Puis d'effacer tout ce qui est dans le "Principal" de la feuille et de le remplacer à chaque fois avec les choses que vous pouvez lire dans le code à la fin.
//This creates a menu when this spreadsheet is opened.
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [];
var numSheets = ss.getSheets();
while (numSheets.length > 1){
ss.setActiveSheet(numSheets[1]);
ss.deleteActiveSheet();
var numSheets = ss.getSheets();
}
ss.setActiveSheet(numSheets[0]);
ss.getActiveSheet().getDataRange().clear();
menuEntries.push({name: "Create Folder Structure", functionName: "folderStruc"});
ss.addMenu("Click here when done.", menuEntries);
ss.getRange('A1:B1').mergeAcross().setValue('TA');
ss.getRange('A2').setValue('First Name');
ss.getRange('B2').setValue('Last Name');
ss.getRange('C2').setValue('Email');
ss.getRange('D2').setValue('Classes');
}
Le script fonctionne parfaitement lorsque je debug ligne par ligne. Il fonctionne aussi bien quand il y a seulement le "Principal" de la feuille de là. Mais quand il y a plusieurs feuilles, et j'ai ouvrez la feuille de calcul, il serait courir à travers la boucle while et supprimer toutes les feuilles à l'exception de la "main", mais il aurait pour effet de bloquer sur le "Principal" et juste afficher "Chargement..." et ne pas afficher toutes les cellules ou quoi que ce soit. Le menu personnalisé s'affiche. Il est également à l'affiche de "Travailler" dans une boîte jaune en haut.
- Supprimer "ss.getSheets()" de la boucle? que faire si vous ne disposez que de 2 feuilles, avez-vous touché le problème. Je soupçonne que le problème est le réseau. Je soupçonne certaines fonctions de votre boucle sont lents parce qu'ils font un appel réseau.... Ou vous pouvez les supprimer via un déclencheur.
- La solution Serge réponse ci-dessous résolu. Mais vous avez raison, c'est un problème de réseau.
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionne si vous ajoutez simplement un petit délai entre chaque feuille de supprimer, c'est un problème connu lors de la suppression de plusieurs feuilles.
Voici le code:
Remarque: que vous mentionnez dans votre question que vous ne supprimez pas la feuille nommée "main" mais je ne vois pas de condition dans votre script, donc je suppose que vous comptez sur les feuilles de commande. Il serait assez simple d'ajouter une condition qui vérifie la sheetName avant de le supprimer afin de ne pas prendre le risque de supprimer la feuille principale par accident si, pour une raison quelconque, la feuille de commande a été modifiée. Quelque chose comme cela pour remplacer l'original
while loop
va mettre les feuilles à sa place si nécessaire.