Ciao a tutti,
Sono un idiota scripting e ho bisogno di una mano per realizzare un compito semplice. Ho bisogno di uno script che permetta a un utente di selezionare una singola directory, di cercare i file CSV nella directory e di accodare / concatenare i file in un singolo datatable di JMP. Per ora, va bene se questo "master datatable" viene ricostruito con i file CSV nella directory ogni volta che l'utente esegue lo script.
Ho fatto qualche ricerca e ho scoperto qualcosa dal genio resident di superutente txnelson che dovrebbe portare a termine il compito, ma quando lo eseguo, ricevo un errore e non capisco perché. Il copione:
Names Default To Here( 1 );
// Setup an empty table to start to concatenate other tables to
dtbase = New Table( "Base Table" );
// Have the user select the starting folder
dirpath = Pick Directory( "Pick the Top Level Directory" );
// Get all of the files in all of the folders that are under the picked folder
TheFileList = Files In Directory( dirpath, "recursive" );
// Go through all of the files and read in append those that meet your
// requirement. You will need to amend the IF statement to meet your criteria
For( i = 1, i <= N Items( TheFileList ), i++,
If( Uppercase( Word( -1, TheFileList, "." ) ) == "CSV" & Is File( dirpath || TheFileList ) == 1,
dt = Open( dirpath || TheFileList );
dtbase = dtbase << concatenate( dt, append to first table( 1 ) );
Close( dt, nosave );
);
);Quando eseguo lo script, viene eseguito finché non seleziono la directory, quindi non succede nulla. Ho passato il codice e qui è dove viene generato l'errore:
argomento dovrebbe essere carattere in accesso o valutazione di 'Word', Bad Argument (TheFileList), Word / * ### * / (- 1, TheFileList, ".")
Non capisco cosa significhi questo gergo. Il codice sembra avere un senso. Perché non funzionerà?
Grazie e scusa per essere un idiota.
Sono contento che l'abbia capito, mi dispiace per il disturbo, e posso spiegare. Poco dopo che Jim Nelson ha pubblicato quel codice, la community di JMP ha subito una conversione importante. Il problema che hai incontrato è uno che sto ancora catturando nel mio vecchio blog post: a volte il processo di conversione ha fatto cadere le iscrizioni da JSL incorporate in un post. (Se guardi più in basso nel post di Jim, puoi vedere una foto catturata da qualcuno che include l'indice ... era davvero giusto per alcuni mesi!)
@txnelson @Jeff_Perkinson
post antico
Risolto il problema effettuando qualche altra ricerca: immagino ci sia bisogno di un po 'di "i" racchiuso tra parentesi per scorrere i diversi file raccolti da Files in Directory, che è stato assegnato a TheFileList. Non so nemmeno da dove cominciare - non avevo idea di poter scorrere tra "oggetti" come questo - non saprei nemmeno dove trovare questa funzione nella guida JSL della pagina 700 +. Lo scripting è impossibile.
If( Uppercase( Word( -1, TheFileList[i], "." ) ) == "CSV" & Is File( dirpath || TheFileList[i] ) == 1,
dt = Open( dirpath || TheFileList[i] );
dtbase = dtbase << concatenate( dt, append to first table( 1 ) );
Close( dt, nosave );
);
);