Iniciación a los scripts automáticos en Python

Los autoscripts son scripts que se ejecutan automáticamente cuando se desencadenan mediante la creación de partes específicas de salida de procedimientos seleccionados y normalmente requieren una referencia al objeto que ha desencadenado el script. También pueden requerir una referencia al documento de salida asociado y posiblemente al índice del elemento de salida en el documento de salida. Estos valores se obtienen del objeto SpssScriptContext , tal como se muestra en este ejemplo de un autoscript que transpone las filas y columnas de una tabla dinámica.

import SpssClient
SpssClient.StartClient()

SpssScriptContext = SpssClient.GetScriptContext()
SpssOutputItem = SpssScriptContext.GetOutputItem()
SpssPivotTable = SpssOutputItem.GetSpecificType()
SpssPivotMgr = SpssPivotTable.PivotManager()
SpssPivotMgr.TransposeRowsWithColumns()

SpssClient.StopClient()
  • SpssClient.GetScriptContext devuelve un objeto SpssScriptContext que proporciona valores para que los utilice el autoscript.
  • El método GetOutputItem del objeto SpssScriptContext devuelve el elemento de salida que ha desencadenado el autoscript actual; en este ejemplo, la tabla dinámica cuyas filas y columnas se van a transponer.

Aunque no se utiliza en este ejemplo, el método GetOutputDoc del objeto SpssScriptContext devuelve el documento de salida asociado y el método GetOutputItemIndex devuelve el índice (en el documento de salida asociado) del elemento de salida que ha desencadenado el autoscript.

La información general sobre autoscripts está disponible en Core System > Scripting Facility en el sistema de ayuda.

Detección de la ejecución de un script como autoscript

Utilizando el método GetScriptContext , puede detectar cuándo se ejecuta un script como autoscript. De esta forma podrá codificar un script para que funcione en cualquier contexto (autoscript o no). Este sencillo script de ejemplo ilustra esta situación.

import SpssClient
SpssClient.StartClient()

SpssScriptContext = SpssClient.GetScriptContext()
if SpssScriptContext == None:
   print("I'm not an autoscript")
else:
   print("I'm an autoscript")

SpssClient.StopClient()
  • Cuando un script no se ejecuta como autoscript, el método GetScriptContext devolverá un valor de None.
  • Dada la lógica if-else en este ejemplo, incluiría el código específico del autoscript en la cláusula else . Cualquier código que no se ejecute en el contexto de un autoscript se incluirá en la cláusula if . Por supuesto, puede incluir también código que se ejecute en ambos contextos.