En tant que débutant, j'ai écrit un script pour remplir tous mes dossiers Google Drive dans Google Sheets. Même si le script fonctionne, je tombe sur 错误:超过最大执行时间
et la liste des résultats de mon dossier n'est pas encore complète.
Je n'arrive pas à comprendre comment gérer/corriger les délais d'attente d'exécution. J'ai recherché plusieurs sources mais je n'ai rien trouvé qui puisse m'aider à accélérer mon script.
Je m'attends à ce que le script s'exécute très rapidement et que la liste des milliers de dossiers "éventuellement" soit remplie en 1 minute maximum.
function generateFolderList() { var rootFolder = DriveApp.getRootFolder(); var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheetName = Utilities.formatDate(new Date(), "GMT+1", "yyyy-MM-dd HH:mm:ss"); var newSheet = spreadsheet.insertSheet(sheetName); newSheet.getRange("A1:N1").setValues([["structure_level", "parent_folder", "folder_name", "folder_description", "folder_id", "folder_url", "owner_email", "sharing_access", "sharing_permissions", "mime_type", "starred_status", "trashed_status", "date_created", "last_updated"]]); listFolders(rootFolder, "", newSheet, 1); } function listFolders(folder, parentName, sheet, level) { var folderName = folder.getName(); var description = folder.getDescription(); var folderId = folder.getId(); var url = folder.getUrl(); var owner = folder.getOwner().getEmail(); var sharingAccess = folder.getSharingAccess(); var sharingPermission = folder.getSharingPermission(); var mimeType = "folder"; var starred = folder.isStarred(); var trashed = folder.isTrashed(); var dateCreated = folder.getDateCreated(); var lastUpdated = folder.getLastUpdated(); var rowData = [level, parentName, folderName, description, folderId, url, owner, sharingAccess, sharingPermission, mimeType, starred, trashed, dateCreated, lastUpdated]; sheet.appendRow(rowData); var subFolders = folder.getFolders(); level++; while (subFolders.hasNext()) { var subFolder = subFolders.next(); listFolders(subFolder, folderName, sheet, level); } }
Google Sheets avec Apps Script est ici.
Votre script d'application écrit dans la feuille de calcul à mesure que chaque dossier ou sous-dossier apparaît. Au lieu de cela, vous devez collecter les informations dans un tableau, puis écrire l'intégralité du tableau dans une feuille de calcul. Essayez ceci, même si au départ certaines des valeurs des cellules sont des objets plutôt que des chaînes, cela ne fonctionnera donc pas tant que vous n'aurez pas décidé quelle propriété de ces objets vous souhaitez capturer. Je viens d'utiliser
toString()
.Références