Introduzione:
Con un po' di scripting, è facile creare tutti i tipi di utilità e strumenti divertenti per risparmiare tempo con JMP. A volte, questi strumenti ti aiutano a risparmiare tempo nella parte di analisi del tuo lavoro e, a volte, come questo esempio, ti aiutano a risparmiare tempo negli aspetti più banali del lavoro. ho visto di recente questo eccellente blog di @Craige_Hales e si è chiesto se JMP potesse essere utilizzato per creare un'utilità per mostrare mappe ad albero di directory, che sono un modo pratico per visualizzare quali file occupano spazio su un disco rigido. Si scopre che JMP può farlo facilmente. Quindi, mentre ci sono molte utilità freeware che creano mappe ad albero di directory, farlo da soli in JMP può essere un modo divertente per imparare lo scripting. Continua a leggere per scoprire quanto sia facile in realtà.

Non perdere tempo a scrivere codice che JMP può scrivere per te
La prima cosa da tenere a mente quando si esegue lo scripting in JMP è che sta già eseguendo lo scripting per quasi tutto ciò che è in background. Di conseguenza, tutto ciò che devi fare è mettere insieme ciò che JMP fornisce già. Occasionalmente, potresti ancora aver bisogno di scavare un po' più a fondo. L'utilità mostrata di seguito mescola un po' di codice effettivo con ciò che JMP già fa.
Passaggio 1: fallo in JMP
Per questa utilità, abbiamo bisogno di un elenco di file in una cartella selezionata dall'utente (e di tutti i file in eventuali sottocartelle), nonché della dimensione di ciascun file. Una volta che lo abbiamo, abbiamo bisogno di una mappa ad albero di ogni file per dimensione. JMP dispone di strumenti per entrambe queste esigenze, tramite Multiple File Import e Graph Builder. Ecco i passaggi per realizzare la prima prova di concetto senza script:
- Ottenere i dati: Selezionare File...Importa più file. Ho selezionato la directory di installazione di JMP, che tutti dovrebbero avere. Dopo aver selezionato il pulsante Includi sottocartelle, fai clic con il pulsante destro del mouse sulla tabella al centro e seleziona Trasforma in tabella dati.


- Creazione della mappa ad albero: Avvia Graph Builder, quindi trascina File Name nella zona Y e File Size nella zona Size. Seleziona Treemap dall'alto; quindi seleziona Squarify dal menu a discesa Layout nel pannello di controllo.

Passaggio 2: metti insieme i pezzi con lo scripting
Ora che abbiamo creato l'utility senza script, dobbiamo solo metterla insieme come script. Ecco un piccolo schema di ciò di cui abbiamo bisogno, insieme a come procedere:
- Scegli cartella: Facile. Copia/incolla dall'indice di scripting per il comando Pick Directory().
- Ottieni la tabella dall'importazione di più file: Potrebbe essere complicato. Dobbiamo dire a una piattaforma di esportare parte di se stessa come tabella di dati.
- Crea una mappa ad albero: Facile. Copia/incolla dal grafico già realizzato.
Invece dei soli due passaggi richiesti in precedenza quando si utilizzava la GUI, ora ce ne sono tre. Tuttavia, il nuovo passaggio della scelta di una cartella non è difficile. Guardando la voce Scripting Index per il file Scegli Rubrica comando, possiamo copiare e incollare ciò che c'è nel nostro script, modificando solo un po' lo script per memorizzare la directory scelta nella variabile chiamata cartella .

