JMP Liveスペースにフォルダが存在するかどうかを確認するこんにちは、
JMP18 で JSL を使用すると、「フォルダーの作成」機能を使用して、個人用スペースと JMP Live の他のスペースの両方に新しいフォルダーを作成できます。個人用スペースにフォルダーを作成するときは、JSL の「フォルダーの検索」機能を使用して、まず既存のフォルダーをすべて一覧表示し、新しいフォルダーがすでに存在するかどうかを確認できます。その後、JSL を通じて一意のフォルダー名を確保できます。
JMP Live のデフォルトの動作では、フォルダー名に「 (n) 」を追加して一意のフォルダー名を作成します。「 n 」は同じ名前のフォルダーの数です。しかし、私はこれを避けたいと思っています。
私の個人用スペースではない他の JMP Live スペースでも、同じ動作が見られます。つまり、同一のフォルダー名には自動的に「 (n) 」が追加されます。ただし、「フォルダーの検索」機能にはスペース キーがパラメーターとして含まれていないため、私の個人用スペースではないスペースに既に存在するフォルダーを確認できません。
スペースキーをパラメータとして受け入れる唯一の関数は、「フォルダーの作成」関数であることがわかりました。 ここで関連する JSL ヘルプ ページを確認しましたが、この状況は説明されていません。
JMP Live スペースで既存のフォルダーを抽出するための推奨される方法は何ですか? それとも、ここで明らかなことを見逃しているのでしょうか?
ありがとう!
ポール
自動化とスクリプトRe: JMP Live スペースにフォルダーが存在するかどうかを確認するJMP Live についてはよく知りませんが、クエリのページ サイズを大きくしてみたり、Next() 呼び出しを利用したりしましたか? スクリプト インデックスには、JMP ヘルプ ページにはない例がいくつかある場合があります。

Re: JMP Live スペースにフォルダーが存在するかどうかを確認するありがとう、ジャルモ。
いいえ、まだ試していません。個人スペース内の既存のフォルダーを確認するのに適したコードを次に示します。
一意のフォルダー名を保証するコードは含まれていませんが (簡潔にするため)、簡単に作成できます。
私の投稿で述べたように、フォルダーの検索機能にはスペース キーがなく、デフォルトでは個人の JMP Live スペースでクエリが実行されるようです。
FindFoldersの PageSize パラメータを使用すると、長いフォルダ リスト (存在する場合) をページングできると思います。
// open the connection to JMP Live
liveConnection = New JMP Live( Connection( ) );
// get the user name from JMP Live
user = liveConnection << Get Username;
// get the existing folders already in my Space
getFolders = liveConnection << Find Folders( Publisher( user ) );
folderlist = getFolders << As Scriptable();
// Define the folder name you want to check or create
folderName = "new_folder_name";
// Define the space key of the Space you wish to create the folder in
spaceKey = "~"; // set key to "~" for your personal space or use the space key
// Initialize a variable to store the folder ID
folderID = .;
// Check if the folder exists. If it exists, folderID will contain the ID
// if the folder does not exist, folderID will contain a missing value
For( i = 1, i <= folderlist << Get Number Of Items, i += 1,
If( folderlist[i] << Get Title == folderName,
folderID = folderlist[i] << Get ID;
Show( folderID );
Break();
)
);
// If the folder does not exist, create it. folderID will contain the folder ID.
If( Is Missing( folderID ),
newFolder = liveConnection << Create Folder(
Space( spaceKey ), // Use "~" for personal space or specify the space key
Title( folderName ),
Description( "Automatically created folder." )
);
folderID = newFolder << As Scriptable;
folderID = folderID << Get ID;
);
Re: JMP Live スペースにフォルダーが存在するかどうかを確認するもう 1 つコメントがあります。フォルダーの検索機能を実行し、返されたリストを手動で検査すると、個人スペース内の各フォルダーのリスト エントリがあることがわかります。他のエントリはありません (フォルダーのある他のスペースにはアクセスできます)。
ポール
Re: JMP Live スペースにフォルダーが存在するかどうかを確認するこの部分をフォルダ検索から削除してみましたか?
Publisher( user )
Re: JMP Live スペースにフォルダーが存在するかどうかを確認するこんにちは、ジャーモさん
ご提案ありがとうございます。これが勝者となりました!
このコード (フォルダーの検索機能にパラメーターとして検索機能を追加):
// open the connection to JMP Live
liveConnection = OpenJMPLiveConnection( );
foldername = "foldername";
// get the existing folders already in my Space
getFolders = liveConnection << Find Folders( Search( foldername ) );
folderlist = getFolders << As Scriptable();
Show(folderlist);
フォルダーが個人スペース外に存在する場合、フォルダーの名前、説明、ID、および URL を返します。
ポール