2017-02-11 7 views
0

Я выполнение приложения AppleScript с помощью NodeJS, как это:не выводится при node.js не вызывает 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 

Код узла выполняется из узла-WebKit (nwjs). Приложение Applescript работает при запуске в ScriptEditor, а также при вызове из приложения nwjs.

Я ничего не получаю в последних двух обработчиках событий. Первые две соответственно выход:

undefined 
0 

Принуждение ошибки, намеренно пишет ошибочный код AppleScript не приводит к какой-либо продукции в Node.js обработчика событий ошибки. Мой вопрос: как я могу получить выход из Applescript в обработчики событий? Изменение следующего порядка или комментирование первых двух не помогает.

ответ

0

Вы можете использовать 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); 
    }); 
    } 
}); 

узел-AppleScript документы: https://github.com/TooTallNate/node-applescript

Надеется, что это помогает!

+0

Я уже пробовал этот модуль, а также узел-applescript, но занимает от 10 до 15 секунд или больше, прежде чем скрипт будет полностью выполнен в первый раз, когда я его вызову, не знаю почему. Включение приложения в applescript происходит намного быстрее, весь процесс занимает около 3 секунд. – jerry

+0

Я имел в виду [node-osascript] (https://www.npmjs.com/package/node-osascript) как другой, который я пробовал. – jerry

+0

Хорошо, я точно не знаю, в чем проблема: \ sorry. Также вы можете попробовать node-applescript, если вы еще не указали. – pudility