问题:
以编程方式(通过终端/外壳)运行时,是否有任何方法可以确保Sketch应用首先打开文件,然后运行插件脚本?
到目前为止,我已经尝试过:
我试图打开草图文件,然后以编程方式(通过终端)运行插件脚本。
这是插件/脚本代码:
function onRun(context) {
var sketch = require('sketch')
var document = sketch.getSelectedDocument()
log('context: ' + context);
log('Document name: ' + document.name());
}
这是我在终端中使用的命令,用于打开草图文档并在其上运行插件脚本。
终端命令:
$ sketchtool run /path/of/plugin/pluginExample.sketchplugin "" "/path_of_sketchfile/filename.sketch"
终端命令的输出:
context: {
api = "<MOJavaScriptObject: 0x6000008213a0>";
command = "<MSPluginCommand: 0x6000000f9580>";
document = "<MSDocument: 0x7fd0bfef5b30>";
plugin = "<MSPluginBundle: 0x6000000f9880>";
scriptPath = "/path/of/plugin/pluginExample.sketchplugin/Contents/Sketch/run.js";
scriptURL = "file:////path/of/plugin/pluginExample.sketchplugin/Contents/Sketch/run.js";
selection = (
);
}
TypeError: undefined is not an object (evaluating 'document.name')
line: 8
我怀疑的问题:
问题似乎出在运行插件脚本之前,草图没有打开文件。我确保文件存在于给定的路径。