Document Parameters 与文档会话
Document Parameter(文档参数)是属于某个文档的命名值:本金、城市、地区、利率。文档的公式、智能对象、Data Source 和代码都会读取它们,因此更改一个参数就会更改所有依赖它的内容。每个参数都是数字、文本、逻辑值或日期,并保存在文档中。
本页面还说明了 Divooka 图如何访问它所处理的文档,正是这一点让同一个图既能在 Methodox Office 中运行,也能在 Divooka Compute 中运行。
编辑参数
Tools ▸ Parameters 会在侧栏的 Parameters 面板中打开参数,其中每一行都是一个可以就地编辑的参数;布尔参数是一个开关,单击即可切换,也可以在其所在行按 Space、F2 或 Enter 切换。每次更改都是一个撤消步骤,读取该参数的内容会随之重新计算或刷新。
读取和设置参数
Function 和智能对象只读取参数。只有 Command 或事件处理程序才能设置参数,且作为其可撤消事务的一部分。
| 位置 | 读取参数的方式 |
|---|---|
| Formula | =PARAM("Region") |
| Lua、Python | param.Region |
| C# | Param["Region"] |
| Divooka 图 | 一个 Number、Text 或 Boolean Parameter 节点,从 This Document 连线(见下文) |
| Data Source | 在其查询中使用 param.Region |

每次读取都会被记录,因此更改参数时,会精确地重新计算读取它的单元格,并精确地刷新读取它的智能对象和 Data Source,与该更改一起构成一个撤消步骤。=PARAM() 在文档打开后立即给出结果,甚至在其代码被启用之前,因为参数是数据,而不是代码。
文档会话
参数是文档的成员,就像工作表或段落一样。因此,读取参数的图首先需要文档本身,并通过一个节点获取它:
- This Document 提供图所属的文档。在 Methodox Office 中,这就是打开的文档,窗口会把它传入 Function、Command 或事件处理程序的每次运行。
- Open Office Document 从文件提供一个文档,可以是 Formula 工作簿、Impulse 文档或 Expo 演示文稿。它用于 Divooka Compute;在 Methodox Office 中,它会忽略路径,提供图自己的文档。
此后,图对文档所做的一切都是一个以文档作为第一个输入的节点:参数读取(Parameter、Number Parameter、Text Parameter、Boolean Parameter、Has Parameter、Parameter Names)、Set Parameter,以及文档编辑(Get Cell、Set Cell、Set Formula、Write Table、Add Sheet、Add Paragraph、Add Slide、Slide Count、Document Name、Document Path、Run Command)。文档编辑和 Set Parameter 只在 Routine 图和 Events 图中提供,在 Function 中永远不提供。

你很少需要自己放置 This Document。当你从图编辑器的添加节点菜单(其中按名称列出文档的参数)中添加参数时,读取节点会被放置好,并填入参数名称、连线到图的 This Document;第一次添加时,This Document 会被添加在它旁边。
Divooka Compute 中的同一个图
由于文档是一个输入,而不是节点自行查找的东西,Divooka Compute 也可以提供它。有两种方式:
- 图编辑器工具条上的 Open in Divooka Compute 会把图连同窗口中文档的副本(无论是否已保存)一起发送到已安装的 Compute。在 Compute 中,This Document 提供该副本,添加节点菜单会在 Office ▸ Parameters 下列出它的参数,每一项都会按名称放置对该参数的读取节点,与 Office 自己的编辑器一样。在那里运行图时,它读取和更改的是副本,绝不会是你的文件。在 Compute 中保存后,图会作为一次可撤消的更改回到文档中。
- Open Office Document 在给定路径后,会在 Compute 中打开工作簿、文档或演示文稿,因此无需运行 Methodox Office,就可以针对真实文件编写和调试图。Save Office Document 会保存它所做的更改。
无论哪种方式,图都是同一个图:你在 Compute 中编写或调试的内容可以不加修改地在 Methodox Office 中运行,反之亦然。Methodox Office 会把它的 Office 节点随图一起发送,因此无论 Compute 自身的安装包含什么,它都能提供这些节点;当图返回时,Methodox Office 会再移除该引用,因此文档永远不会携带你计算机上的路径。这需要最新的 Divooka Compute;旧版本无法加载图所引用的节点,打开图时会缺少这些节点。
为什么这是安全的
在 Methodox Office 中,图只会处理它自己的文档。在任一版本中,Open Office Document 都不会在其中打开文件,因此文档的图无法通过它读取其他文档。只有在你亲自运行图的 Divooka Compute 中,它才能打开文件。Command 仍然只会在你启用文档的代码后才更改文档,并且只拥有你授予它的访问权限(参见信任)。
早期版本中的图
早期版本中的 Parameter 节点会自行查找文档。它们在 Methodox Office 中可以工作,但在 Compute 中,它们虽是有效的节点,却没有可读取的对象,运行时会失败。
包含这些节点的图在读取时会被转换为新的形式:每个旧节点都会变成对文档进行的相同读取或编辑,位置相同,字面量、标签和连线也相同,并由每个图一个的 This Document 节点提供文档。图中的其他内容不会改变,不含旧节点的图则完全保持原样。文档中保存的文本会在你下次编辑该图时采用新形式,而 Open in Divooka Compute 发送的是新形式。
脚本不受影响:Lua、C# 和 Python 仍像以前一样以 param.Region 读取参数。