繁體中文
English 简体中文 繁體中文
Methodox 首頁

Divooka 圖

Methodox Office 文件可以攜帶 Divooka 程式,即由節點和連線組成的圖,作為 Lua 和 C# 之外的第三種語言。文件的圖以 .dvj 文件的形式儲存在其內部,這是 Divooka Compute 所開啟的 .dvk 的文字形式;每個圖都扮演程式設計模型中的某一個角色:

圖 角色 用法
以大寫字母命名的 Function 圖 Function 在 Formula 中為 =DVK.LOANPAYMENT(B1, B2, B3);作為 Impulse 智慧物件時為 LOANPAYMENT(param.Principal, param.Rate, param.Years)
Routine Command 在 Tools ▸ Scripts 中執行;在命令列中為 --script Report.dvj#StampRegion
Events 圖 事件處理程式 在文件開啟、儲存、編輯、重新計算、重新整理或放映時執行

圖在 Divooka 的 No-Reflection Interpreter 上執行,它只准備一次圖,之後按需多次呼叫,因此由兩百個儲存格組成的一列呼叫同一個圖時,只准備一次。

圖編輯器

Tools ▸ Scripts(Alt+F11)會在文件的 Lua、C# 和 Python 指令碼旁邊列出其圖文件。選中一個 .dvj,圖就會在原本是文字編輯器的位置以畫布形式開啟,每個圖一個索引標籤:Function 圖顯示 fx 圖示,Routine 顯示播放圖示,Events 圖顯示鈴鐺圖示。編輯器的工具會加入窗格的工具條。

Formula 的 Scripts 索引標籤中的圖編輯器:Graph Editor 示例的 PRICE Function 圖,滑鼠指標位於 Add 節點上,其工具提示列出了成員名稱、所屬工具箱和包、它的作用以及每個輸入的含義

  • 移動檢視。 用中鍵拖動,或按住 Alt 或 Space 拖動,即可平移;滾輪以指標位置為中心縮放;F 使圖適應檢視。較長的圖開啟時會以可讀的大小顯示其開頭。
  • 新增節點。 右鍵按一下畫布空白處,或使用 + 按鈕,即可在該處開啟一個可搜尋的面板。它只列出文件的版本能夠執行的內容:值節點(Number、Text Line、Text、Boolean、Comment),Routine 圖和 Events 圖中的 Branch,Events 圖中該事件型別的事件,以及按名稱列出的每個 Document Parameter——放置後即為其讀取節點,並連線到圖的 This Document。過載通過其輸入加以區分。會更改文件的呼叫只在 Routine 圖和 Events 圖中提供,在 Function 中永遠不提供。從引腳拖出連線並在畫布空白處鬆開,會在該處開啟面板,所選節點會自動與之連線。
  • 瞭解節點。 將滑鼠懸停在節點上,即可看到它呼叫的內容、它來自的工具箱和包(與 Divooka Compute 中的顯示相同),以及它的文件:它的作用、每個輸入的含義以及它返回什麼。這樣就能瞭解諸如 Loan Letter 中 Amortization Schedule 這樣的節點是什麼。
  • 連線與編輯。 從一個引腳拖到另一個引腳即可連線;型別不匹配的連線會被拒絕,工具條會說明原因。按住 Alt 按一下連線、在連線上劃過,或右鍵按一下連線並選擇 Delete Wire,即可斷開連線。字面量在引腳上編輯。
  • 節點選單。 右鍵按一下節點可使用 Cut(Ctrl+X)、Copy(Ctrl+C)、Paste(Ctrl+V)、Duplicate(Ctrl+D)、Rename 和 Delete(Delete)。複製的節點會保留它們之間的連線,既可以貼上到目前圖,也可以貼上到另一個圖或另一個文件的圖中。圖的 Input 和 Output(或 Begin 和 Return)不能刪除。
  • 圖的輸入和輸出。 在圖已存在後,可通過圖的 Input 或 Output 節點選單中的 Edit Inputs、其索引標籤選單中的 Inputs and Outputs 或工具條上的介面按鈕,更改 Function 的輸入和輸出或 Routine 的輸入,格式與新建圖時相同(Principal, Rate, Years=30);名稱保持不變的埠上的連線會保留。索引標籤選單中還有 Rename Graph 和 Delete Graph。
  • 新建圖。 圖層按鈕可新增一個 Function(及其輸入和輸出,例如 Principal, Rate, Years=30;其他型別的輸入寫作 name:text)、一個 Routine,或基於所選事件型別的文件 Events 圖。
  • 編輯會自動寫入文件。 在畫布上每次更改後片刻(絕不會在拖動過程中),圖就會被寫入文件,使用它的儲存格和智慧物件會立即重新計算:在 Graph Editor 示例中更改 Add 的 Summand1,B2 就會隨之變化。每次更改都是視窗 Edit ▸ Undo 中的一個步驟,復原時會撤回該更改,畫布也會隨之恢復。
  • 錯誤會定位到其節點。 當某個儲存格或事件處理程式的錯誤指明瞭某個節點時,文件上方的紅色欄會有一個按鈕,用於開啟該圖並選中該節點。在某個節點上失敗的 Routine 會在執行後選中該節點。版本不支援執行的節點會在畫布上標記出來,懸停時顯示原因。

外部連結按鈕 Open in Divooka Compute 會在已安裝 Divooka Compute(完整的 Divooka 編輯器)時在其中開啟圖;否則該按鈕處於禁用狀態,其工具提示會說明未安裝 Divooka Compute。版本說明了 Methodox Office 在何處尋找它。文件的副本會隨圖一起傳送,因此在 Compute 中,This Document 就是該副本,新增節點選單會在 Office ▸ Parameters 下列出其參數;Methodox Office 還會傳送它的 Office 節點,因此 Compute 無需安裝任何內容就能提供這些節點。在 Compute 中儲存後,圖會作為一次可復原的更改回到文件中;如果在此期間文件的副本已被更改,Methodox Office 會詢問保留哪一個。使用了 Standard 版不支援執行的節點的圖,會按 Compute 寫入的樣子保留,並顯示其無法執行的原因。參見文件會話。

