2017-08-04 3 views
0

Ceci est mon code, le point est de passer dans un numéro de dossier et avoir log toutes les occurrences du nom de fichier donné dans ce dossier:Pourquoi getFolderbyId de Google Script n'accepte-t-il pas les variables sans erreur?

function SearchFiles(SourceID) 
{ 
    var source = DriveApp.getFolderById(SourceID); 
    var searchFor ='title contains "Desired File Name"'; 
    var names =[]; 
    var Dates=[]; 
    var files = source.searchFiles(searchFor); 
    while(files.hasNext()) 
    { 
    var file = files.next(); 
    var date = file.getDateCreated(); 
    Dates.push(date); 
    var name = file.getName(); 
    names.push(name); 
    } 

    for (var i=0;i<names.length;i++) 
    { 
    Logger.log(names[i]); 
    Logger.log(Dates[i]); 
    } 
} 

SearchFiles("ID Here"); 

Le problème est, lorsque ce code est exécuté, je reçois le erreur "Aucun élément avec l'ID donné n'a pu être trouvé, ou vous n'avez pas l'autorisation d'y accéder." malgré m'assurer que l'ID est correct et que j'ai les permissions correctes. Cependant, si je place l'ID correct directement dans la fonction getFolderById à la place de la variable, tout fonctionne correctement sans erreur. Qu'est-ce qui m'empêche d'utiliser la variable?

+1

La méthode 'getFolderById()' exige l'ID d'être un string. Si la fonction reçoit un ID qui est un entier, cela peut provoquer une erreur. Vérifiez le type de données: 'Logger.log ('typeof SourceID:' + typeof SourceID)' Ajoutez cette ligne de code, exécutez le code puis View the Logs. Si la variable SourceID n'est pas un type de données 'chaîne', c'est le problème. –

Répondre

1

Quelle est votre fonction? Je suppose que vous exécutez la fonction SearchFiles lorsque vous cliquez sur Exécuter. Appelez la fonction SearchFiles dans une autre fonction et exécuter cette fonction comme ci-dessous:

function myFunction() { 
    SearchFiles("Folder ID"); 
} 

function SearchFiles(SourceID) 
{ 
    var source = DriveApp.getFolderById(SourceID); 
    var searchFor ='title contains "Desired File Name"'; 
    var names =[]; 
    var Dates=[]; 
    var files = source.searchFiles(searchFor); 
    while(files.hasNext()) 
    { 
    var file = files.next(); 
    var date = file.getDateCreated(); 
    Dates.push(date); 
    var name = file.getName(); 
    names.push(name); 
    } 

    for (var i=0;i<names.length;i++) 
    { 
    Logger.log(names[i]); 
    Logger.log(Dates[i]); 
    } 
} 

Run myFunction et il devrait fonctionner comme prévu:

enter image description here

+0

Cela fonctionne parfaitement, merci! Je suppose que je pensais que l'appeler ci-dessous pourrait fonctionner pour cela, mais je suppose que non. –