我正在使用NodeJS执行Applescript应用程序,如下所示:
var child = require('child_process').exec('open myApp.app');
child.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
child.stdout.on('end', function (data) {
console.log('end: ' + data);
});
child.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
child.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
AppleScript的:
tell application "Final Cut Pro" to activate
tell application "System Events" to keystroke "2" using command down
tell application "System Events"
tell process "Final Cut Pro"
tell menu bar 1
tell menu bar item "File"
tell menu "File"
tell menu item "Export XML..."
click
end tell
end tell
end tell
end tell
tell its front window
click button "Save"
click button "Replace" of sheet 1
end tell
end tell
end tell
节点代码从node-webkit(nwjs)应用程序执行。 Applescript应用程序在ScriptEditor中运行时以及从nwjs应用程序调用时都有效。
我在最后两个事件处理程序中没有得到任何回报。前两个分别输出:
undefined
0
通过故意编写错误的Applescript代码强制错误不会导致node.js错误事件处理程序中的任何输出。我的问题是:如何从Applescript输出回事件处理程序?更改以下顺序或注释掉前两个顺序无济于事。
答案 0 :(得分:0)
您可以使用node-applescript。
首先使用npm安装它:$ npm install applescript
然后在你的JS文件中添加下面的代码来运行你的脚本。
var applescript = require('applescript');
var script = 'tell application "iTunes" to get name of selection'; //you can copy and past your apple script here
applescript.execString(script, function(err, rtn) {
if (err) {
// Something went wrong!
}
if (Array.isArray(rtn)) {
rtn.forEach(function(songName) {
console.log(songName);
});
}
});
node-applescript docs:https://github.com/TooTallNate/node-applescript
希望这有帮助!