Function 圖

名稱為大寫字母的 Function 圖是工作表函式:活頁簿 Loan.dvj 中的 LOANPAYMENT 以 =DVK.LOANPAYMENT(...) 的形式呼叫。返回表格的圖會將其溢位,例如 =DVK.AMORTIZE(B1, B2, B3) 會溢位貸款的還款計劃;返回圖片的圖會在其儲存格中按比例適應顯示圖片,與 Excel 的 IMAGE 相同,儲存格的值為 Image W×H。在 Impulse 和 Expo 中,同一個圖是智慧物件的源,按名稱呼叫,可使用數字、帶引號的文字、param.Name 和 smart.Name 作為實參;返回圖片(例如圖表)的圖會填充影像智慧物件。參見工作表函式和智慧物件。

使用了取得資料節點的 Function 圖是資料來源 Function,它只在文件重新整理時(在 Formula 中為 Data ▸ Refresh Data,Ctrl+Shift+F5;在 Impulse 和 Expo 中為 Refresh All,Ctrl+Shift+F9)或其讀取的參數發生變化時取得資料,在此期間則以上次取得的內容作答。

Routine

Routine 圖是一個 Command:當從 Tools ▸ Scripts 執行時(Run 旁邊的列表用於選擇執行圖文件中的哪個 Routine),或從命令列執行時,它會更改文件,作為一個可復原的步驟:

MethodoxFormula --script "Report.dvj#StampRegion" --open "Region Events.xlsx" --save-as Stamped.xlsx

圖文件後面的 #Name 指定要執行的 Routine。

事件處理程式

Events 圖實現某一種 Office 事件型別,當文件已啟用且事件發生時,其處理程式就會執行:

事件型別 事件
所有文件 Opened、BeforeSave、Saved、ParameterChanged
活頁簿 WorkbookOpened、RangeChanged(每次編輯時每個工作表一個區域)、Calculated
文字文件 SmartObjectsRefreshed
簡報 SlideShowStarted、SlideShowAdvanced、SlideShowEnded

每個處理程式在文件上作為一個事務執行。由處理程式自身更改引發的事件不會傳回給它,復原和重做不會引發事件,一秒鐘內超過 64 個事件會暫停處理程式,因此處理程式不會陷入迴圈。

Office 節點

在 Standard 版中,圖可以使用 Divooka 標準庫中的純例程(數字、文字、邏輯、日期、陣列、列表、集合、字典、轉換)以及以下 Office 節點:

分組 節點
Document This Document(圖自己的文件);Open Office Document(在 Divooka Compute 中為檔案;在 Office 中為圖自己的文件)和 Save Office Document
Parameters Parameter、Number Parameter、Text Parameter、Boolean Parameter、Has Parameter、Parameter Names,每個都接受文件並指定其讀取的參數名;Set Parameter 僅用於 Command
Data HTTP Get、HTTP Get Bytes、Read Text File(通過使用者的授權);按點分路徑讀取的 Json Number、Json Numbers、Json Text、Json Texts;Format Url
Tables Columns、Sequence、Number Column、Row Count、Amortization Schedule
Images Chart(由 Formula 的圖表引擎繪製為圖片的表格)、From Bytes
Document edits 用於 Command,每個都接受文件:Set Cell、Get Cell、Set Formula、Write Table、Add Sheet、Add Paragraph、Add Slide、Slide Count、Document Name、Document Path、Run Command;以及 Log

Divooka Compute 中也提供相同的節點,因此在那裡製作的圖就是 Methodox Office 執行的圖。早期版本中的圖(其 Parameter 節點會自行尋找文件)在讀取時會被轉換為這種形式;參見 Document Parameter。

Methodox Office + Divooka Compute 還允許圖使用其旁邊已安裝的 Divooka 包(參見版本)。使用了其版本不允許的節點的圖會在執行之前被拒絕,訊息中會指出該圖和該節點;執行過程中的失敗也同樣如此,訊息會顯示在儲存格的訊息或 Scripts 窗格的輸出中。

試一試

Examples\Automation 中包含:

  • Loan Calculator.xlsx:=DVK.LOANPAYMENT 和溢位的 =DVK.AMORTIZE 還款計劃,貸款條款作為 Document Parameter(Tools ▸ Parameters)。在 Divooka Compute 中開啟其圖,可以看到那裡也提供相同的參數。
  • Loan Letter.docx:在一封信函中作為智慧物件使用的相同圖;將滑鼠懸停在 Loan.dvj 中的 Amortization Schedule 節點上,可以看到它的來源。
  • Weather.xlsx:從 Open-Meteo 取得天氣預報的資料來源 Function。Weather Report 用一個圖繪製其 24 小時圖表,Market Dashboard 則通過一個 Events 圖重新繪製自身。
  • Region Events.xlsx:一個記錄更改內容的 Events 圖,以及 StampRegion Routine。
  • Graph Editor.xlsx:可供編輯的 Pricing 圖,B2 會隨每次更改而變化;一個使用了 Standard 版會拒絕的節點的圖;以及 B10 中一個以圖片作為結果的 Function,圖片繪製在其儲存格中。
  • Graphs\*.dvj:獨立的圖檔案,供 Divooka Compute 使用。

請先啟用每個文件;之後天氣示例會要求你 Allow 它們對 api.open-meteo.com 的請求。