Workflow-Builder-Fehler für benutzerdefinierte Aktion (Fehler: Send Expects Scriptable Object)Ich habe die JSL unten als benutzerdefinierte Aktion im Workflow-Builder hinzugefügt.
Der Fehler ist in der For-Schleife aufgetreten (Fehler: Send Expects Scriptable Object).
Beim Ausführen dieses Skripts im Skriptfenster funktioniert es ordnungsgemäß, Spaltenüberschriften umzubenennen, die „%,“ enthalten.
Haben Sie eine Idee, wie Sie dieses Problem lösen können, um den Arbeitsablauf reibungsloser zu gestalten? Andernfalls müssen Sie bei diesem Schritt anhalten, um das Skript zur Spaltenumbenennung außerhalb des WorkFlow Builders auszuführen.
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));
);
);
Automatisierung und SkripterstellungBetreff: Workflow-Builder-Fehler für benutzerdefinierte Aktion (Fehler: Send Expects Scriptable Object)Du könntest fragen Spaltennamen abrufen mit der Option „String“.
Dann müssen Sie nicht noch einmal nach dem Spaltennamen fragen:
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));
);
);Betreff: Workflow-Builder-Fehler für benutzerdefinierte Aktion (Fehler: Send Expects Scriptable Object)PS: Verwenden Sie keine Variablennamen aus dieser Liste:
{ Name , Alter, Geschlecht, Größe, Gewicht}


Betreff: Workflow-Builder-Fehler für benutzerdefinierte Aktion (Fehler: Send Expects Scriptable Object)Zusatzfrage (leicht verwandt):
Warum funktioniert der Aufruf eines Listeneintrags? ändern der Listeneintrag?
Ausführen des ersten Teils von
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));
);
);fügt Doppelpunkte vor den Spaltennamen hinzu:

und dann die für Schleife läuft wie erwartet *) 
*) Hmm, ein bisschen überraschend, dass es funktioniert - vor allem.
contains(columnName[j], searchWords);
Betreff: Workflow-Builder-Fehler für benutzerdefinierte Aktion (Fehler: Send Expects Scriptable Object)Hallo Hogi
Danke für den Tipp.
Ich habe Ihren Code zum Workflow Builder-Schritt hinzugefügt. Es wurde ohne Fehlercode ausgeführt, aber an der Datentabelle hat sich nichts geändert.
Wir haben festgestellt, dass unser beide Codes (mit und ohne „String“) ordnungsgemäß funktionieren, wenn sie mit dem Skriptfenster ausgeführt werden, aber irgendwie funktioniert er nicht im WorkFlow Builder.
Ich finde heraus, dass wir stattdessen dies verwenden müssen.
Column(dt, columnName[j])
Hier ist der Code, der mit Workflow Builder funktioniert.
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));
);
);
Betreff: Workflow-Builder-Fehler für benutzerdefinierte Aktion (Fehler: Send Expects Scriptable Object)Hallo Hogi
Danke für den Tipp.
Ich habe Ihren Code zum Workflow Builder-Schritt hinzugefügt. Es wurde ohne Fehlercode ausgeführt, aber an der Datentabelle hat sich nichts geändert.
Wir haben festgestellt, dass unser beide Codes (mit und ohne „String“) ordnungsgemäß funktionieren, wenn sie mit dem Skriptfenster ausgeführt werden, aber irgendwie funktioniert er nicht im WorkFlow Builder.
Ich finde heraus, dass wir stattdessen dies verwenden müssen.
Column(dt, columnName[j])
Hier ist der Code, der mit Workflow Builder funktioniert.
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));
);
);Betreff: Workflow-Builder-Fehler für benutzerdefinierte Aktion (Fehler: Send Expects Scriptable Object)Verwenden
dt << get column reference(cols);
um stabile Spaltenreferenzen zu erhalten.
Ich habe es gerade darin gefunden Sitzung 6: Datentabellen aus den Webinaren des JSL Scripters Club.
(sehr empfehlenswert!!)
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