Formula nello script jslHo una tabella a colonna singola di tipo numerico, voglio aggiungere una colonna e fornire una formula che controlli ogni cella della prima colonna con un nome di variabile passato nello script,
mycol << Nuova colonna ("belowCount", Numerico, Formula(If( col_to_check < limit_val, 1, 0 ) );
mycol è una tabella dati a colonna singola e col_to_check è la prima colonna di riferimento e limit_val è una variabile
Quando apro la tabella la formula non è in grado di prendere la prima colonna
Ho anche provato a usare: Column(1), Column(1) e ho anche usato la funzione Expr che non sono di alcuna utilità
Automazione e scriptingAccesso ai datiRe: Formula nello script jslSintassi corretta:
Eval(
Eval Expr(
mycol << New Column( "belowCount",
Numeric,
Formula( If( Expr( Name Expr( As Column( col_to_check ) ) ) < Expr( limit_val ), 1, 0 ) )
)
)
)
Re: Formula nello script jslInnanzitutto, la formula di esempio non aveva abbastanza parentesi di chiusura, quindi potrebbe generare un errore. In secondo luogo, il tuo "col_to_check" potrebbe aver richiesto un ":" davanti, a meno che non fosse un nome di variabile della colonna o fosse esattamente lo stesso, sia ortografico che con le stesse maiuscole/minuscole.
Di seguito è riportato ciò che sono riuscito a utilizzare e che credo abbia fatto proprio quello che cercavi. Ho utilizzato Eval ed Eval Expr all'inizio della riga della nuova colonna per valutare la variabile necessaria per creare la colonna.
names default to here(1);
mycol = current data table();
limit_val = 5;
eval(eval expr(mycol << New Column ("belowCount", Numeric, Formula(If( :col_to_check < expr(limit_val), 1, 0 ) ))));
Re: Formula nello script jslDovrai valutare le variabili in formule. Questo è ancora un buon riferimento: inserisci un'espressione in un'altra usando Eval Insert, Eval Expr, Parse e Substitute (ho pensato che avrebbe bisogno di qualche aggiornamento). Ecco un'opzione che usa Eval(Substitute()) (per un caso semplice come questo, userei Eval(EvalExpr()) che hogi ha dimostrato).
Names Default To Here(1);
new_col = Eval(Substitute(
Expr(mycol << New Column("belowCount", Numeric,
Formula(If(col_to_check < _limit_val_, 1, 0))
)),
Expr(col_to_check), Name Expr(AsColumn(mycol, 1)),
Expr(_limit_val_), limit_val
));
E un esempio completo
Names Default To Here(1);
limit_val = 5;
mycol = New Table("Untitled",
Add Rows(10),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Set Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
);
new_col = Eval(Substitute(
Expr(mycol << New Column("belowCount", Numeric,
Formula(If(col_to_check < _limit_val_, 1, 0))
)),
Expr(col_to_check), Name Expr(AsColumn(mycol, 1)),
Expr(_limit_val_), limit_val
));
