2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

AppleScript アップルスクリプト 質問、発表 6

1 :名称未設定:2013/12/21(土) 21:50:45.07 ID:1PJJFexL0.net
質問、発表どっちでもスレ。

■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
OSバージョンも忘れずに。

■参考
AppleScript Language Guide
https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
TN2065: do shell script
https://developer.apple.com/library/mac/technotes/tn2065/
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
MacWiki - AppleScript
http://macwiki.sourceforge.jp/wiki/index.php/AppleScript
鳶嶋工房 / AppleScript
http://tonbi.jp/AppleScript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ
1 http://pc11.2ch.net/test/read.cgi/mac/1174045850/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
5 http://anago.2ch.net/test/read.cgi/mac/1330350325/

391 :名称未設定:2014/11/22(土) 09:33:46.73 ID:MsdAX1Fa0.net
tell app "iTunes" to run

したら隠れて起動してくれたけど
Language Guide見たら、The run command launches an application as hiddenってあって、その通りになった

392 :名称未設定:2014/11/23(日) 08:31:10.56 ID:ehUJvQms0.net
entire contents of とか使って、あらゆるファイル名、フォルダ名を変更(空白文字を削除)する場合、
なんか定石ってあるのかな? 単純にentire contents of 使って取得した後、
すべてのファイル名、フォルダ名に変更かけようとしたらエラーがでた。

393 :名称未設定:2014/11/23(日) 08:51:46.25 ID:UXH7A0PS0.net
>>392
エラー出るソース書けば?

394 :名称未設定:2014/11/23(日) 08:51:47.95 ID:05FNHYym0.net
>>387
詳しい解説をありがとうございます。

>単純なコマンドでの比較なら根本は、全く別の言語だから
>AppleScriptとの対照表を見ても書けないと思います。
全く別言語なのでコマンド単位の対照表だと、意味がないのですね?
それならば、一連のコマンド(ファンクション、サブルーチン?)の
対照ならば、参考にはなりませんか?

例えば、6行のAppleScript:
>>377
のような、ループのなかでiTunesを繰り返し呼び出して、posの
値をチェックしながら、iTunesの曲を30秒ずつ再生するスク
リプトを、swiftで20行程度でかけるものでしょうか? 3倍
前後の長さでswiftに移植できるのであれば、swiftの勉強を
始めたいです。

swiftだと60行(100倍の長さ!)を超えてしまうのであれば、
やめます。

395 :名称未設定:2014/11/23(日) 09:37:43.33 ID:UXH7A0PS0.net
>>394
上にも書いてあるように、他のアプリケーションをapplescriptで操作するには、操作される側の準備が必要なんだ
幸いiThunesはapplescriptに対応してるから、applescriptで操作ができるってわけ
もし同じことをSwiftでやろうとしたら、NSAppleScriptって言うapplescriptを実行するフレームワークを使うか
iThunesのヘッダーをsdefでダンプしてそれ使ってScripting Bridgeを使う方法になる
SBApplicationでcom.apple.iTunesを呼び出してrunすればiThunesが起動してplaypauseで再生停止制御ができる。
これならend if やend tell とかのapplescript独特の書き回しがいらないから、>>377 と同じことするのに6行も使わないで書けると思うよ。
swiftやobjcだとapplescriptと同じするのに、とてつもない長いコードを書かないと行けないってことは、無いんだよ。
単純な動作ならapplescriptよりこじんまり書けるよ。

396 :名称未設定:2014/11/23(日) 10:50:47.22 ID:UXH7A0PS0.net
同じようなことを、objcで書いてみたよ。
コードはこんな感じ、iTunes起動して再生してなかったら再生して
2秒再生したら次の曲に行く
10曲再生したら終わり。
これくらいのコード量で再現できるよ。
#import "iTunes.h"
int main(int argc, const char * argv[])
{
    iTunesApplication *iTapp = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
    [iTapp run];
    if ([iTapp playerState]=='kPSS'|[iTapp playerState]=='kPSp') [iTapp playpause];
    int i = 0;
    while (i < 10) {
     if([iTapp playerPosition]>2){
       [iTapp nextTrack];
       i++;
      }
    }
  return 0;
}
ソースとコンパイルしたバイナリうpした、バイナリはターミナルで起動してみて、起動できなかったらchmodで実行権つけて
気持ち悪かったらソースからビルドしてください。
iThunes11.1.5のヘッダーをダンプした奴も入ってるから。
http://kie.nu/2joL
スレチだからこれ以上は専用スレで質問してください。

397 :名称未設定:2014/11/23(日) 18:07:56.45 ID:05FNHYym0.net
>>396
実際のスクリプト付きの詳しい解説に感謝します。
cとpythonとjavascriptは勉強したので、397は
だいたい理解できました!

>>スレチだからこれ以上は専用スレで質問してください。
「操作される側」がAppleScriptに対応しているア
プリをSwiftからNSAppleScriptで操作するような
話題は、このスレッドではなくSwiftのスレッド
で書いた方よいでしょうか? 

Swiftは本格的な言語なので、Swift全体の基本的な
知識がないと、専用スレッドに書きむことに躊躇し
ます。

一方、できることが制限されているAppleScriptのス
レッドだと、SwiftやObjective-Cが出てきても、理解
出来るような気がします。

398 :名称未設定:2014/11/24(月) 11:10:30.88 ID:LaGmcxsO0.net
スクリプトの定期実行って皆さんどうしてますか?
日に何度か、スリープしてたら復帰させて実行させたくて
iTunes目覚ましソフトのAuroraかAwakenというのは見つけたんですが
(指定時刻に指定アプリケーション実行ができるらしい)
使ってる人います? なにか定番の方法があるんでしょうか

399 :名称未設定:2014/11/24(月) 13:55:33.20 ID:eTZ+RL4e0.net
OSXの基本機能launchdがあるでしょ。

400 :名称未設定:2014/11/24(月) 14:38:52.22 ID:kwtIOeEn0.net
だな。cronでもいい。
但し、launchdもcronもスリープから起こしてくれないからpmsetか省エネ設定と合わせる。

総レス数 1008
389 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★