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.GetScriptContextdevuelve un objetoSpssScriptContextque proporciona valores para que los utilice el autoscript.- El método
GetOutputItemdel objetoSpssScriptContextdevuelve 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
GetScriptContextdevolverá un valor deNone. - Dada la lógica
if-elseen este ejemplo, incluiría el código específico del autoscript en la cláusulaelse. Cualquier código que no se ejecute en el contexto de un autoscript se incluirá en la cláusulaif. Por supuesto, puede incluir también código que se ejecute en ambos contextos.