Make the Answer Button (the red triangle) your friend.Make the Answer Button (the red triangle) your friend.Make the Answer Button (the red triangle) your friend.Make the Answer Button (the red triangle) your friend.讓「應答」按鈕(紅色三角形)成為您的朋友。歡迎回到我的關於腳本編寫基礎知識的系列聯合管理計劃。 這是第三個條目一連串這是為您的工作而設計的。 如果您剛加入我們,您可能會想看看該系列的早期條目。 以下是一些連結:
看一看;它將幫助您解決即將發生的事情。
好吧,係好安全帶。 到目前為止,我們實際上還沒有使用任何程式碼(除非您計算 JSL 腳本索引)。 今天就結束了。 今天我們將使用 JSL 腳本視窗。 我知道這可能會讓你們中的一些人感到焦慮。 讓我們深呼吸一下,然後開始吧。
不要為了編寫腳本而編寫腳本!
老實說:短期內編碼並不是一個有效的過程。 對於一次性分析和圖形,拖放工具在投資回報率方面幾乎總是勝過編碼(某人進行開發活動的成本太大了)。 有些人堅持使用腳本,無論 GUI 解決方案是否更快。 我不知道為什麼,我不在他們的名單裡。 當工作流程非常困難或迂迴到使用 GUI 很容易出現錯誤時,我會考慮編碼。 當我要一遍又一遍地做某件事時,我也會考慮編碼,我可以透過自動化獲得的效率來證明時間的合理性。 這並不是說我編寫程式碼只是為了看看我是否能做點什麼。 或者我不會選擇更複雜的編碼方式只是為了學習新事物。 但這些情況只是例外,而不是規則。
現在,我的這種概括可能已經讓一些人感到不舒服了。 這種一攬子聲明的問題在於它非常黑白分明。 事實上,就像生活中的一切一樣,存在著一個灰色地帶,其中的價值主張是在點擊式解決方案和編碼之間猶豫不決。 灰色地帶也恰好是大多數有抱負的程式設計師發現自己的地方。 他們知道透過編寫腳本可能會提高一些效率,但他們只是不知道從哪裡開始,或者擔心最初的學習努力會浪費太多時間。 JMP 設計的優點在於,它為我們提供了一些工具,我們可以使用這些工具開始將 JSL 引入工作流程中,而在操作 JSL 時不會損失太多效率。 而且,與 JMP 中的所有內容一樣,它始於JMP 工作流程。
JMP 工作流程(腳本版)
JMP 工作流程通常以使用者前往紅色小三角選單回答問題結束。 紅色小三角選單的另一個功能是為使用者提供保存工作的方法(儲存腳本)。

保存腳本的方式主要有以下三種:
- 至數據表:此方法將腳本作為「表腳本」儲存到資料表中。這些腳本保存了用於在 JMP 中產生給定報告的方法,並且是可移植的(即可以在具有相同列名的資料表之間複製和貼上)。
- 到腳本視窗:此方法將重現給定報告所需的資訊儲存到腳本視窗。 它對於多步驟操作或產生多個報告非常有用。 腳本視窗的內容也可以轉換為表格腳本。
- 到剪貼簿:此方法對於將報表所需的程式碼移至其他 JMP 平台(例如查詢產生器、應用程式產生器等)或為大型專案產生原型程式碼非常有用。
事實證明,真正有效率的程式設計師會在編碼過程中廣泛利用這些紅色三角形選項。 他們使用它們來加速編碼(為什麼在不需要時敲擊按鍵?)或產生平台原型程式碼,否則很容易搞亂並且難以調試。 對於初學者來說,這些選項提供了不同的機會來了解和利用 JSL,同時輕鬆了解使用它的細節。 這就是我們想要開始編碼冒險的地方。
儲存腳本 > 到資料表
如果您碰巧是紐約或新澤西地區的 JMP 用戶:您好! 我可能曾經訪問過你們的公司。 (如果沒有,請私訊我;我們需要解決這個問題。)而且,當我到達現場時,您可能已經聽到我在這一點上喋喋不休:你必須保存你的工作,我所說的「保存你的工作」是指使用將腳本儲存到資料表紅色小三角選單下的選項。 回到我第一次自動化工作流程的經歷,我是這樣開始的:將一堆標準化的圖形產生器報告儲存到我會定期更新的 JMP 表中。 我怎麼強調這一點的力量都不過分。 這就像擁有《神秘博士》中的聲波螺絲起子一樣。 可能性是無止境。
讓我們來看一個簡單的例子:
- 打開幫助 > 範例資料庫 > Big Class Families.jmp
- 開啟分發對話框:分析 > 分佈
- 將年齡、性別、身高、體重填入Y,列,然後按一下好的。

