我正在尝试将我的.applescript文件分离为不同的文件,以整理事物。
我有一个名为Test.applescript
的JS AppleScript文件,该文件试图运行JS AppleScript文件Group Tracks Dependency.applescript
,我要做的是将参数传递给依赖项脚本并从中获取返回值。 (它创建iTunes曲目数组的数组)。
测试苹果脚本
(function() {
var app = Application('iTunes');
app.includeStandardAdditions = true;
app.doShellScript('Group Tracks Dependency.applescript');
return "Done";
})();
// For quick logging
function log(obj) {
this.console.log(obj);
}
组跟踪Dependency.applescript
(function(selection) {
return getGroupsOfTracks(selection);
function getGroupsOfTracks(originalTracksArray) {
if (originalTracksArray == null || originalTracksArray.length == 0)
return null;
var tracks = originalTracksArray.slice();
var groups = [];
while (true) {
var group = [];
group.push(tracks[0]);
tracks = tracks.slice(1);
while (true) {
if (!tracks[0]) break;
if (tracks[0].album() != group[0].album())
break;
if (tracks[0].artist() != group[0].artist())
break;
if (tracks[0].discNumber() != group[0].discNumber())
break;
group.push(tracks[0]);
tracks = tracks.slice(1);
}
groups.push(group);
if (!tracks[0]) break;
}
return groups;
}
})();
当我尝试运行测试脚本时,出现此错误(第5行是
app.doShellScript
行):Error on line 5: Error: A privilege violation occurred.
有什么办法可以解决这个问题?我还应注意,我希望其他人将来能够下载这些脚本并在自己的iTunes资料库上运行它们(尽管目前它对用户不友好)。
如果没有办法解决这个问题,那么导入另一个JS AppleScript文件是否可行?
最佳答案
我认为您可能正在进行使用.doShellScript无法赢得胜利的战斗。
苹果的方法是使用https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/OSX10-11.html#//apple_ref/doc/uid/TP40014508-CH110-SW1上定义的脚本库
不幸的是,脚本库具有只能传递简单变量的约束。
另一种方法是使用require,可以用https://github.com/dtinth/JXA-Cookbook/wiki/Importing-Scripts这样的代码定义
关于javascript - 从另一个JSAppleScript运行另一个JS AppleScript时出现权限错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37176528/