カスタム アクションのワークフロー ビルダー エラー (エラー: 送信はスクリプト可能オブジェクトを期待しています)以下の JSL をワークフロー ビルダーのカスタム アクションとして追加しました。
For ループでエラーが発生しました (エラー: スクリプト可能オブジェクトを送信する必要があります)。
このスクリプトをスクリプト ウィンドウで実行すると、「%,」を含む列ヘッダーの名前が変更されます。
ワークフローをよりスムーズにするためにこれを解決する方法について何かアイデアはありますか?それ以外の場合は、このステップで停止して、ワークフロー ビルダーの外部で列の名前変更スクリプトを実行する必要があります。
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));
);
);
自動化とスクリプト作成Re: カスタム アクションのワークフロー ビルダー エラー (エラー: 送信はスクリプト可能オブジェクトを期待しています)尋ねてもいいでしょう列名の取得オプション「文字列」を使用します。
そうすれば、列名を再度尋ねる必要はありません。
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: カスタム アクションのワークフロー ビルダー エラー (エラー: 送信はスクリプト可能オブジェクトを期待しています)追伸:このリストの変数名は使用しないでください。
{名前、年齢、性別、身長、体重}

Re: カスタム アクションのワークフロー ビルダー エラー (エラー: 送信はスクリプト可能オブジェクトを期待しています)追加の (少し関連する) 質問:
リストエントリを呼び出すとなぜ変更するリストのエントリ?
の最初の部分を実行しています
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));
);
);列名の前にコロンを追加します。

そして、ためにループは期待どおりに実行されます *) 
*) うーん、それが機能するのは少し驚くべきことです - 特に。
contains(columnName[j], searchWords);
Re: カスタム アクションのワークフロー ビルダー エラー (エラー: 送信はスクリプト可能オブジェクトを期待しています)こんにちはホギ
ヒントをありがとう。
コードをワークフロー ビルダー ステップに追加しました。 エラーコードなしで実行されましたが、データテーブルには何も変化がありませんでした。
スクリプト ウィンドウで実行すると、両方のコード (「文字列」ありとなし) が正しく動作しますが、何らかの理由でワークフロー ビルダーでは動作しないことに注意してください。
代わりにこれを使用する必要があることがわかりました。
Column(dt, columnName[j])
ワークフロー ビルダーで動作するコードは次のとおりです。
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: カスタム アクションのワークフロー ビルダー エラー (エラー: 送信はスクリプト可能オブジェクトを期待しています)こんにちはホギ
ヒントをありがとう。
コードをワークフロー ビルダー ステップに追加しました。 エラーコードなしで実行されましたが、データテーブルには何も変化がありませんでした。
スクリプト ウィンドウで実行すると、両方のコード (「文字列」ありとなし) が正しく動作しますが、何らかの理由でワークフロー ビルダーでは動作しないことに注意してください。
代わりにこれを使用する必要があることがわかりました。
Column(dt, columnName[j])
ワークフロー ビルダーで動作するコードは次のとおりです。
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: カスタム アクションのワークフロー ビルダー エラー (エラー: 送信はスクリプト可能オブジェクトを期待しています)使用
dt << get column reference(cols);
安定した列参照を取得します。
ちょうどそこで見つけたんですセッション 6: データテーブルJSL スクリプターズ クラブ ウェビナーから。
(強くお勧めします!!)
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