Javascript, HTML, CSS e... !
0 commenti

Argomento non valido: q

Invalid argument: q

Tra i metodi della Classe Drive fanno parte serachFiles e searchFolder, per ottenere rispettivamente una raccolta di tutti i file e di tutte le cartelle, nell'unità dell'utente, corrispondenti ai criteri di ricerca specificati.

I criteri sono stringhe passate come parametro alle funzioni sopra indicate (per maggiori informazioni sui criteri di ricerca di file e cartelle rimando alla documentazione ufficiale).
Un uso improprio di questi criteri può tuttavia generare l'errore 'Ivalid argument: q' (Argomento non valido: q), come mostrato in Fig. 1:



invalid argument q

Fig. 1 - Argomento non valido: q


Per poter replicare tale errore basterà eseguire il seguente codice:

function searchFoldersContainsWord() {
  var folder_name = 'test';
  var folders = DriveApp.searchFolders("name contains '" + folder_name + "'"); // <-- ERRATO!
  while (folders.hasNext()) {
    var folder = folders.next();
    Logger.log(folder.getName() + ': ' + folder.getId());
  }
}

Quando viene restituito tale errore non significa che siamo di fronte ad una ricerca vuota bensì che il criterio di ricerca non è formalmente corretto.
Osservando il codice appena proposto sembrerebbe che non siano presenti incongruenze nella stringa di ricerca: name containes 'test'.

Tuttavia, nel caso specifico, è proprio il termine name ad essere la causa scatenante dell'eccezione.
Provando infatti a sostituire name con title la funzione viene correttamente eseguita e nel caso in cui siano presenti in Drive cartelle il cui nome contiene la parte di stringa definita sarà possibile osservare nel Log di Apps Script la relativa lista di nomi e di ID dei file:

// Modificare da:
var folders = DriveApp.searchFolders("name contains '" + folder_name + "'");

// a:
var folders = DriveApp.searchFolders("title contains '" + folder_name + "'");

Il codice funzionante, nel caso specifico, è pertanto il seguente:

function searchFoldersContainsWord() {
  var folder_name = 'test';
  var folders = DriveApp.searchFolders("title contains '" + folder_name + "'"); // <-- CORRETTO!
  while (folders.hasNext()) {
    var folder = folders.next();
    Logger.log(folder.getName() + ': ' + folder.getId());
  }
}

Mentre, nella situazione in cui il codice fosse eseguito senza che venisse passato alcun parametro alla funzione (ovvero una stringa di ricerca completamente vuota), l'errore ricevuto diventerebbe: Impossibile trovare il metodo searchFolders().

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

scrivi un commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]http://www.appsscript.it[/url] se devi riferirti ad un indirizzo web