有什么方法可以在R中运行applescript吗?
中找到了此参考 From release 1.3.1 R has partial support for AppleScripts. This means two things: you can run applescripts from inside R using the command applescript() (see the corresponding help)
但是在我当前的R版本中
R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.6
applescript()
和?applescript()
均不返回任何内容。
谢谢西蒙
答案 0 :(得分:0)
这些功能不是现代R版本中的功能(它们将IIRC追溯到macOS / Mac OS X之前的版本)。
但是,applescript()
函数没有任何作用:
applescript <- function(script_source, extra_args = c()) {
script_source <- paste0(script_source, collapse = "\n")
tf <- tempfile(fileext = ".applescript")
on.exit(unlink(tf), add=TRUE)
cat(script_source, file = tf)
osascript <- Sys.which("osascript")
args <- c(extra_args, tf)
system2(
command = osascript,
args = args,
stdout = TRUE
) -> res
invisible(res)
}
因此您可以执行任何操作,例如打开一个文件夹:
applescript(
sprintf(
'tell app "Finder" to open POSIX file "%s"',
Sys.getenv("R_DOC_DIR")
)
)
或者查询一个应用程序并返回数据:
res <- applescript('
tell application "iTunes"
set r_name to name of current track
set r_artist to artist of current track
end
return "artist=" & r_artist & "\ntrack=" & r_name
')
print(res)
## [1] "artist=NICO Touches the Walls" "track=Hologram"
为了使(mebbe)更容易使用(我说“ mebbe”,因为pkg在某些方面依赖于reticulate
)我将其添加到了macthekinfe
以macOS为中心的R包中。