Come utilizzare il valore del mio ciclo For Each per generare nuovi script di tabellaSto eseguendo il loop sugli script delle tabelle dati esistenti e creando un duplicato di ogni script con alcune modifiche.
Voglio inserire i nomi degli script di tabella negli script di tabella generati.
L'output che ottengo inserisce semplicemente la parola "script" negli script della tabella generata anziché il valore effettivo della stringa in scriptList
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
scriptList = dt << Get Table Script Names;
For Each({script}, scriptList,
If ((!Contains(scriptList, "Run "||script)),
dt << New Script("Run "||script,dt=Current DataTable();w=eval(dt << get table property((script)));w << set window title((script)));
);
);
Automazione e scriptingRe: Come utilizzare il valore del mio ciclo For Each per generare nuovi script di tabellaUn po' di gestione dell'espressione combinata con Inserisci un'espressione in un'altra usando Eval Insert, Eval Expr, Parse e Substitute dovrebbe funzionare. Ecco un esempio:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
For Each({script_name}, dt << Get Table Script Names,
If((!Contains(script_name, "Run " || script_name)),
script_expr = dt << Get Script(script_name);
Eval(Substitute(
Expr(
dt << New Script("Run " || _script_name_,
Local({w},
w = _new_script_;
w << set window title(_script_name_)
)
);
),
Expr(_script_name_), script_name,
Expr(_new_script_), Name Expr(script_expr)
))
)
);Re: Come utilizzare il valore del mio ciclo For Each per generare nuovi script di tabellagrazie che funziona davvero bene
Re: Come utilizzare il valore del mio ciclo For Each per generare nuovi script di tabellaCiao, suppongo di non aver specificato come tale nella mia domanda originale, ma la tua soluzione ha cambiato il comportamento del mio script poiché copia il codice dello script di destinazione nel nuovo script. Volevo mantenere il riferimento solo alla sceneggiatura originale. Ecco lo script finale che sto usando, forse altre persone potrebbero trovarlo utile.
dt = Current Data Table();
scriptList = dt << Get Table Script Names;
For Each( {script_name}, scriptList,
If( (!Contains( script_name, "Run" ) & !Contains( scriptList, "Run " || script_name )),
Eval(
Substitute(
Expr(
dt << New Script(
"Run " || script_name,
dt = Current Data Table();
w = Eval( dt << get table property( script_placeholder ) );
w << set window title( script_placeholder );
)
),
Expr(script_placeholder), Char(script_name)
)
)
)
);Re: Come utilizzare il valore del mio ciclo For Each per generare nuovi script di tabellaJMP 14 nessun lavoro.
Re: Come utilizzare il valore del mio ciclo For Each per generare nuovi script di tabellaLa funzione For Each() è una nuova funzionalità in JMP 16.