- 在「分佈」紅色小三角選單下,選擇儲存腳本 > 到資料表

- 為其指定一個名稱(或僅使用預設名稱)。 如果在這種情況下使用預設值,它將在資料表中顯示為分佈2因為已經有一個分配數據表中的腳本。

- 現在回頭看看左上角的資料表。 您應該在清單中看到您的表腳本,旁邊有一個綠色複選標記。

在本系列的上下文中,這些表腳本可以被視為小小程式(迷你應用程式)或巨集。 它們可以在資料表之間直接移植(只需複製和貼上),前提是腳本中使用的列名稱相同。 它們也可以被編輯(右鍵單擊其中一個並選擇編輯)。 因此,如果您願意在腳本中編輯列名,它們也可以移植到沒有相同列名的資料表,這沒什麼大不了的。 我們將在下一篇文章中介紹如何做到這一點。 表腳本也可用於串接較小的腳本以自動化較大的工作流程。 我們還將在下一篇文章中介紹這一點。
儲存腳本 > 到剪貼簿
我們將介紹紅色小三角選單中的最後一個項目:到剪貼簿物品。 我們接下來將介紹這一點,因為該條目與到腳本視窗選項,但指導意義不大。 這並不是說它沒有用,只是你看不到發生了什麼事。 因此,出於時間考慮,這就是它的作用。 它需要創建的程式碼將腳本儲存到資料表並將其放入剪貼板,以便您可以將其放入另一個腳本中的某個位置。 很方便。 而且,隨著您的腳本編寫技能的增長,您會發現它對您有用的地方。 目前,我想備份到更有趣和有用的選項:儲存到腳本視窗。
儲存腳本 > 到腳本視窗
中的下一個條目將腳本儲存到...在紅色小三角選單中,我們將介紹我正在討論的三個選單中可能最具啟發性的內容。 將腳本保存到腳本視窗正如它所說的那樣:它創建一個腳本編輯器視窗(我們將在下一集中深入介紹腳本編輯器)並用 JMP 生成的 JSL 填充它以重新創建腳本編輯器中的任何內容。您正在工作的視窗。 本條目的重點是您可以研究程式碼並從 JMP 生成的內容中學習。
讓我們再看一個使用 Big Class 的簡單範例。 繼續並點擊已儲存腳本旁邊的綠色按鈕以重新執行分析。 然後,在報告視窗中選擇儲存腳本 > 到腳本視窗從紅色小三角菜單。 現在,請查看 JMP 在腳本視窗中寫入的內容。

JMP 建立了分佈報表:Distribution(...);。 JMP 已將兩個名目分佈子組放入報告中:名目分佈(Column(...)) 和兩個連續分佈子組:連續分佈(Column(...))。 在腳本的結尾,JMP 放置了一段非常重要的程式碼:「;」。 它被稱為“膠水操作員”,我們將在下一集中更詳細地介紹它。 現在,您只需要知道這是一種在 JMP 運行程式碼時向 JMP 發出另一個指令即將到來的訊號的方法。 事實上,JMP 會自動將其放在最後,從而使新手腳本編寫人員的生活變得簡單得多。
使該條目如此有用的最後一點是,如果您將該腳本視窗保持開啟狀態,會發生什麼情況。 繼續並關閉分發平台,但保持腳本編輯器開啟。 現在,使用開啟的資料表,建立一個 Fit Y by X 報告(在「分析」下),使用身高作為 X 變量,體重作為 Y 變量。

接下來,選擇將腳本儲存到腳本視窗再次。

