JSL 4.0使用腳本編寫者俱樂部平台來討論 JSL 的新功能和未來改進是否合理?其目的是為了整理想法、告知大家新功能並宣傳未來的改進方案。
變革者:
實用/有趣的新功能:
錦上添花:
回覆:JSL 4.0我不知道多個使用者是否可以對主帖中的清單擁有寫入權限?
JMP19 中您最喜歡哪些改進?
還缺什麼?
哪些方法可以被視為「顛覆性創新」?
回覆:JSL 4.0嗨 Hogi,JMP 官方有沒有提供關於 JMP19 新 JSL 特性的概要介紹?我還沒看過任何文檔,目前還在摸索階段,測試 19.0.01 版本與我之前的版本(17.2 和 18.2)的對比。
在插件建構器中:
在過去十多年裡,我開發了幾個插件工具欄,它們大多使用自訂圖示(jpg 等),這些圖示儲存在網路磁碟機上。由於我的程式碼和設定方式,每次打開 JMP 視窗時,JMP 都需要載入所有這些圖標,因為 JMP 需要顯示這些工具列。等我意識到問題所在時(當時腳本數量已經達到 40 個左右),打開 JMP 視窗可能需要幾秒鐘的時間。這個問題逐漸出現,是因為在第一年後,我只是偶爾添加一些新腳本。
現在,JMP19 新增了一個插件建構器,它會自動將 JSL 和圖示檔案包含在插件中。因此,當使用者安裝插件時,JSL 和圖示圖像會被複製到本機主資料夾。但我已經設定好,JMP 用戶(使用 19 及更高版本)可以在 JMP 檢測到伺服器 .jmpaddin 檔案更新時自動偵測到插件已更新,並在重新啟動 JMP 時收到更新提示。這個過程與我之前的方法略有不同,但它恰好解決了我的問題……我最近幾個月才找到問題的根本原因。所以這對我很有幫助,但我懷疑我的情況比較特殊。不過在這個論壇可能不算罕見。感謝 JMP 支持團隊和開發人員的協助。
謝謝,
麥克風
回覆:JSL 4.0據我所知,目前還沒有發布說明(“包含所有詳細資訊”)。
簡要概述: JMP 新功能和發行說明
以及此頁面,其中包含有關安全更新的資訊: https://www.jmp.com/en/company/trust-center
因此,我認為在這裡提供一個簡要概述會很有幫助。
歡迎提出任何意見和提供其他功能的連結。
回覆:JSL 4.0插件 -
除了 JMP 中包含的標準「插件產生器」之外,還可以(應該!!!)使用
外掛程式管理器@Justin_Chilton -> 現在可透過 Marketplace 取得: 外掛程式管理器
https://community.jmp.com/t5/Learn-JMP-Events/Scripters-Club-Managing-Your-JMP-Add-Ins-with-Justin-Chilton/ev-p/887937

