有没有办法使用单词宏获取 OpenText 内容服务器节点 ID
Is there a way to get the OpenText Content Server node id using a word macro
在 Content Server 用户通过在他们的 pc 上打开 word 并保存(使用企业连接对话框)创建 word doc 之后以及 word doc 之前,我使用 word 宏获取 OpenText Content Server 节点 ID关闭 - 我正在构建一个宏来挂钩项目编号并将一些元数据提取到文档中,允许用户 insert/update 文档页脚。
在这种情况下,各种 API 或 SDK 是否有某些方面允许单词宏访问其自己的节点 ID(以及可能的其他元数据)?
我找到了文件 C:\Users[username]\AppData\Roaming\OpenText\OTEdit\sync.fedb,它似乎包含文件 location/name 和内容服务器中的文档之间的映射,但直接询问它似乎有点 hack,因为 OTEdit.exe 总是锁定文件,我想知道是否有支持的方法来做到这一点。
我研究了 DPS,将其作为将内容服务器节点 ID 标记到 word 文档属性中的一种方法,虽然如果用户关闭并重新打开文档,此方法有效,但在文档打开之前属性不可用已关闭,因此在这种情况下没有用。
我找到了一个不同的方法,因为 sync.fedb
被 OTEdit
进程锁定,并且似乎没有任何方法可以使用 word 宏通过 SDK 访问文档元数据。这有点 hack,但我已将详细信息放在这里,以防其他人对此感兴趣。
编辑后的文档存储在文件夹下,路径如下:C:\Users\[username]\AppData\Roaming\OpenText\OTEdit\EC_[servername]\[folder]\[current document name]
[folder]
可能与 Content Server 中的文件夹匹配,也可能不匹配 - 最好检查 ~otdirinfo.ini
文件并从 Browse
url.
从这里我们可以使用类似的东西进行数据库搜索:
SELECT
t.DataID AS NodeId,
CAST(t.CreateDate AS DATE) AS CreateDate,
CASE WHEN k.FirstName IS NULL
AND k.LastName IS NULL THEN k.Name
ELSE LTRIM(RTRIM(( ISNULL(k.FirstName, '') + ' ' + ISNULL(k.LastName, '') )))
END AS CreatedByFullName,
CASE WHEN kr.FirstName IS NULL
AND kr.LastName IS NULL THEN kr.Name
ELSE LTRIM(RTRIM(( ISNULL(kr.FirstName, '') + ' ' + ISNULL(kr.LastName, '') )))
END AS ReservedByFullName,
t.CreatedBy,
t.ReservedBy,
t.ParentID,
t.Name AS Title,
v.FileName
FROM
DTree t
INNER JOIN KUAF k
ON t.CreatedBy = k.ID
LEFT OUTER JOIN KUAF kr
ON t.ReservedBy = kr.ID
INNER JOIN DVersData v
ON t.DataID = v.DocID AND t.VersionNum = v.Version
实际上,我写了一个 API 来包装数据库查找 returns JSON 中感兴趣的结果,这比管理数据库连接更容易处理,并且returns 结果比我网站上的 CWS 快。我使用方便的 VBA-Web 宏进行调用和处理解析,将调用结果放入 word 文档属性中,然后调用我们现有的页脚生成宏。
注意:我为此使用 Content Server 10.5,显然提取父 ID 的方法有时因版本而异。
在 Content Server 用户通过在他们的 pc 上打开 word 并保存(使用企业连接对话框)创建 word doc 之后以及 word doc 之前,我使用 word 宏获取 OpenText Content Server 节点 ID关闭 - 我正在构建一个宏来挂钩项目编号并将一些元数据提取到文档中,允许用户 insert/update 文档页脚。
在这种情况下,各种 API 或 SDK 是否有某些方面允许单词宏访问其自己的节点 ID(以及可能的其他元数据)?
我找到了文件 C:\Users[username]\AppData\Roaming\OpenText\OTEdit\sync.fedb,它似乎包含文件 location/name 和内容服务器中的文档之间的映射,但直接询问它似乎有点 hack,因为 OTEdit.exe 总是锁定文件,我想知道是否有支持的方法来做到这一点。
我研究了 DPS,将其作为将内容服务器节点 ID 标记到 word 文档属性中的一种方法,虽然如果用户关闭并重新打开文档,此方法有效,但在文档打开之前属性不可用已关闭,因此在这种情况下没有用。
我找到了一个不同的方法,因为 sync.fedb
被 OTEdit
进程锁定,并且似乎没有任何方法可以使用 word 宏通过 SDK 访问文档元数据。这有点 hack,但我已将详细信息放在这里,以防其他人对此感兴趣。
编辑后的文档存储在文件夹下,路径如下:C:\Users\[username]\AppData\Roaming\OpenText\OTEdit\EC_[servername]\[folder]\[current document name]
[folder]
可能与 Content Server 中的文件夹匹配,也可能不匹配 - 最好检查 ~otdirinfo.ini
文件并从 Browse
url.
从这里我们可以使用类似的东西进行数据库搜索:
SELECT
t.DataID AS NodeId,
CAST(t.CreateDate AS DATE) AS CreateDate,
CASE WHEN k.FirstName IS NULL
AND k.LastName IS NULL THEN k.Name
ELSE LTRIM(RTRIM(( ISNULL(k.FirstName, '') + ' ' + ISNULL(k.LastName, '') )))
END AS CreatedByFullName,
CASE WHEN kr.FirstName IS NULL
AND kr.LastName IS NULL THEN kr.Name
ELSE LTRIM(RTRIM(( ISNULL(kr.FirstName, '') + ' ' + ISNULL(kr.LastName, '') )))
END AS ReservedByFullName,
t.CreatedBy,
t.ReservedBy,
t.ParentID,
t.Name AS Title,
v.FileName
FROM
DTree t
INNER JOIN KUAF k
ON t.CreatedBy = k.ID
LEFT OUTER JOIN KUAF kr
ON t.ReservedBy = kr.ID
INNER JOIN DVersData v
ON t.DataID = v.DocID AND t.VersionNum = v.Version
实际上,我写了一个 API 来包装数据库查找 returns JSON 中感兴趣的结果,这比管理数据库连接更容易处理,并且returns 结果比我网站上的 CWS 快。我使用方便的 VBA-Web 宏进行调用和处理解析,将调用结果放入 word 文档属性中,然后调用我们现有的页脚生成宏。
注意:我为此使用 Content Server 10.5,显然提取父 ID 的方法有时因版本而异。