您是否注意到視窗是如何用另一個條目更新的? 一旦您知道如何運行一個窗口,該腳本現在將重新建立您剛剛使用的兩個窗口。 說到這裡…
運行腳本
那麼,腳本視窗中已經有了一些程式碼,現在要做什麼? 您可能希望能夠運行您創建的程式碼。 我的意思是,你可以把它保留下來,以給走過你辦公桌的人留下深刻印象,但最好運行它。 在 JMP 中執行程式碼有多種方法:主選單、鍵盤快速鍵、腳本視窗頂部的工具列、Enter 鍵或右鍵單擊。 讓我們快速瀏覽一下其中的每一個。
主選單和鍵盤快捷鍵
這運行腳本命令在 Windows 和 MacOS 中位於相同位置。 如果您位於腳本視窗中,請前往編輯 > 運行腳本。 其熱鍵是CTRL+R用於窗戶和指令+R對於 MacOS。
腳本視窗頂部的工具列按鈕
如果您查看腳本視窗的頂部,您應該會發現運行腳本按鈕(除非您隱藏了工具列)。 在 Windows 中,它看起來像一個綠色的小播放按鈕,類似於表格腳本的按鈕。 在 MacOS 中,它看起來像一個帶有 JMP Man 和綠色播放按鈕的 JSL 小文件。
使用 Enter 鍵
請注意,這裡我指的是擴充鍵盤上數字鍵盤右下方部分的按鈕。 如果按下該按鈕,JMP 將運行遊標所在的 JSL 行。 在熟悉 JSL 偵錯器之前,我經常使用它。
右鍵單擊
選擇一些程式碼並右鍵單擊將彈出一個上下文選單,其中包含運行腳本選項朝底部。
我建議您嘗試不同形式的運行腳本並找到您最喜歡的一種。 我偏愛熱鍵,除了在“應用程式生成器”中時,我更喜歡使用工具列選項。 隨著時間的推移,您可能會被其中一兩個所吸引,成為您最喜歡的。 另外,作為旁注:所有這些選項的作用都略有不同,具體取決於您是否選擇了一段程式碼、遊標位於行尾還是遊標位於空白行。 所以你可能也想嘗試看看。
本週總結
好吧,不管你信不信,你現在已經獲得了足夠的信息,可以對 JSL 造成瘋狂的危險……當然,是以一種好的方式。 讓我告訴你我的意思。
讓我們使用今天創建的腳本。 我將透過包裝 New Window(); 進行一些小小的調整;圍繞 JMP 建立的分佈函數和雙變量函數。 您可以了解有關新視窗的更多資訊(...);在腳本索引中。 請注意 New Window(...) 的第一部分;從第 1 行開始,最後一部分在第 10 行! 我已經設定了腳本編輯器來繪製一條連接它們的漂亮的小線,這樣我就可以看到它們在哪裡(稍後會詳細介紹)。

然後,讓我們複製該腳本的文字並返回到資料表。 選擇新腳本從資料表左上角的紅色小三角選單。

將腳本文字貼上到對話框中,為其指定一個有用的名稱,然後單擊好的。

如果您按照步驟操作,您應該會在資料表的腳本區域中看到您的報告。 如果你運行它,你應該得到這樣的結果:

這就是我用來將為期兩天的分析馬拉松變成 15 分鐘的剪貼練習的小技巧。 我花了一點時間將資料放入可以輕鬆更新的 JMP 資料表中。 然後,我使用該報告將該報告所需的所有圖表匯出到單一 JSL 視窗中將腳本儲存到腳本視窗。 我將它們包裝在一個新視窗中(以便它們都位於一個位置),並將該腳本放入資料表中的表格腳本中。 我在 JSL 工作嗎? 是的。 我寫了很多程式碼嗎? 不。 我的效率提高了嗎? 確實。
現在我們正在進入實際的編碼,我需要強調最後一點。 編碼是為了提高你的效率:
- 您解決問題的效率如何。
- 您建立報告的效率如何(以便您可以重新解決問題)。
- 您處理資料的效率如何。
我們將在本系列中建立的程式碼是電腦生成的或很簡單。 沒關係。 是關於高效率的代碼不性感的代碼。 當我上大學時,我的一位教授(一位音樂家同事)在他辦公室外的牆上掛了一句話:簡單的音樂並不比複雜的音樂好或更壞。 代碼也是如此。 不久前,教我編碼的人讓我想起了這一點。 所以,請記住:簡單的程式碼並不比複雜的程式碼更好或更差。 重要的是它滿足其預期目的並提高使用它的人的效率或生產力。
家庭作業
在本週的練習中,您將回顧您的問題陳述。 仔細考慮您建立的遺留問題清單,並使用我們今天介紹的工作流程產生程式碼。 程式碼可以是您將要使用的實際程式碼,也可以是您認為需要稍作修改才能回答問題陳述的原型程式碼。 嘗試使用紅色小三角選單產生您認為需要的盡可能多的零碎內容,並將它們儲存為 .jsl 檔案。 如果您遇到困難或無法找到讓 JMP 產生所需程式碼的方法,請在社群或此處的評論中尋求協助。 不要忘記搜尋幫助,也不要忘記您也可以搜尋社區!
下次再見,祝你好運,編碼愉快!
嗨,麥克,
我只是想說這是一個多麼棒的部落格系列! 我是一個相對經驗豐富但自學成才的程式設計師,閱讀這些文章強化了我多年來透過艱苦的方式學到的許多關鍵知識... 為什麼你不能在20年前寫下這篇文章來減輕我的痛苦呢?
不過說真的,謝謝。 與 JMP 一樣,每次使用該軟體時我都會學到一些新東西,今天對我來說的新技巧是使用數字鍵盤的 Enter 鍵來運行代碼 - 誰知道?!?
非常感謝,
安德魯