Introducción:
Con un poco de secuencias de comandos, es fácil crear todo tipo de utilidades y herramientas divertidas para ahorrar tiempo con JMP. A veces, estas herramientas lo ayudan a ahorrar tiempo en la parte de análisis de su trabajo y, a veces, como este ejemplo, lo ayudan a ahorrar tiempo en los aspectos más mundanos del trabajo. Hace poco vi este excelente blog por @Craige_Hales y se preguntó si JMP podría usarse para crear una utilidad que muestre mapas de árboles de directorios, que son una forma práctica de ver qué archivos están ocupando espacio en un disco duro. Resulta que JMP puede hacer esto fácilmente. Por lo tanto, si bien hay muchas utilidades gratuitas que crean mapas de árbol de directorios, hacerlo usted mismo en JMP puede ser una forma divertida de aprender a escribir scripts. Siga leyendo para descubrir lo fácil que es en realidad.

No pierda su tiempo escribiendo código que JMP puede escribir por usted
Lo primero que se debe tener en cuenta al realizar secuencias de comandos en JMP es que ya está generando secuencias de comandos para casi todo en segundo plano. Como resultado, todo lo que necesita hacer es unir lo que JMP ya proporciona. De vez en cuando, es posible que aún necesite profundizar un poco más. La utilidad que se muestra a continuación combina un poco de codificación real con lo que ya hace JMP.
Paso 1: Hazlo en JMP
Para esta utilidad, necesitamos una lista de archivos en una carpeta seleccionada por el usuario (y cualquier archivo en cualquier subcarpeta), así como el tamaño de cada archivo. Una vez que tengamos eso, necesitamos un diagrama de árbol de cada archivo por tamaño. JMP tiene herramientas para ambas necesidades, a través de la importación de archivos múltiples y el generador de gráficos. Estos son los pasos para hacer la primera prueba de concepto sin ningún script:
- Obtener los datos: Seleccione Archivo... Importar varios archivos. Seleccioné el directorio de instalación de JMP, que es algo que todos deberían tener. Después de seleccionar el botón Incluir subcarpetas, haga clic con el botón derecho en la tabla del medio y seleccione Convertir en tabla de datos.


- Haciendo el mapa de árbol: Inicie Graph Builder, luego arrastre Nombre de archivo a la zona Y y Tamaño de archivo a la zona Tamaño. Seleccione Treemap desde la parte superior; a continuación, seleccione Squarify en el menú desplegable Diseño del panel de control.

Paso 2: Junte las piezas con secuencias de comandos
Ahora que hemos creado la utilidad sin secuencias de comandos, solo necesitamos armarla como una secuencia de comandos. Aquí hay un pequeño resumen de lo que necesitamos, junto con cómo hacerlo:
- Elegir la carpeta: Fácil. Copie/pegue del índice de secuencias de comandos para el comando Seleccionar directorio().
- Obtener tabla de Importación de archivos múltiples: Puede ser complicado. Necesitamos decirle a una plataforma que exporte parte de sí misma como una tabla de datos.
- Hacer un mapa de árbol: Fácil. Copiar/pegar del gráfico ya realizado.
En lugar de solo los dos pasos requeridos anteriormente al usar la GUI, ahora hay tres. Sin embargo, el nuevo paso de elegir una carpeta no es difícil. Mirando la entrada del índice de secuencias de comandos para el Seleccionar directorio comando, podemos copiar y pegar lo que hay en nuestro propio script, modificando el script solo un poco para almacenar el directorio elegido en la variable llamada carpeta .