JMP19 新增功能:JMP 中直接包含更新檢查。
在先前的版本中,可以透過 UpdateCheck.jsl(來自外掛程式管理器)設定類似的功能。
有人有比較過這兩種方法的速度嗎?
例如,對於 40 個插件更新檢查,是透過 UpdateCheck 還是透過新功能進行檢查?
新函數是比較文件日期還是比較文件內容?
順便一提: @mikedriscoll
這是一個很有趣的想法,和您之前的想法非常相似:
企業加載項管理策略 (2025-US-30MP-2576) @MikeD_Anderson
所提出概念的重要差異在於:
包含「目前」版本腳本(和圖示?)的資料夾儲存在 OneDrive/Sharepoint 上,可透過同步資料夾在本機系統上存取。
回覆:JSL 4.0我根據 Justin 最初提供的更新功能編寫了自己的更新腳本,但還沒有與 19 版中的新方法進行比較測試。不過,JMP 的方法可能會更快,因為它會查找來源資料夾中的更新文件,而 Justin 的方法(至少我使用的方法)可能會因為元資料主文件的位置而有所延遲。就我幾次在 JMP 19 中收到更新插件的提示來看,它的速度感覺和我自己實現的差不多。
由於 19 版本中的新方法似乎基本上是在某個位置查找新文件,而不再與任何構建日期元數據關聯,雖然我總體上喜歡這種方法,但它無法真正控制“源文件夾”的定義……例如,如果我從下載文件夾拖入一個插件,它詢問我是否要檢查更新,它會將下載文件夾列為要檢查的源。此外,它無法區分插件的生產版本和測試版本,如果使用者檢查更新時使用的是從其他位置安裝的測試版本,那麼「來源」資料夾可能不正確。
我在此請求允許我們對這些內容進行編纂(主要是為了這個帖子,因為我們之前已經簡要討論過另一個願望清單項目)。
回覆:JSL 4.0@nathan-clark就我目前使用 JMP19 的插件建構器來看,情況並非如此。很遺憾,我現在沒有時間詳細記錄我的經驗,但我會簡單概述一下。不過我並非專家。我的目標是使用 JMP19 的方法,在不同的區域完全復刻我之前的共用磁碟機版本。
使用“檔案”->“新建”->“加載項”建立加載項。
透過新增腳本/圖示來設定插件。我的腳本/圖示都放在共用磁碟機上。
讓它自動更新檔案(在「包含檔案」標籤中),並在 JMP 啟動時檢查更新(在「常規」標籤中)。
另存為以在易於存取的位置建立新的 .jmpaddin 檔案。將其保留在該位置,以便其他人可以從該位置安裝。
其他 JMP 用戶將從該位置安裝,並且他們的 JMP 版本將檢查該位置以檢測更改。
當您想要編輯任何文件時,請開啟插件建構器/jmpaddin 文件,以便看到插件編輯器。然後對腳本進行編輯。之後,“儲存”按鈕應該會在插件建構器中顯示。或者,您也可以使用「另存為」功能,將外掛程式儲存為相同的名稱。如果您只是拖放更新後的腳本文件,或者在編輯完jsl文件後關閉它,然後再打開插件構建器,則不會看到保存選項。這是一個已報告給開發者的錯誤。
使用舊版 JMP 的使用者需要重新安裝 .jmpaddin 檔案來更新插件。如果 JMP19 使用者是從同一位置安裝的插件,系統應該會提示他們更新。我不知道如果透過電子郵件發送 .jmpaddin 檔案會發生什麼事…估計 JMP 之後就不知道在哪裡檢查更新了。
回覆:JSL 4.0@mikedriscoll ,你說的有道理。可惜的是,這依賴 JMP 的插件創建實作。我的插件數量太多了,而且現在所有插件都透過 GitHub 管理,這種方法無法擴展,所以我才要求在 addin.def 檔案中明確具體細節。
我認為 JMP19 在插件管理方面取得了一些不錯的進展,但從長遠來看,還需要提供更多選項來應對不同使用者/組織在插件管理方面所面臨的規模挑戰。我相信,如果 JMP 能進行一些更新,我就可以開始逐步淘汰我目前使用的一些插件更新基礎架構了。
回覆:JSL 4.0無論你喜不喜歡,令人遺憾的是,點擊後的反應速度比之前的 18 版本稍慢一些。當然,這取決於電腦配置,但我認為反應速度方面有明顯的差異。
回覆:JSL 4.0我還注意到,在 JMP 19 中,關於插件的一些事情可能會變得更加容易。
我最喜歡這種開發插件的方式:
- 在我的文件資料夾中的一個已解壓縮的資料夾中
- 要安裝它,我用 JMP 打開 .def 檔案。
- 我用文字編輯器編輯 .jmpcust 檔案(這有點棘手,但對我來說效果很好,因為我只需要做很少的更改)。
- 選單項目指的是此資料夾中的腳本
- 我可以直接測試/編輯此資料夾中的腳本(我發現這是一個很大的優勢,因為我發現透過選單複製和更新 .jmpaddin 中的檔案非常繁瑣、不必要且容易出錯)。
- 為了進行部署,我編寫了一個小型 PowerShell 腳本,該腳本會將插件打包並移動到其他使用者共享的位置(順便說一句,它還會建立一個舊版本的副本,以便在出現問題時可以執行回滾)。
回覆:JSL 4.0是的,我希望在腳本編寫者俱樂部討論未來的功能增強等問題,也就是說,這個主題可以作為討論的一部分,但不應該是唯一的討論主題。謝謝你的建議。
回覆:JSL 4.0@hogi如果能像我在願望清單裡建議的那樣改進錯誤處理,那將徹底改變遊戲體驗。至少在 17.1 版本中,錯誤處理機制並不統一,而且文件也不完善。目前(我認為 18.2 版本也是如此),`exception_msg()` 函數中似乎有兩種不同的錯誤訊息形式,而這些形式在腳本索引或其他任何文件中都沒有記錄。
錯誤訊息應該與語言無關,以便在錯誤處理中進行檢查;或者應該具有某種唯一的錯誤代碼,以便在錯誤處理程序中進行檢查。例如:
try (
<SOME action="https://community.jmp.com/">
,
<BR /> // we have to check for the exact message in all languages to handle a specific error:
<BR /> If (error_msg()[1] == "File not found" || error_msg()[1] == "Datei wurde nicht gefunden", // better would it be to have a language independent code // If (error_code() == 93 or better: ...== error_code["FileNotFound"] print("File not found: ");
<DO something="" because="" file="" was="" not="" found="">
, ... ); );
</DO>
</SOME>
Open 函數目前會傳回包含附加參數的列表項,其中包含一條錯誤訊息:
try(
open ("table");
,
Show(exception_msg());
//
// Returns in german language setting
// exception_msg() = {"Tabelle kann nicht geöffnet werden"(1, 2, "Open", Open /*###*/("table"))};
//
// Returns in english
// exception_msg() = {"Cannot open table"(1, 2, "Open", Open /*###*/("table"))};
);
這兩個論點都沒有任何文獻記載,或是我還沒找到相關資料。
我認為最好能傳回一個錯誤物件(類別格式),其中包含有關錯誤的所有訊息,例如:
try(
<ACTION>
<BR /> ,
<BR /> if (exception() << code == exception.FILENOTFOUND,
<BR /> Print( exception() << message );
<BR /> ...
</ACTION>
此外,還有 throw 函數,它雖然不錯,但似乎不支援 exception_msg() 中使用的參數。如果能將任何參數值傳遞給錯誤處理例程就更好了。
try(
throw("Error"(1,2));
,
Show (exception_msg());
// Arguments to the thrown "Error" are lost.
);
綜上所述,錯誤處理機制仍有改進空間。如果錯誤處理機制能夠改進,我將不勝感激。
回覆:JSL 4.0連結: 改進並記錄錯誤訊息
謝謝,我已經把它添加為“很酷/很有幫助的新功能”——一旦它進入前 10 名,就會把它移到“遊戲規則改變者”類別。
文件部分有綜合腳本索引。
按照「十大」的思路,我把它從「很酷/很有幫助」提升到「改變遊戲規則」。
更多候選人?
回覆:JSL 4.0您多久使用一次列聚合?多久使用一次具有複雜如果()表達式的「受限」列聚合?
請查看「需要填寫唯一條目數」部分
並投票: 列中位數(及其他):新增「位置」選項