Errore del generatore di flussi di lavoro per l'azione personalizzata (errore: l'invio prevede un oggetto con script)Ho aggiunto il JSL di seguito come azione personalizzata nel generatore di flussi di lavoro.
L'errore si è verificato nel ciclo For (Errore: Send Expects Scriptable Object).
Durante l'esecuzione di questo script nella finestra Script, funziona correttamente per rinominare l'intestazione delle colonne che contengono "%, ".
Qualche idea su come risolvere questo problema per rendere il flusso di lavoro più fluido? altrimenti, è necessario fermarsi a questo passaggio per eseguire lo script di ridenominazione delle colonne all'esterno di 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));
);
);
Automazione e scriptingRe: errore del generatore di flussi di lavoro per l'azione personalizzata (errore: l'invio prevede un oggetto scriptabile)Potresti chiedere Ottieni nomi di colonna con l'opzione "Stringa".
Quindi non è necessario chiedere nuovamente il nome della colonna:
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: errore del generatore di flussi di lavoro per l'azione personalizzata (errore: l'invio prevede un oggetto scriptabile)PS: non utilizzare nomi di variabili da questo elenco:
{ nome , età, sesso, altezza, peso}

Re: errore del generatore di flussi di lavoro per l'azione personalizzata (errore: l'invio prevede un oggetto scriptabile)Domanda aggiuntiva (leggermente correlata):
Perché chiamare una voce dell'elenco alterare la voce della lista?
Esecuzione della prima parte di
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));
);
);aggiunge i due punti davanti ai nomi delle colonne:

e poi il per il ciclo funziona come previsto *) 
*) hm un po' sorprendente che funzioni - esp.
contains(columnName[j], searchWords);
Re: errore del generatore di flussi di lavoro per l'azione personalizzata (errore: l'invio prevede un oggetto scriptabile)Ciao hoghi
Grazie per il consiglio.
Ho aggiunto il tuo codice nel passaggio del Workflow Builder. È stato eseguito senza codice di errore, ma non è cambiato nulla nella tabella dei dati.
Notato che entrambi i nostri codici (con e senza "String") funzionano correttamente quando vengono eseguiti con la finestra Script, ma in qualche modo non funzionano nel WorkFlow Builder.
Ho capito che dobbiamo usare questo invece.
Column(dt, columnName[j])
Ecco il codice che funziona 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: errore del generatore di flussi di lavoro per l'azione personalizzata (errore: l'invio prevede un oggetto scriptabile)Ciao hoghi
Grazie per il consiglio.
Ho aggiunto il tuo codice nel passaggio del Workflow Builder. È stato eseguito senza codice di errore, ma non è cambiato nulla nella tabella dei dati.
Notato che entrambi i nostri codici (con e senza "String") funzionano correttamente quando vengono eseguiti con la finestra Script, ma in qualche modo non funzionano nel WorkFlow Builder.
Ho capito che dobbiamo usare questo invece.
Column(dt, columnName[j])
Ecco il codice che funziona 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: errore del generatore di flussi di lavoro per l'azione personalizzata (errore: l'invio prevede un oggetto scriptabile)Utilizzo
dt << get column reference(cols);
per ottenere riferimenti di colonna stabili.
L'ho appena trovato dentro Sessione 6: Tabelle dati dai webinar del JSL Scripters Club.
(altamente raccomandato!!)
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