3

タイトルを何と呼べばいいのかわかりませんでしたが、iTunes から情報をプル/プッシュして保存する Applescript に取り組んでいます。Applescript の開発中に、言語を学ぶなら Swift を学ぶべきだと考えました。将来的にはより高度なプログラムを開発したいからです。Applescript は便利ですが、私がやっていることは Applescript での作業です... Swift を使用してプログラムとスクリプトを開発することを学ぶための次のステップに進みたいと思いました。Swift を使用して Applescript で実行できたことを複製できるようにしたいと考えています。

私が知りたかったのは、アクセシビリティ インスペクターなどからデータを読み取る方法や、applescript が実行できるようなプログラムを制御する方法に関するチュートリアルやガイドがあるかどうかです。

私が Applescript でできることの背景を説明すると、これはBatch Apple ID Creatorの本当に基本的なバージョンです。私は、現在 MDM を使用して i デバイスを管理している小さな学区で働いています。MDM では、各デバイスに独自の Apple ID が必要であり、500 以上の Apple ID を手動で作成するのは思ったほど楽しくありません。これらは、Applescript で再作成した手順の一部です。

  • iTunes が起動しているかどうかを確認する
  • 現在ログインしているユーザーがいるかどうかを確認します。
  • 現在のユーザーがログインしている場合は、メニュー バーの下にある [サインアウト] をクリックします。
  • 「Apple ID を作成...」に移動

その Git リポジトリにある現在のスクリプトを取得し、いくつかの変更を加えて、最新バージョンの iTunes (12.1.2) で動作するようにしました。いくつかの変更を加えた後、私は学びたいと思い、スクリプトの書き直しを開始して、スクリプトがどのように機能するかを完全に理解し、Applescript の構文を学びました。

私がやろうとしていることについてさらに情報が必要な場合はお知らせください。

スロッドネ

4

2 に答える 2

6

私は自分でこのようなことを調査しています。私が驚いたのは、Swift をスクリプト言語として使用できることです。シンプルな「シバン」行 #!/usr/bin/swift を使用するいくつかの短いスクリプトを作成しました

AppleScript 機能にアクセスするには、Swift コードから (Cocoa を介して) AppleScript を呼び出す必要があります。

他の場所で見つけた例を次に示します。

スウィフトコード

let myAppleScript = "..."
var error: NSDictionary?
if let scriptObject = NSAppleScript(source: myAppleScript) {
    if let output: NSAppleEventDescriptor = scriptObject.executeAndReturnError(
                                                                       &error) {
        println(output.stringValue)
    } else if (error != nil) {
        println("error: \(error)")
    }
}

'call AppleScript from Swift' (または Cocoa) または 'call AppleEvents from Swift' (または Cocoa) を検索してみてください。

于 2015-05-30T12:07:15.327 に答える
3

各言語には特定の目的があります。AppleScript の強みは AppleEvents を介したプロセス間スクリプティングであり、Swift の強みは大規模なフル機能アプリケーションのプログラミングです。AppleScript を使用すると、JavaScript を使用して Safari から Web ページのコンテンツを取得し、シェル スクリプトで解析して、Mail で電子メールで送信できます。ほとんどの言語では、AppleScript (Swift を含む) でできるほど簡単にはできません。それらは補完的です。両方を学ぶことで素晴らしいことを成し遂げることができますが、それぞれに独自の制限と長所があります。

于 2015-05-04T04:44:59.557 に答える