こんにちは、みんな、
私はスクリプトのばか者であり、簡単な作業を達成するための手が必要です。 ユーザーが単一のディレクトリを選択し、そのディレクトリ内でCSVファイルを探し、それらのファイルを単一のJMPデータテーブルに追加/連結することを可能にするスクリプトが必要です。 今のところ、ユーザーがスクリプトを実行するたびに、この「マスターデータテーブル」がディレクトリ内のCSVファイルで再構築されるのであれば問題ありません。
私はいくつかの調査をして、常駐するスーパーユーザーの天才txnelsonからその仕事を成し遂げるべき何かを見つけました、しかし、私がそれを実行するとき、私はエラーを受け取り、私はなぜ理解しません。 スクリプト:
Names Default To Here( 1 );
// Setup an empty table to start to concatenate other tables to
dtbase = New Table( "Base Table" );
// Have the user select the starting folder
dirpath = Pick Directory( "Pick the Top Level Directory" );
// Get all of the files in all of the folders that are under the picked folder
TheFileList = Files In Directory( dirpath, "recursive" );
// Go through all of the files and read in append those that meet your
// requirement. You will need to amend the IF statement to meet your criteria
For( i = 1, i <= N Items( TheFileList ), i++,
If( Uppercase( Word( -1, TheFileList, "." ) ) == "CSV" & Is File( dirpath || TheFileList ) == 1,
dt = Open( dirpath || TheFileList );
dtbase = dtbase << concatenate( dt, append to first table( 1 ) );
Close( dt, nosave );
);
);スクリプトを実行すると、ディレクトリを選択するまで実行され、その後何も起こりません。 私はコードをステップスルーしましたが、ここでエラーがスローされます。
引数は 'Word'、Bad Argument(TheFileList)、Word / * ### * /( - 1、TheFileList、"。")の評価または文字評価に使用する必要があります。
この専門用語の意味がわかりません。 コードは意味があるようです。 なぜうまくいかないのですか?
ばかなことをありがとうと申し訳ありません。
あなたがそれを理解してくれてうれしい、トラブルを残念に思う、そして私は説明することができる。Jim Nelsonがそのコードを公開した直後に、JMPコミュニティは大きな転換を遂げました。あなたが遭遇した問題は私がまだ私の昔の中で捉えているものですブログ posts:時々変換プロセスは投稿に埋め込まれたJSLから添え字を落としました。(Jimの投稿をさらに見下ろすと、下付き文字を含む誰かが撮った写真を見ることができます...それは本当に数ヶ月間正しいです!)
@txnelson @Jeff_Perkinson
古文書
もう少し調査して問題を解決しました - TheFileListに割り当てられたDirectoryのFilesで拾ったさまざまなファイルを順に調べるには、かっこで囲んだ「i」が必要です。 どこから始めればいいのかさえもわからない - このような「項目」を見回すことができないとは思えなかった - 700ページ以上に及ぶJSLガイドのどこにこの関数があるのかわからない。 スクリプティングは不可能です。
If( Uppercase( Word( -1, TheFileList[i], "." ) ) == "CSV" & Is File( dirpath || TheFileList[i] ) == 1,
dt = Open( dirpath || TheFileList[i] );
dtbase = dtbase << concatenate( dt, append to first table( 1 ) );
Close( dt, nosave );
);
);