【已解决】如何使用 Dataviewjs 获取当前库在系统中的绝对路径

我使用dataviewjs脚本自动管理数据。但随着程序扩大,有一些功能需要调用系统中的其他程序,例如python。

我希望将所有脚本文件集中保存在Obsidian库中,同时允许dataviewjs调用外部程序读取库内的脚本。

但是dataviewjs中没有将Obsidian笔记路径转换为系统绝对路径的方法,我无法将脚本文件传出。
而且默认的运行目录是\AppData\Local\Obsidian而不是库所在目录,我也无法得知库的位置从而转换路径。

例:

const { exec } = require('child_process');
const script = ".../some_script.ps1"; // PowerShell脚本

let div = dv.el("div", null)
exec(`powershell ${script}`, (error, stdout, stderr) => {
    div.innerHTML = `输出:${stdout}`;
});

转换为系统绝对路径:app.vault.adapter.getFullPath()app.vault.adapter.basePath + '路径'

指定 exec 运行路径举例,cwd 后面为指定运行路径:

exec(`atgui /s "${term}" /d "${basePath}" /e md`, {cwd: 'D:/Global Panel/AnyTXT Searcher'})

声明:没写过 Python,具体如何运行 Python 需自行调整。

非常感谢。

Overview - Dataview 中没有关于app对象的内容。导致我一直以为没有这样功能的函数。