Ecco il nostro script finora, con il passaggio 1 completato (e un commento all'inizio per ricordarci in tre anni di cosa si trattava):
//script to make treemap of directory structure
Names Default To Here( 1 );
folder = Pick Directory( "Select a directory" );
Il passaggio successivo è un po' complicato, ma è semplice dopo l'apprendimento come creare uno script per il livello di report (una spina sfacciata per l'eccellente e gratuito Corso di scripting JMP ). In sostanza, quello che devo fare è esportare la tabella dal centro della finestra Importazione file multipli tramite script, invece di esportarla facendo clic con il pulsante destro del mouse. Per fare ciò, avvio la piattaforma Import Multiple Files tramite la GUI, utilizzo la GUI per ottenere lo script per la piattaforma, quindi utilizzo la GUI per scoprire come JMP chiama la tabella nel mezzo. Ciò richiederà tre passaggi:
- Ottieni lo script per l'importazione di più file: Selezionare File...Importa più file, scegliere una cartella, selezionare Includi sottocartelle, quindi premere il pulsante della finestra Salva script in script. Ora abbiamo uno script che possiamo copiare/incollare alla fine del nostro script principale.
- Modifica lo script Importa più file: Sostituisci la cartella citata nella parte superiore con la parola cartella e cambia il Importa dati sezione dalla fine a Crea finestra , poiché non vogliamo effettivamente importare alcun dato. Aggiungere tempwin = all'inizio di questa parte dello script, in modo da poter fare riferimento a questa finestra in seguito. Dopo queste modifiche, lo script per questa sezione è simile al seguente:
tempwin = Multiple File Import(
<<SET folder=""></SET>
- Esporta la tabella dei dati tramite script anziché facendo clic con il pulsante destro del mouse nella GUI: Lo sappiamo tempwin ora si riferisce all'intera finestra Importa più file, che contiene la tabella delle dimensioni dei file, ma non sappiamo ancora come JMP chiama quella tabella. Per scoprirlo, dobbiamo fare clic con il tasto destro sulla tabella stessa in un punto in cui vediamo il menu Modifica (vicino al bordo funziona; al centro della tabella mostra il menu contestuale della tabella invece del menu Modifica). Scegliere Modifica...Mostra struttura ad albero. Quindi, nella finestra Struttura ad albero, cliccare sulle voci fino a quando la Tabella a cui si vuole fare riferimento non viene evidenziata nella finestra MFI, come mostrato di seguito.

Ciò significa che TableBox(1) è ciò che JMP chiama questa tabella. Ora che lo sappiamo, possiamo dire a JMP di fare cose con quella tabella, come "Crea tabella dati", e possiamo farlo aggiungendo la riga sottostante al nostro script.dtFiles = tempwin[Table Box(1)] << Make into data table;
Ora, non resta che copiare lo script da Graph Builder che abbiamo già creato (Triangolo rosso...Salva script...Negli Appunti), incollarlo alla fine del nostro script e abbiamo finito! Il nostro intero script ha questo aspetto:
Names Default To Here( 1 );
folder = Pick Directory( "Select a directory" );
tempwin = Multiple File Import(
<<SET folder=""></SET>
3. Testare e migliorare
A questo punto, la sceneggiatura funziona come previsto e potremmo aver finito. Ma ci sono alcune cose che possiamo fare per migliorare la sceneggiatura. Innanzitutto, la sezione Importazione di più file ha molte righe extra che possiamo eliminare. In secondo luogo, è una buona pratica essere sicuri di quale tabella di dati vogliamo utilizzare per una piattaforma, quindi aggiungere dtFiles << before Graph Builder aiuta a garantire che non incontreremo problemi se abbiamo più tabelle di dati aperte quando eseguiamo questo script in un secondo momento. Dopo aver apportato queste modifiche, lo script sembra molto più breve e più facile da comprendere: in realtà sono solo pochi semplici passaggi messi insieme:
Names Default To Here( 1 );<BR />
folder = Pick Directory( "Select a directory" );
tempwin = Multiple File Import(
<<SET folder=""></SET>
Conclusione
È opportuno elencare alcuni aspetti chiave:
- JMP svolge la maggior parte del lavoro durante la creazione di script.
- Ottenere dati da finestre che JMP già crea è un buon modo per estendere JMP a strumenti che semplifichino la vita.
- Forse la cosa migliore è che non devi fermarti qui.
Questo strumento può essere facilmente modificato per aggiungere un modo per aprire file/cartelle selezionati, colorare per data per trovare vecchi file di grandi dimensioni, organizzare per cartella/sottocartella o qualsiasi numero di altre modifiche e miglioramenti.