Error del generador de flujo de trabajo para la acción personalizada (Error: Enviar espera un objeto programable)Agregué el JSL a continuación como acción personalizada en el generador de flujo de trabajo.
El error ocurrió en el bucle For (Error: Enviar espera un objeto programable).
Al ejecutar este script en la ventana Script, funciona correctamente para cambiar el nombre del encabezado de las columnas que contienen "%,".
¿Alguna idea sobre cómo resolver esto para que el flujo de trabajo sea más fluido? de lo contrario, debe detenerse en este paso para ejecutar el script de cambio de nombre de columna fuera de WorkFlow Builder.
dt = Current Data Table();
searchWords = "%, ";
columnName = dt << Get Column Names;
N = N Items( columnName );
For(j=1, j<= N, j++,
x = contains(columnName[j], searchWords);
name = Substr(columnName[j] << Get Name(), x+3);
If(x > 0,
columnName[j] << Set Name(Left(name, Length(name)-1));
);
);
Automatización y secuencias de comandosRe: Error del generador de flujo de trabajo para la acción personalizada (Error: Enviar espera un objeto programable)podrías preguntar Obtener nombres de columnas con la opción "Cadena".
Entonces no necesita volver a preguntar por el nombre de la columna:
dt = Current Data Table();
searchWords = "%, ";
columnName = dt << Get Column Names("String");
N = N Items( columnName );
For(j=1, j<= N, j++,
x = contains(columnName[j], searchWords);
If(x > 0,
name = Substr(columnName[j], x+3);
Column(columnName[j]) << Set Name(Left(name, Length(name)-1));
);
);Re: Error del generador de flujo de trabajo para la acción personalizada (Error: Enviar espera un objeto programable)PD: no use nombres de variables de esta lista:
{ nombre , edad, sexo, altura, peso}

Re: Error del generador de flujo de trabajo para la acción personalizada (Error: Enviar espera un objeto programable)Pregunta complementaria (ligeramente relacionada):
¿Por qué llamar a una entrada de lista alterar la entrada de la lista?
Ejecutando la primera parte de
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
searchWords = "%, ";
:sex << set name ("test%, SEX#");
columnName = dt << Get Column Names;
show(columnName);
columnName[1] << Get Name();
columnName[2] << Get Name();
columnName[3] << Get Name();
columnName[4] << Get Name();
columnName[5] << Get Name();
show(columnName);
N = N Items( columnName );
For(j=1, j<= N, j++,
x = contains(columnName[j], searchWords);
myName = Substr(columnName[j] << Get Name(), x+3);
If(x > 0,
columnName[j] << Set Name(Left(myName, Length(myName)-1));
);
);agrega dos puntos delante de los nombres de las columnas:

y luego el para el bucle se ejecuta como se esperaba *) 
*) hm un poco sorprendente que funcione - esp.
contains(columnName[j], searchWords);
Re: Error del generador de flujo de trabajo para la acción personalizada (Error: Enviar espera un objeto programable)hola hogi
Gracias por el consejo.
Agregué su código en el paso Workflow Builder. Se ejecutó sin código de error, pero nada ha cambiado en la tabla de datos.
Observé que nuestro código (con y sin "Cadena") funciona correctamente cuando se ejecuta con la ventana Script, pero de alguna manera no funciona en WorkFlow Builder.
Me imagino que necesitamos usar esto en su lugar.
Column(dt, columnName[j])
Aquí está el código que funciona con Workflow Builder.
searchWords = ", ";
columnName = dt << Get Column Names("String");
N = N Items( columnName );
For(j=1, j<= N, j++,
x = contains(columnName[j], searchWords);
colName = Substr(columnName[j], x+length(searchWords));
If(x > 0,
Column(dt, columnName[j]) << Set Name(Left(colName, Length(colName)-1));
);
);
Re: Error del generador de flujo de trabajo para la acción personalizada (Error: Enviar espera un objeto programable)hola hogi
Gracias por el consejo.
Agregué su código en el paso Workflow Builder. Se ejecutó sin código de error, pero nada ha cambiado en la tabla de datos.
Observé que nuestro código (con y sin "Cadena") funciona correctamente cuando se ejecuta con la ventana Script, pero de alguna manera no funciona en WorkFlow Builder.
Me imagino que necesitamos usar esto en su lugar.
Column(dt, columnName[j])
Aquí está el código que funciona con Workflow Builder.
searchWords = ", ";
columnName = dt << Get Column Names("String");
N = N Items( columnName );
For(j=1, j<= N, j++,
x = contains(columnName[j], searchWords);
colName = Substr(columnName[j], x+length(searchWords));
If(x > 0,
Column(dt, columnName[j]) << Set Name(Left(colName, Length(colName)-1));
);
);Re: Error del generador de flujo de trabajo para la acción personalizada (Error: Enviar espera un objeto programable)Usar
dt << get column reference(cols);
para obtener referencias de columna estables.
lo acabo de encontrar en Sesión 6: Tablas de datos de los seminarios web JSL Scripters Club.
(¡¡muy recomendable!!)
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols= dt << get column names();
colRefs = dt << get column reference(cols);
// {Column( "name" ), Column( "age" ), Column( "sex" ), Column( "height" ),Column( "weight" )}
// load another table
Open( "$SAMPLE_DATA/Big Class Families.jmp" );
//Column(cols[1]) << get name // doesn't work
colRefs[1] << get name; // still works