Aquí está nuestro guión hasta ahora, con el Paso 1 completado (y un comentario al principio para recordarnos en tres años de qué se trataba todo esto):
//script to make treemap of directory structure
Names Default To Here( 1 );
folder = Pick Directory( "Select a directory" );
El siguiente paso es un poco complicado, pero es sencillo después de aprender cómo escribir la capa del informe (un enchufe descarado para el excelente y libre Curso de secuencias de comandos JMP ). Esencialmente, lo que debo hacer es exportar la tabla desde el medio de la ventana Importación de varios archivos a través de secuencias de comandos, en lugar de exportarla haciendo clic con el botón derecho. Para hacer esto, lanzo la plataforma Import Multiple Files a través de la GUI, uso la GUI para obtener el script para la plataforma, luego uso la GUI para averiguar cómo llama JMP a la tabla en el medio. Esto tomará tres pasos:
- Obtener secuencia de comandos para importar varios archivos: Seleccione Archivo... Importar varios archivos, elija una carpeta, seleccione Incluir subcarpetas y, a continuación, presione el botón de la ventana Guardar secuencia de comandos en secuencia de comandos. Ahora tenemos un script que podemos copiar/pegar al final de nuestro script principal.
- Modifique la secuencia de comandos Importar varios archivos: Reemplace la carpeta citada cerca de la parte superior con la palabra carpeta y cambiar el Datos de importacion sección desde el final hasta Crear ventana , ya que no queremos importar ningún dato. Agregar ganancia temporal = al comienzo de esta parte del script, para que podamos consultar esta ventana más adelante. Después de estos ajustes, el guión de esta sección se ve así:
tempwin = Multiple File Import(
<<SET folder=""></SET>
- Exporte la tabla de datos a través de secuencias de comandos en lugar de hacer clic con el botón derecho en la GUI: Lo sabemos tempwin ahora se refiere a toda la ventana Importar archivos múltiples, que tiene la tabla de tamaños de archivos, pero aún no sabemos cómo llama JMP a esa tabla. Para averiguarlo, debemos hacer clic con el botón derecho en la tabla en un lugar donde vemos el menú Editar (cerca del borde funciona; en el medio de la tabla se muestra el menú contextual de la tabla en lugar del menú Editar). Elija Editar...Mostrar estructura de árbol. Luego, en la ventana de estructura de árbol, haga clic en las entradas hasta que la tabla a la que queremos hacer referencia se resalte en la ventana de MFI, como se muestra a continuación.

Esto significa que TableBox(1) es lo que JMP llama a esta tabla. Ahora que sabemos eso, podemos decirle a JMP que haga cosas con esa tabla, como "Convertir en tabla de datos", y podemos hacerlo agregando la siguiente línea a nuestro script.dtFiles = tempwin[Table Box(1)] << Make into data table;
Ahora, todo lo que queda es copiar el script de Graph Builder que ya creamos (Red Triangle...Save Script...To Clipboard), pegarlo al final de nuestro script, ¡y listo! Todo nuestro script se ve así:
Names Default To Here( 1 );
folder = Pick Directory( "Select a directory" );
tempwin = Multiple File Import(
<<SET folder=""></SET>
3. Prueba y mejora
En este punto, el guión funciona según lo previsto, y podríamos terminar. Pero hay algunas cosas que podemos hacer para mejorar el guión. Primero, la sección Importación de archivos múltiples tiene muchas líneas adicionales que podemos eliminar. En segundo lugar, es una buena práctica estar seguros de qué tabla de datos queremos usar para una plataforma, por lo que agregar dtArchivos << before Graph Builder ayuda a garantizar que no tengamos problemas si tenemos varias tablas de datos abiertas al ejecutar este script más adelante. Una vez que hemos realizado estos cambios, la secuencia de comandos se ve mucho más corta y fácil de comprender; en realidad, son solo unos pocos pasos simples unidos:
Names Default To Here( 1 );<BR />
folder = Pick Directory( "Select a directory" );
tempwin = Multiple File Import(
<<SET folder=""></SET>
Conclusión
Algunos puntos clave son apropiados para enumerar:
- JMP hace la mayor parte del trabajo por usted al crear secuencias de comandos.
- Obtener datos de ventanas que JMP ya crea es una buena forma de convertir JMP en herramientas que facilitan la vida.
- Quizás lo mejor de todo es que no es necesario detenerse aquí.
Esta herramienta podría modificarse fácilmente para agregar una forma de abrir archivos/carpetas seleccionados, colorear por fecha para encontrar archivos antiguos grandes, organizar por carpeta/subcarpeta o cualquier otra modificación y mejora.