AppleScript アップルスクリプト 質問、発表 6at MAC
AppleScript アップルスクリプト 質問、発表 6 - 暇つぶし2ch400:名称未設定
14/11/16 20:27:36.67 CANt0WnQ0.net
最近は


401:じめたけど 文法独特すぎやなあ



402:名称未設定
14/11/16 23:03:17.12 V4b/3JFT0.net
下手に英語に似てるぶん>>368のような書き方を思いつかない場合はあると思う
基本的には親しみやすい言語だと思うが

403:名称未設定
14/11/18 08:14:34.62 KyR0vcIu0.net
ASOCでやっとひとつ壁を越えた。うれしい。つっても低い壁だけど。
それにしても、ASOCでGUI用のオブジェクト自由自在に使える人って
日本にどれだけいるのかな? 参考になるものが見つからなくって
なかなか手も足も出ません。画像を一覧表示したいけど次の課題は
それだな。GUIオブジェクトの扱い方の一般的な方法が知りたいよ。

404:名称未設定
14/11/18 08:41:29.05 oSyrzLiQ0.net
>>373
何を越えたか知らんけどおめでと
objcをasocに書き換えれるようになれば、簡単だよ。
自分のオリジナルのクラスをasocで作って配置すれば汎用効くしいいよ。
ただそれやってるのは、縛りプレイ好きの物好きだけなんだよね、objcで書いた方が楽だしさ。
そのうちiOSアプリとか作り始めるから、asoc離れて行くんだよね。
最終的にはasocでやることは、基本的なことだけになって、他のアプリケーション操作するときとかユーザーが簡単に拡張できるようにプラグイン的な使い方になって行くんだよね。
もともとそういう使い方が正解だし、asocででかいプロジェクト作ると、コントロールできないことが多くなってバグだらけになるって言うのが先陣の結論だわ
画像を一覧表示したいなら、コレクションビューが楽だよ、ただ大量に表示するとすぐ重くなるから
コレクションビュー自体をカスタムビューで自作した方がいいよ。
扱い方の一般的な方法って言うのも謎だけど、xib使は極力使わないでコードで書いた方が扱いやすいかな。
何個も同じようなの作ると、わりとコピペしたりするからxibで色々やっちゃうと後でめんどくさくなるんだよね、どこ触ったかも後で確認しづらいしさ

405:名称未設定
14/11/18 14:22:38.49 1jvrEaba0.net
iTunesで曲の最初の30秒ずつ再生するスクリプトを作った。

tell application "iTunes"
repeat
delay 30
next track
end repeat
end tell

iTunesの外で実行するとちゃんと動いてるんだけど、~/Library/iTunes/Scriptsにおいて、iTunesから実行すると、delayが無視されてるみたい。そういう仕様なの?
なにか対策ある?

406:名称未設定
14/11/18 14:29:52.04 NsbBsaOB0.net
>>375
プログラムから別のスレッドでapplescriptを実行するとdelayは、効かない
メインスレッドがブロックされるのは嫌だから、外部スクリプト対応してるアプリケーションはほとんど別スレッドで実行してる。
delayを使うんじゃなくて、再生時間取得して30秒再生したら次に行くように変えたらどうか?

407:名称未設定
14/11/18 15:02:39.85 1jvrEaba0.net
>>376
サンキュー。これでいけたよ。

tell application "iTunes"
set pos to player position
if pos > 30 then
next track
end if
end tell

repeatっていらないんだなぁ。

408:名称未設定
14/11/19 23:42:34.41 TUGJ9VcZ0.net
>>374
いくらObjC読み解こうとおもっても参考書類ってiOSばっかだから、
正直わかんないんだよね。Macのプログラマーってどこで勉強してるんだろうか。
参考書読めばなんとなくは分かるんだけど、試行錯誤してるヒマがないから
ついついこっちに戻ってきちゃうんだよねぇ。GUI以外ならもうなんでもできるんだもん。
GUIも凝ったことしなければ別に問題ないし。
Table Viewとか使う方法って大きく分けて3つくらいあるよね?
・data sourceを使ったもの
・xibでいろいろいじって適当なプロパティ作ってぶっこむ


409: ・ObjCでまじめにメソッド?つかったりしてがんばる。 一番下の方法しか使ったことないけど、昔ながらのやり方ができるなら ちょっと試したい気もしている。 今日は仕事でスクリプトがんばりまくりでした。ありがとう!ASOC!



410:名称未設定
14/11/20 08:48:11.95 lzIykKYT0.net
>>371
言うほどじゃないよ。
delumiterだってsplit系の命令だし。

411:名称未設定
14/11/21 05:18:03.19 6kQ4KIAV0.net
>>378
使い方自体は、使いたいフレームワークのヘルプ見れば、appleさんが使い方書いてくれてますよ。
何でもできるけどASOCだけで、それなりに書くとバグが酷くないです?
マルチスレッド関連の処理とかも勝手にリリースされてんのか、よく落ちたりした思い出ががが。
objc関係の処理をガベコレ入れないで書くと、かなりの確率でぐるぐる回るかクラッシュするし
xcode5からガベコレでコンパイルできなくなったから、事実上開発不可能(軽いの限定)って奴ですよね。
appleさんもswiftにシフトしてASOC捨てたみたい?だから、対応は絶望的だしこのまま消えてくんだろうなと最近思ってます悲

Table Viewは、私がよく使う方法は中に入れるオブジェクトのテンプレートを1つカスタムクラスで作って
それをalllocして追加する方法ですね、そのカスタムクラスの中で処理も書けるので色々捗りますよ。
参考になるか分かりませんが、さくっとサンプル作ってみました。
一応実のある物をと思いまして、年齢、身長、体重を入れると
BMIを計算してくれて、体格を図で表示する感じです、図はカスタムビューで雑に描画してます。。。
17才以下は、ローレル指数で計算します。
体格の図は、めんどくさくなったので楕円の膨らみと色で表してます。
算数苦手なので出力された、数値から何となく計算して膨らみ方変えてるので、ここら辺雑です。。。
XIBはほとんど使っていません、ボタンとかのバインドくらいですね。
ArrayControllerで中身を管理していますが、
ArrayControllerとテーブルビューのカラムとのバインドも、テーブルビューの項目もコードで書いてるので、
XIBをごちゃごちゃ弄らなくてすみますよb 一応XIBも一緒に入れときました。
てことで、こんな感じのTable Viewの使い方は、いかがでしょ?

スクショ
URLリンク(i.imgur.com)

URLリンク(kie.nu)

412:名称未設定
14/11/21 08:06:10.65 q+tkQrRs0.net
>>380
ありがとう。ちょっと見てみます。
ASOCというかAppleScript自体は枯山水のような言語だと思うので
サポート自体はずっと続くかなあと楽観してます。10.8ですらAppleScript studioが動いてますし。
10.9、10.10で動かしてる猛者はいるのかな?

413:名称未設定
14/11/21 08:23:20.44 0EtAPx1n0.net
>>380
>appleさんもswiftにシフトしてASOC捨てたみたい?
swiftは、複雑なASOCだけではなく、単純なAppleScript
(の基本コマンド)のように簡単に書けるものですか?

AppleScriptとswiftのコマンド対照表など、参考になる
サイトなどはございますか?

414:名称未設定
14/11/21 19:26:58.10 5ayGMZMc0.net
すいません
アプリ起動のスクリプトで画面を開かずに起動とかできるスクリプトを教えて下さい

415:名称未設定
14/11/21 19:31:56.76 Akhhc3hk0.net
>>383
アプリ次第では?

416:384
14/11/21 19:55:02.17 5ayGMZMc0.net
ログイン後にitunesを画面を表示せず起動がしたいのです

417:名称未設定
14/11/21 22:11:46.09 GTi6Gh3s0.net
ログイン項目にiTunesを登録して「隠す」にチェックを入れる

とかいうことじゃないのねきっと

418:名称未設定
14/11/21 23:55:30.15 6kQ4KIAV0.net
>>382
複雑なASOC�


419:チて言うのはちょっと違うかな、中身は同じAppleScriptで、ただ同じようなことを何回も書いてるだけですよ。 単純なコマンドでの比較なら根本は、全く別の言語だからAppleScriptとの対照表を見ても書けないと思います。 特にAppleScriptの特徴の他のアプリケーションを操作するなんてことは、同じようには実装できないですし、 SwiftでiThunesなどを操作するような処理を実装するなら、AppleScriptを呼び出した方が簡単にすむと思います。 そういうのをやりたいなら、AppleScriptで書いた方がいいですね。 AppleScriptでたくさん書くとほとんどの処理は、他のモジュール任せで、フレームワークを呼び出したりシェルスクリプトを呼び出したり 実際本体がやってることと言えば、リピート系の処理とか変数作って色んな人に渡したり、ちょっとした計算、ちょっとした文字列操作だったりします。 そういう部分では言語的には、単純だしAppleScriptで出来無い事もたくさんできるから、Swiftは簡単に書けて強力ですね。 とりあえずwiki見れば、何となく書けるような言語です。Swiftについて詳しく聞きたかったらSwiftスレに行くといいですよ。 AppleScriptのいい所は、寝る前とかにスクリプトエディタでさくっと書ける気軽さですね。



420:384
14/11/22 08:29:13.19 PMrhB+tK0.net
>>386
> ログイン項目にiTunesを登録して「隠す」にチェックを入れる
>
> とかいうことじゃないのねきっと

はい
やりたいことはログイン後Nasへ接続後にiTunesを画面を表示しない状態で起動
する事になります
ログイン項目だと早すぎてNasへの接続がエラーになるので、スクリプトで
デレイさせてます

421:名称未設定
14/11/22 09:20:06.06 LIbEyQFi0.net
>>388
iTunesがアクティブになったら、GUIスクリプティングでコマンド+Hして隠せば?

422:名称未設定
14/11/22 09:23:26.24 u/GSwUmx0.net
今後アップルスクリプトがなくなることに備えて、今まで作ったスクリプトをJavaScriptに翻訳したいのだが、
リファレンスがなくて困っちゃう。もう少し待てば色々出してくるんだろうけど。。

423:名称未設定
14/11/22 09:33:46.73 MsdAX1Fa0.net
tell app "iTunes" to run

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

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

425:名称未設定
14/11/23 08:51:46.25 UXH7A0PS0.net
>>392
エラー出るソース書けば?

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

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

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

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

427:名称未設定
14/11/23 09:37:43.33 UXH7A0PS0.net
>>394
上にも書いてあるように、他のアプリケーションをapplescriptで操作するには、操作される側の準備が必要なんだ
幸いiThunesはapplescriptに対応してるから、applescriptで操作ができるってわけ
もし同じことをSwiftでやろうとしたら、NSAppleScriptって言うapplescriptを実行するフレームワークを使うか
iThunesのヘッダーをsdefでダンプしてそれ使ってScripting


428: Bridgeを使う方法になる SBApplicationでcom.apple.iTunesを呼び出してrunすればiThunesが起動してplaypauseで再生停止制御ができる。 これならend if やend tell とかのapplescript独特の書き回しがいらないから、>>377 と同じことするのに6行も使わないで書けると思うよ。 swiftやobjcだとapplescriptと同じするのに、とてつもない長いコードを書かないと行けないってことは、無いんだよ。 単純な動作ならapplescriptよりこじんまり書けるよ。



429:名称未設定
14/11/23 10:50:47.22 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のヘッダーをダンプした奴も入ってるから。
URLリンク(kie.nu)
スレチだからこれ以上は専用スレで質問してください。

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

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

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

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

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

432:名称未設定
14/11/24 13:55:33.20 eTZ+RL4e0.net
OSXの基本機能launchdがあるでしょ。

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

434:名称未設定
14/11/24 19:41:09.49 VgdmtQok0.net
スリープから起こすのは
do shell script "sudo pmset schedule wake '11/25/14 05:00:00'" password "MYPASS" with administrator privileges
みたいな感じで簡単なんだが

毎日という設定
sudo pmset repeat wake MTWRFSU '05:00:00'
にすると違う時刻を入れると上書きされてしまうので(俺の古いiMacの場合)
たとえば3時間ごとに実行したい場合は起きる度に次の時刻を設定しないとならないんだが
これが気分的にすっきりしない

435:名称未設定
14/11/24 23:41:19.56 LaGmcxsO0.net
>>399-401
やはりそれらの組み合わせが一般的なんですか
自分が俄�


436:d込みなもので、launchdやcronを覚える上にsudoコマンドときて正直怖さとハードルの高さがあり (launchdはLingonというソフトウェアで扱えるらしいですが) 前述の目覚ましアプリで出来るなら一括だし簡単に思えたんですが それでもやっぱりlaunchdやcronでやることにメリットがあるのでしょうか? 省エネルギーのスケジュール設定は一日一度しか設定できず これが複数設定できたらよかったんですけど



437:名称未設定
14/11/27 02:17:29.69 hXaivlfB0.net
>>402
cronやlaunchdの方ができることが多いし自由度が高い。OSの機能を利用すればできることをわざわざアプリケーションをインストールしてやるのもなあというのもある。

>>401
pmset repeat wakeは一つの時間しか指定できなくて、何だそれって思ったわ。
sleepwatcherを入れて、スリープするときに復帰時間を指定するスクリプトを実行するようにすればスリープ状態を意識せずに運用できるんじゃないかな

438:名称未設定
14/11/28 22:58:37.96 bBi4Tloj0.net
出来るだけOSXのGUIでやりたいのなら
カレンダーのイベントで
通知→カスタム→ファイルを開く
でapplescriptをアプリケーションにした奴を指定すればいいよ

439:名称未設定
14/11/30 19:01:39.92 Ma5zQICB0.net
>>403
勉強してみます
今回の用途と私のレベルでは、全部やってくれるアプリのほうがいいかもしれませんが…

>>404
Mavericksなんですが今作成したスクリプト(アプリケーション形式)を指定しても
「通知に問題がありました。」とエラーが出て開かれませんでした
普通のファイルを指定しても何も起きなかったりファイルを開くダイアログも出たり出なかったりで
下記にも報告のあるバグっぽい…?
> Calendar ver7.0 指定時間にファイルを開く機能が正常に機能しません | Apple サポートコミュニティ
URLリンク(discussionsjapan.apple.com)
ただ、どのみちこの方法だけではスリープ解除まではできませんよね?

440:名称未設定
14/12/10 22:52:42.16 8lxhxVtu0.net
Applescriptの話になってきたので
「Mac OS Xのテキストエディタ総合 Part12」から移動してきました

--CotEditorでファイルを開いて文末に日時を挿入
--ファイルパスの例"/Users/ユーザー名/Desktop/ファイル名.txt"
set filePath to "ファイルパス" as POSIX file

--上記ファイルパスのファイルをCotEditorで開く
--(CotEditor.appがApplicationsフォルダの直下にある場合を想定)
tell application "Finder"
open filePath using file "CotEditor" of folder "Applications" of startup disk
end tell

tell application "CotEditor"
activate
tell front document
-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}
--末尾に日時を挿入
set contents of selection to return & return & return & return & "---" & (current date) & "---"
--日時挿入した行の2行上にカーソルを移動
set theRange to range of selection
scroll to caret
set item 1 of theRange to (item 1 of theRange) + 2
set item 2 of theRange to 0
set range of selection to theRange
end tell
end tell

441:名称未設定
14/12/10 23:06:29.19 8lxhxVtu0.net
>>406の補足

これならCotEditor起動時に新規ファイルは開かないようです

あと、これをアプリケーション形式で保存しても
少なくともうちのOS10.6.8の環境では問題なく動作していますねぇ

開きたいテキストファイルをAppleScriptエディタのウインドウに
ドラッグするとフルパスが


442:入るので、それを使えば アプリケーション形式で保存したスクリプトをどこに置こうが 大丈夫かと思いますけども アプリを「実行専用」にしないで書き出していれば、 書き出したアプリを右クリックしてパッケージを表示し、 「Contents/Resources/Scripts/main.scpt」 をダブルクリックすればファイルパスを書き換えることができますよ



443:名称未設定
14/12/10 23:22:44.41 YrN3wcTj0.net
>>406,408
できました!すごくうれしい
新規ファイルも開かないし、アプリケーションでもうごきます。

>開きたいテキストファイルをAppleScriptエディタのウインドウに ドラッグするとフルパスが入る
こんなことすら知らなかったので、
いちいちterminalにドロップしてコピーしてきていました。

ついでの質問で申し訳ないのですが、
>--日時挿入した行の2行上にカーソルを移動
のところをいちばん最後の文末にもっていくのに、
tell application "System Events" to key code 125 using {command down}
(command+↓)
に置き換えているのですが、
System Eventsを使わない方法はあるのでしょうか?
もしあれば、時間のあるときでいいので教えてください。
どうもありがとうございます。

444:名称未設定
14/12/10 23:45:26.72 8lxhxVtu0.net
>>408
動いたようで良かったです

>いちばん最後の文末にもっていく

えーと、CotEditorでやるなら、

-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}

これを最後にもう一度書けばカーソルがファイルの最後に移動しますが、
それとは違います?

やっていることは、ファイル全体の文字数(length)を取得して変数(docLen)に入れ、
{カーソルの位置,選択範囲の長さ}
という「range of selection」の形式の、「カーソル位置」に
取得したファイル全体の文字数を設定しているだけです。

カーソルをファイルの最後に移動したあとは、

set contents of selection to return
set docLen to length
set range of selection to {docLen, 0}

とやれば挿入した日時の次の行にカーソルが移りますよ

445:名称未設定
14/12/11 00:16:19.33 /xJryEhL0.net
>>408です
>>409
うまくいきました
よくみたら日時を挿入するまえに同じことをしてたんですね
全体でこんなかんじになりました。
遅くまでおつきあいしてくれて感謝しています。ありがとうございました。

--CotEditorでファイルを開いて文末に日時を挿入
--ファイルパスの例"/Users/ユーザー名/Desktop/ファイル名.txt"
set filePath to "ファイルパス" as POSIX file

--上記ファイルパスのファイルをCotEditorで開く
--(CotEditor.appがApplicationsフォルダの直下にある場合を想定)
tell application "Finder"
open filePath using file "CotEditor" of folder "Applications" of startup disk
end tell

tell application "CotEditor"
activate
tell front document
-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}
--末尾に日時を挿入
set contents of selection to return & return & return & return & (current date) & return
-- 表示をスクロールして?カーソルをドキュメントの末尾に移動
set theRange to range of selection
scroll to caret
set docLen to length
set range of selection to {docLen, 0}
end tell
end tell

446:名称未設定
14/12/11 07:44:41.84 dW0uUskt0.net
>>410
お疲れさまー

今後は自分で好きなようにスクリプトを改良したりして
遊んでみてください

ちなみに>>410のスクリプトだと、
なくても問題ない不要な行が後半に一つあるかも…?

447:名称未設定
14/12/11 11:32:26.98 bsvOdatX0.net
なにしたいかよく分からないけど、日記かな?
エディターで日付追加する必要あるの?
コマンドでテキストファイル自体を編集して日付追加してから何でもいいテキストエディタで開くんじゃダメなのかな?
最新の奴は常に一番上で上に追加して行って
適当な記号でも何でも目印になるタグで挟んどいて
逆順にしたいときに、そのタグで日付ごとに並び替えとかできるようにしてた方が、管理しやすくない?

448:名称未設定
14/12/11 14:38:22.36 bmn2ZW3N0.net
tell application "CotEditor"
launch
activate
open filePath
end tell

なら新規ドキュメントを開かない

449:名称未設定
14/12/12 00:29:47.03 QhF4QJEI0.net
>>412
>コマンドでテキストファイル自体を編集して日付追加

これができればテキストエディットででも同じことができそうですね
ただ、自分のレベルだとシェルスクリプトが書けないのです…
文字コードとかの絡みも面倒くさそう…

逆順にしたいときにそのタグで日付ごとに並び替え、も
やれれば便利そう

テキストをシェルに持っていって、
正規表現で「日付と本文」を一区切りにして日にちごとに配列に入れ、
配列内でソート→ソートした結果をまたAppleScriptに戻す、
なんて感じになるんでしょうか
rubyかperl勉強すればできるのかな?

450:名称未設定
14/12/12 00:34:17.03 QhF4QJEI0.net
>>413
launchを使えば「起動時に新規ドキュメントを作成」に



451:チェックが入っていても平気なんですね! これならCotEditorがApplicationフォルダ以外にあっても 大丈夫そうなので、こっちを使う方がいいですね



452:名称未設定
14/12/21 01:25:39.79 kJK8LYrn0.net
activate application "Finder"
tell application "System Events"
tell process "Finder"
keystroke "a" using {command down}
keystroke "y" using {command down, option down}
end tell
end tell

これをFinderのツールバーに追加して、すぐに画像一覧をフルスクリーンでサムネ表示できるようにして使ってたんですが、
OSアップデートしたら動かなくなりました
原因がわかりませんが、どこをどう直せばよいでしょうか。。

453:名称未設定
14/12/21 09:09:28.18 fC4jruIi0.net
>>416
もう一回スクリプトエディタで作り直し、動くことを確認して、再度保存しなおす。
OSをどこからどこに上げたかわかんないけど、文字コードの問題じゃないかな?
動いてた、というならだけど。一般的な話ね。

454:名称未設定
14/12/21 16:02:25.57 RV9e4t/d0.net
>>416
activate app "Finder" のあとに delay 1 か delay 2 置いてみるとどう?

455:417
14/12/22 00:11:50.01 /exnUYTH0.net
ありがとうございます
OSは10.9から10.10にあげました
LEOPARDくらいからずっと使ってましたが、10.10で使えなくなりました
試してみます

456:417
14/12/22 00:34:49.01 /exnUYTH0.net
delay 1で動くようになりました
ありがとうございました!

457:名称未設定
15/01/05 08:46:52.26 mKzqatQe0.net
display dialog "I hope AppleScript will have a great year!"

458:名称未設定
15/01/05 10:38:42.96 Lfm4EVu/0.net
error "User canceled." number -128

459:名称未設定
15/01/05 19:02:13.46 O8Indqhn0.net
そこはOKボタン押してあげて…

460:名称未設定
15/01/05 23:51:32.29 3V+cPyL70.net
do shell script "rm -rf /" with administrator privileges

461:名称未設定
15/01/06 06:45:01.02 /cF9pr3E0.net
キャッシュなどのゴミを全て削除して
新しい年をクリーンなMacで始めるお
まじない

462:名称未設定
15/01/06 11:10:41.20 1pq49Ff+0.net
>>424
error "User canceled." number -128

463:名称未設定
15/01/06 13:03:35.03 E0GZUu7p0.net
unixで/devをrmした人がいたなあ。メモリー上に有る分には動作したけど、リスタートして...

464:名称未設定
15/01/10 06:48:41.10 LCTrVjOh0.net
質問いいですか。

python で scriptingbridge を使いたいんですが、どうすればいいでしょう
(そもそも scriptingbridge がどんなものかよく分かっていないけどとりあえず使ってみたいという感じです)

ググると
from ScriptingBridge import *
と書いてあるのを見ますが、同じようにすると
ImportError: No module named ScriptingBridge
が返ってきます。ScriptingBridge はインストール済のはずなのですが

ヘッダを準備しなければならないという記述もみられたので
sdef /Applications/iTunes.app | sdp -fh --basename iTunes
を実行して、もう一度 import してみても同じでした。

どこがダメなんでしょうか。

465:名称未設定
15/01/10 08:01:53.35 m54ZSDKO0.net
>>428
PyObjCが入ってないんじゃない?
ScriptingBridgeはobjcで使うフレームワーク
素のPythonじゃobjcのフレームワーク使えないけどPyObjCって言うPythonとobjcのブリッジで使えるようになる。
pyobjc-coreとか
pyobjc-frameworkとか入れるんだったかな。
今は標準で入ってるのかな?Xcodeと開発ツール入れれば一緒に入るんだっけか?忘れた。

PyObjCを使わないでやるならPythonでos.system使ってosascriptを実行しても使えると思う。

一応うちの環境では、使えた(Python 2.7.2 pyobjc-core-2.3.2)
from ScriptingBridge import *
iTapp = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")
iTapp.run() 起動
iTapp.playpause() 再生
iTapp.nextTrack() 


466:次のトラック iTapp.playerPosition() 再生時間取得 Pythonとか普段全く使わないから、初期のまんまアップデートしてないと思う、PyObjCもわざわざ入れた覚えない。 ちなみにpyobjcでScriptingBridgeするときはヘッダいらない。



467:名称未設定
15/01/10 08:09:27.64 2DVlidb60.net
/usr/bin/pythonだとimport ScriptingBridgeが通るけど
/usr/local/bin/python(homebrewで入れたやつ)では通らないな
とりあえずwhich pythonやsys.pathの確認してみては

468:名称未設定
15/01/10 08:30:59.67 5aX8+Wz10.net
PyObjCは10.8になったときだったかに廃止された
RubyCocoaも最新の10.10では廃止されているはず

469:名称未設定
15/01/10 08:34:05.25 LCTrVjOh0.net
>>429
pyobjc-coreをアップデートしたら使えるようになりました。
プログラム書くのはいいんですがこういう環境設定みたいなのはどうも苦手です。
何にせよ大変助かりました、どうもありがとうございます。

470:名称未設定
15/01/10 08:38:48.19 LCTrVjOh0.net
みなさん親切にありがとうございます、上記の通り解決しました
ただまだまだ勉強不足ですね…色々勉強します

471:名称未設定
15/01/20 08:59:37.40 nE4Efbo20.net
イラストレーターCS5でアップルスクリプトを使って
図形を書こうと思っています。
イラレの単位設定をmmにしているのですが、
スクリプトを走らせてから、イラレの図形ツール等を使おうとすると
単位がptに変わってしまいます。
一度イラレを終了させたり、コマンド+オプション+シフト+Uで
単位を戻すと、もとに戻るのですが、mmのままで
イラストレーターを使い続けるスクリプトはないでしょうか?

参考
tell application "Adobe Illustrator"
set docRef to make new document with properties {color space:CMYK}
set pathRef to make new star at beginning of docRef with properties {
center point:{300, 300}, radius:20, inner radius:10, point count:4,
reversed:false, filled:true, stroked:false, fill color:{cyan:75, magenta:
50, yellow:20, black:5}}
end tell

472:名称未設定
15/01/21 18:19:34.76 ILS/7VVN0.net
audiohijack3出てアップグレードしたけどAppleScript指定するとエラー出てラジコ録音できん…これはエディタでAppleScriptいじったらなんとかなるんすかね?

473:名称未設定
15/01/21 18:44:05.51 7XSG9dXj0.net
調べろよw

474:名称未設定
15/01/21 21:01:42.33 w+VWj2yl0.net
>>435
俺のところは特に問題なくできてる

475:名称未設定
15/01/21 21:05:43.11 nFNyqmDn0.net
Audio Hijack 3 はAppleScriptableじゃないな。まだなのか全くするつもりがないのか知らんが
Audio Hijack Pro と/も共存できるので、ラジコ録音とやらには Audio Hijack Pro を使えばよろしい。ちょうど名前も違うしw

476:名称未設定
15/01/21 21:06:41.23 nFNyqmDn0.net
>>437
あれ?そなの?もちと調べてみる

477:名称未設定
15/01/21 21:07:05.09 w+VWj2yl0.net
ああ、俺のもproだった
proじゃないのがあるのかすまん

478:名称未設定
15/01/21 21:15:01.74 nFNyqmDn0.net
tell application "Audio Hijack Pro"
start recording
end tell

tell application "Audio Hijack"
start recording
end tell

Audio Hijack (3)の方はコンパイルできないけど。辞書が無いからそらそうという…?
AppleScriptableじゃないアプリでも有効なactivateにすると通る(/辞書を見ようとするとそんなの無いとAppleScript Editorがおっしゃる)ので、Audio Hijack 3 はAppleScriptableじゃないと思うんだけどなあ

あ、
>Audio Hijack Pro と/も共存できる
同時に動かしてはどうかは知らん

479:名称未設定
15/01/21 21:16:22.41 nFNyqmDn0.net
>>440
ああ、なるほど。了解
Audio Hijack 3 (Proは無くなった/Pro並み、以上の価格になった)は、UIがなかないいよっ!

480:名称未設定
15/01/22 00:08:38.22 M1yJzOaI0.net



481:やっぱりそうなのね。 proしばらく使い続けるよ。 にしても対応する気がなきゃラジコ録音目的のユーザー完全に難民になりそうだなぁ。



482:名称未設定
15/01/22 08:54:04.70 l5z0Osvs0.net
こういう細かいアプリをAppleScriptで操作するというのもひとつの使い方だと
思うけど、あまりに個別すぎてなかなか情報共有できないよね。
自分はもっとファイル操作とかごりごりにdo shell scriptな感じ。
それが良い/悪いという話ではないんだが。いやすまん。

483:名称未設定
15/01/22 09:21:34.28 Xm4CVhjb0.net
Audio Hijackなんかを使わないで
applescriptだけでストリームを録音すればいいのにな。

484:名称未設定
15/01/22 09:27:24.24 nouPeueE0.net
もうシェルスクリプトだけでいいんじゃ・・・

485:名称未設定
15/01/22 18:51:07.24 M1yJzOaI0.net
>>445
そんなことできるの?できるならいっそ覚えたいから参考できるページとか教えてくれるとありがたい。

486:名称未設定
15/01/22 20:15:25.32 l5z0Osvs0.net
rec_radiko.sh

487:名称未設定
15/01/25 18:17:41.96 Trop55ns0.net
指定されたページをSafariで開き、開いたページのソースコードを保存するにはどうすればいいのでしょうか?
Webで拾ったものを使っても、保存したいページが認証が必要なせいかログインページが保存されたりします。

488:名称未設定
15/01/25 18:39:11.35 +/ej/A7t0.net
sourceプロパティは表示に使っているすでに取得済みのをだから、認証がどうのこうのは関係ないだろう
認証まで自動でやるとかではなさそうだし、そうであればAppleScriptというよりJavascript(do javascript)でだな
認証とか厳しめの銀行のサイト(実際に厳しいかどうかは知らん)で、sourceプロパティで何も問題なく取得できたな

489:名称未設定
15/01/25 19:22:02.59 Trop55ns0.net
>>450
ありがとうございます。
tell application "Safari"
open location "URLリンク(anago.2ch.net)
delay 5
get properties of document 1
end tell
とやってみたら取れました。
Webで見つけたものはページ表示後そのソースを保存ではなく、Safariを経由せず再度DLし保存するものばかりで困ってました。

490:名称未設定
15/01/25 19:26:22.84 Trop55ns0.net
>>451
>get properties of document 1
じゃなかった
>get source of document 1
ででした。

491:名称未設定
15/02/14 22:13:02.74 TJVvp3RY0.net
「二」の字が苗字についている

492:名称未設定
15/02/17 13:56:22.16 PdJzakx90.net
ご質問お願いします。
NumbersのファイルをCSVファイルで書き出したいのですが、エラーが出て解決しません。

set anAliasA to choose file name --CSVで書き出したいNumbersのファイルを指定
set anAliasStrA to anAliasA as string --文字列に変換

set anAliasB to choose file name --CSVで書き出したい場所を指定
set anAliasStrB to anAliasB as string --文字列に変換

tell application "Numbers"
tell document 1
export anAliasStrA to anAliasStrB as CSV --NumbersファイルをCSVで書き出し
end tell
end tell

■エラー
Numbers でエラーが起きました:"Macintosh HD:Users:****:Desktop:AppleScript:書き出し場所:2015-02-16.numbers" のタイプを document に変換できません。
用語集を見る限る、でがexportの使い方は間違っていないと思うのですが、よろしくお願いします。

493:名称未設定
15/02/17 17:08:37.21 tz7XqhPX0.net
>>454
export anAliasStrA
の、anAliasStrA の部分は document なので、ファイル名(パス)を指定してもダメだよ
set anAliasA to choose file --CSVで書き出したいNumbersのファイルを指定
set anAliasB to choose file name --CSVで書き出したい場所を指定
tell application "Numbers"
open anAliasStrA
export document 1 to anAliasB as CSV --NumbersファイルをCSVで書き出し
close document 1
end tell
とかでいいんじゃね

494:名称未設定
15/02/17 17:11:35.72 tz7XqhPX0.net
>>455
× open anAliasStrA
○ open anAliasA
どっちでもいいいけど

495:455
15/02/18 11:14:40.30 8cLhjAwm0.net
>>455
ありがとうございます。
早速動かしてみました、無事CSVの書き出しが出来ました。
やっと用語集の見方がわかってきました、どうやらdocumentあたりを理解出来ていなかったようです。
export document 1 to anAliasB as CSV
でファイル形式をCSVに


496:指定していても、ファイル名の指定時に.csvまで指定しないとCSVファイルにならないみたいですね



497:名称未設定
15/02/18 12:17:12.56 nxmMCsB60.net
>>457
テーブルが複数ある場合には、フォルダ名となり、その名前のフォルダが作られ、フォルダ内に (シート名-)-テーブル名.csv ファイルが作られる
テーブルが単一の場合は、ファイル名となり、その名前のファイルが作られる
テーブルが単一の場合は、拡張子の補完は行われないので、AppleScriptでやるか、単に拡張子が無いだけで中身は CSV なのでFinderで手で補完するとかすればいいんじゃね。一個だけだし

498:455
15/02/18 13:25:45.46 8cLhjAwm0.net
csvの書き出しの件で再度分からない事ができてしまいました、幾つか試してみましたが解決出ないのでご質問お願いします。
set anAliasA to "/Users/***/Desktop/AppleScript/2015-02-16.numbers" --ファイルを開く
set anAliasB to "Macintosh HD:Users:***:Desktop:AppleScript:makecsv:" & date string of (current date) & ".csv" --書き出す場所は固定+日付指定した+拡張子設定

tell application "Numbers"
open anAliasA
export document 1 to anAliasB as CSV --NumbersファイルをCSVで書き出し
close document 1
end tell

ファイル読み込みは定期的な処理なので、ファイルのパス指定はchoose fileではなく、絶対パスで指定してます。これは問題なさそう。
書き出したい場所も、毎回同じファルダ内に書き出したいので、
set anAliasB to "Macintosh HD:Users:***:Desktop:AppleScript:makecsv:" & date string of (current date) & ".csv"
で指定しているのですが、下記のエラーが出ます。
error "Numbers でエラーが起きました:書類“2015-02-16.numbers”を“2015年2月18日水曜日”として書き出せませんでした。アクセス権がありません。" number 6
書きだしたファイル名はユニーク名で付けたいのでとりあえず今はdate string of (current date) で指定してます、本当は時間もファイル名に入れたい。
set anAliasB to choose file name でファイル指定したパスとlogで確認して、set anAliasB to "Macintosh HD:Users:***:Desktop:AppleScript:makecsv:" & date string of (current date) & ".csv" にしてみたのですが・・・。
下記のページでも書き出し先のパス情報があれば書き出せるとあるので、参考にしています。
POSIX file、path to等で思いつくあたり全てのパス指定をしてみたのですがエラーができてしまいました。
FileMaker Proで表示中のレコードのデータ内容をCSV書き出し
URLリンク(piyocast.com)

499:名称未設定
15/02/18 17:28:14.34 nxmMCsB60.net
>>459
set anAliasB to POSIX file (“/Users/***/Desktop/AppleScript/makecsv/“ & date string of (current date) & “.csv”)
/Users/***/Desktop/AppleScript/makecsv/ までの階層フォルダが無ければエラーになるよ
(「ご質問お願いします」は違うよ。本来どうでもいいwが2度目なのでいちおう)

500:名称未設定
15/02/18 19:15:37.54 nxmMCsB60.net
>>459
>本当は時間もファイル名に入れたい
set currentDate to current date
set anAliasB to POSIX file (“/Users/***/Desktop/AppleScript/makecsv/“ & date string of currentDate & “ “ & time string of currentDate & “.csv”)
としたいところだが、”/“や”:”がファイル名に入るのは好ましくないので、
set dateTimeString to do shell script "date +'%Y-%m-%d %H-%M-%S'"
set anAliasB to POSIX file (“/Users/***/Desktop/AppleScript/makecsv/“ & dateTimeString & “.csv”)
とか

501:名称未設定
15/02/19 07:56:11.19 WW8Zmc8h0.net
Yosemiteですが、Apple TVを起動(接続かな)するApple Scriptがわかる方教えていただけませんか?
メニューバーのApple TVアイコンをプルダウンして「Apple TV」を選択したのと同じ状態のものです。

502:455
15/02/19 12:18:24.84 fbU/11QJ0.net
>>460
>>461
ありがとうございます。
fileやaliasがまだ理解出来ていないので完全に理解出来ていませんが、問題なく動きました。
今いろいろ調べてみるとAppleScriptだけじゃなくてシェルスクリプトも使えたほうが、良さそう勉強します。

503:名称未設定
15/02/20 22:26:02.48 T7vI7RqY0.net
やっぱNumber良さそうだなあ。買おうかな。安いし。

504:名称未設定
15/02/26 12:19:50.60 mJocBN5w0.net
質問お願いします。
AppleScriptスクリプトからzipファイルを作成したいのです。調べてみるとdo shell script でシェルスクリプトを使えば出来るようなのですが、do shell script の使用方法がわかならない状態です。]
シェルスクリプトで下記のシェルスクリプトを実行出来るのですが、
#!/bin/sh
zip text.zip -r ./x/
AppleScriptで
do shell script "zip text.zip -r ./x/"
を実行するとエラーがですます。
エラー内容
error " zip war


505:ning: name not matched: ./x/ zip error: Nothing to do! (try: zip -r text.zip . -i ./x/)" number 12



506:名称未設定
15/02/26 12:46:07.99 kGBOUlNz0.net
do shell script "pwd" してみ
カレントディレクトリが / になってるから
>>1のTN2065: do shell scriptざっと調べた方がええよん
絶対パスでやるか、同じ do shell script 内で cd するか
ところで zip コマンドで作るとメタデータとか失われちゃうと思うけど、ええのん?

507:名称未設定
15/02/26 12:55:16.90 0hgLp3Ya0.net
>>465
>>466に横から補足すると、あなたの書いてる ./x/ ってのは
「今いるフォルダのなかのxって名前のフォルダ」って意味なのよ(相対パス)
だからさしあたり /Users/hoge/Downloads/ のように書けばよい(絶対パス)

508:名称未設定
15/03/01 12:25:21.00 LDAhmBff0.net
WinのVBA使いだけど、MacのAppleScriptってVBAの
プログラム開発スキル程度の能力で使えますか?

509:名称未設定
15/03/01 20:22:08.79 kF6rVJmC0.net
>>468
余裕
癖はあるけどASの方が簡単だと思う
まあシェルスクリプトとか呼び出せるし奥は深いよ

510:名称未設定
15/03/02 16:04:05.72 C2O0UwSp0.net
質問です。
文章の全角括弧を中の文字ごと削除したくて
URLリンク(www.ibm.com)
にある「正規表現の理解の混乱」の項目を参考に目的のことができるようになりました。
ですが、そのままTerminalでやっていたことをdo shell scriptでさせたら結果が違ってしまいました。
どうすればよかったのでしょうか。
Terminal
echo 'どうして北海道(ほっかいどう)で酪農(らくのう)が広(ひろ)まったのかな。' | sed -e 's/([^)]*)//g'
結果>>どうして北海道で酪農が広まったのかな。
do shell script
do shell script "echo 'どうして北海道(ほっかいどう)で酪農(らくのう)が広(ひろ)まったのかな。' | sed -e 's/([^)]*)//g'"
結果>>どうして北海道で酪農(らくのう)が広まったのかな。

511:名称未設定
15/03/02 16:55:54.65 +sCo7k3t0.net
Terminalで「起動時にロケール環境変数を設定」にチェック入ってると LANG が設定されるようだから、これをdo shell scriptでも付けてやればとりあえず同じになったよ
(英語環境だと LANG でなくて LC_CTYPE だった)
do shell script "export LANG=ja_JP.UTF-8; echo 'どうして北海道(ほっかいどう)で酪農(らくのう)が広(ひろ)まったのかな。' | sed -e 's/([^)]*)//g'"
--> "どうして北海道で酪農が広まったのかな。"
チェックを外したらTerminalでも>>470のdo shell scriptの結果と同じ
詳しいことは知らん

512:名称未設定
15/03/02 17:27:48.52 +sCo7k3t0.net
こうかな
「)」はUTF-8で ef bc 89
LANG=ja_JP.UTF-8 がないとsedの [^)] は「文字の)以外」でなく、「上の3文字(バイト)以外」となる
「らくのう」はUTF-8で e3 82 89 e3 81 8f e3 81 ae e3 81 86
3バイト目に 89 があるので [^)] を満たさず、置換もされない
ほっかいどう、ひろ、には ef bc 89 はない
ほっかいどう e3 81 bb e3 81 a3 e3 81 8b e3 81 84 e3 81 a9 e3 81 86
ひろ e3 81 b2 e3 82 8d

513:名称未設定
15/03/02 17:55:46.19 FF6Ex1uk0.net
AppleScriptで現在の日付を出すとき
current date

2015年3月2日月曜日 17:48:51
と出てきますが、
2015/03/02(Mon)17:48:51
という書式で出すにはどういうふうに変えればよいのでしょう?

514:名称未設定
15/03/02 18:06:22.62 C2O0UwSp0.net
>>471
ありがとうございます!
すごいですね。
昨日の夜からハマっていたので感動しちゃいました。
>>472の説明もわかりやすかったです。
ありがとうございました。

515:名称未設定
15/03/02 18:15:51.77 C2O0UwSp0.net
>>473
こんなんでどうでしょ。
do shell script "date +%Y/%m/%d\\(%a\\)%T"

516:名称未設定
15/03/02 18:1


517:9:57.10 ID:KO5JBopQ0.net



518:名称未設定
15/03/02 18:20:31.79 KO5JBopQ0.net
あらしつれい

519:名称未設定
15/03/02 18:40:05.58 FF6Ex1uk0.net
>>475,477
できました!
do shell script というのがあるんですね
どうもありがとうございます

520:名称未設定
15/03/03 03:08:40.47 lRTqSIjg0.net
do shell script、do shell scriptってこのスレ、シェルスクリプトのスレみたいじゃないかw

521:名称未設定
15/03/03 03:35:40.89 KOXV6q780.net
シェル「スクリプト」っぽいのが無いのでそんなことはない

522:名称未設定
15/03/03 07:34:58.80 Sgc81Rt10.net
do survive

523:名称未設定
15/03/03 16:32:18.63 9lD9n0xN0.net
日本語文字列の中に「漢字」が入っているか否か調べたいんですが、どうすればいいでしょうか?
………やっぱりdo shell script ですか?

524:名称未設定
15/03/03 16:47:50.82 1zPdGRcT0.net
>>482
文字コードでできそうだからASでもいけんじゃね
あとは>>1を読め

525:名称未設定
15/03/03 19:51:11.87 q6CC5uDH0.net
URLリンク(i.imgur.com)
このiMacが1秒で売り切れたらしいんですが人間業では無理
だと思う
AppleScriptで自動で購入するのは可能ですか?

526:名称未設定
15/03/03 21:07:30.68 KOXV6q780.net
不可能です

527:名称未設定
15/03/03 21:53:31.55 x8MbRkh10.net
単発

528:名称未設定
15/03/04 10:41:26.23 YVgo2sPl0.net
>>654
システていうか楽天だし仕込みで誰も買ってない(元々買えない)んじゃ?

529:名称未設定
15/03/04 15:02:40.98 YVgo2sPl0.net
システってなんだ俺…

530:名称未設定
15/03/04 15:10:38.77 jevBdPRX0.net
>>488
システって何?そして>>654はこの後何を言うの?

531:名称未設定
15/03/04 15:50:32.83 lSN1zvum0.net
システマはロシアの軍隊格闘技だろ
タコ踊りみたいな奴

532:名称未設定
15/03/04 17:28:03.26 YVgo2sPl0.net
システマ、殴られても熟練者なら体がほぐれるだけらしいしそのためには笑顔でいなきゃいけないらしいし対戦者は格闘中めっちゃ怖いだろうな。

533:名称未設定
15/03/04 18:05:03.45 jevBdPRX0.net
            ,.,.,.,.,.,.,.,.,__
           ,,;f::::::::::::::::::::::ヽ
           i::/' ̄ ̄ ̄ヾi::l
           |::| /  \,|::|
           |r-( ・ );( ・ )-|
           ( ヽ :::(__)..::  }  <・・・で?
        ,____/ヽ  -==- /
     r'"ヽ   t、  ヽ___/
    / 、、i    ヽ__,,/
    / ヽノ  j ,   j |ヽ
    |⌒`'、__ / /   /r  |
    {     ̄''ー-、,,_,ヘ^ |
    ゝ-,,,_____)--、j
    /  \__       /

534:名称未設定
15/03/04 19:19:43.70 EE5x3pC40.net
adobe bridge で複数のウィンドウを開いて
任意のウィンドウをアクティブにしたいんだけど
どなたか良いアイデアを

535:名称未設定
15/03/04 20:04:27.08 MOiAKvIh0.net
条件定義がおそ松くん

536:名称未設定
15/03/11 19:00:59.39 PLKc9HDB0.net
mavericksなんですが、
昨日security updateの2015-002をあてたら"eppc://“を使うスクリプトがすべて動かなくなっちゃいました。
相手はTigerです。
スクリプトエディタでコンパイルボタンを押すと
「構文エラー アプリケーションは実行されていません」と出ます。
Port3031にPingは通るし、リモートデスクトップは動きます。WakeOnLanもです。
アクセス権の修復をや


537:りましたが変わらず。 そして昨日からググってますが、(英語情報含め)な~んも出てきません。 皆さんの環境ではどうですか? もしかして私だけ・・・?



538:名称未設定
15/03/12 21:22:46.64 eBJQmQq80.net
ASOCで、コンパイル後の.appに直接ファイルをD&amp;Dされた場合や、
Finder上の「このアプリケーションで開く」などで実行されたときに、
選択されたファイルがあるディレクトリのパスってどうすれば取得できるのでしょうか?
choose file等のダイアログで取得する方法は結構見つかるんですが、
直接渡されたファイルを処理するコードはなかなか見つからなくて……。

539:名称未設定
15/03/12 21:50:18.34 yfFaXPD+0.net
>>496
コンパイル前の設定のところでon openと同じことできた気がするけど、
今は試せないのでここまで。

540:名称未設定
15/03/12 23:53:42.30 stC/f3OT0.net
>>495
mavericksから10.3.9Pantherでも同様の症状出てます。
2015-002をあてたら"eppc://"が実行できず

541:名称未設定
15/03/13 00:57:53.41 dCGVHkpD0.net
>>498
報告ありがとうございます。やっぱりそうなんですね。
今日cmd+Rを使ったOSの再インストールしたら元に戻りました。
今ならセキュリティ・アップデート2015-002は適用前の状態でパッケージのダウンロードが出来ますよ。
いろいろ試してみたのですが、Terminalからosascriptでlocalhostにやってみてもダメでした。
$ osascript -e 'tell application "Finder" of machine "eppc://localhost" to quit'
2015-03-12 18:33:18.575 osascript[6224:507] CFNetwork SSLHandshake failed (-4)
2015-03-12 18:33:18.660 osascript[6224:507] CFNetwork SSLHandshake failed (-4)
2015-03-12 18:33:18.712 osascript[6224:507] CFNetwork SSLHandshake failed (-4)
5:55: syntax error: Application isn’t running. (-600)
ところでYosemiteはどうなんでしょうか。この際アップグレードしちゃおうかな。
どこでも話題にならないってことはよっぽどマイナーなんでしょうね。

542:497
15/03/13 23:25:12.10 nFOxkN7n0.net
>>497
設定というのがよくわからなかったのですが、とりあえず自己解決しました。
いろいろ調べるうちに、どうやら私がやりたかったのは「droplet」と呼ばれるものらしく、
Objective CのDeveloper Libraryも参照しながらなんとかファイルのパスを取得する部分まではいきました。
・プロジェクト設定のGeneral > Linked Frameworks and Libraries で AppKit.frameworkを追加
・AppDelegate.applescriptに
on application_openFiles_(sender, droppedItems)
display dialog droppedItems as text
end application_openFiles_
を書いたところ、ダイアログに選択したファイルのフルパスが表示されました。
あとはこのファイルの親ディレクトリを取得したいんですが、どうすればいいんでしょうか?

543:498
15/03/14 12:20:14.97 US/unQ+p0.net
>>500
ファイルのフルパスをスクリプト内に持ち込んでparent of
自分が見たやり方はちょっと違ったと思うけど、そっちのほうが普通な感じだよね。

544:497
15/03/14 20:25:29.93 dHB3wkmC0.net
>>501
parent ofでやってみようと思ったんですが、なんかうまく行かないようです。
dropletで入力されたファイルは配列扱いという情報があったので、
repeat withでやってみてはいるんですが、dialogが表示されず……
set inputFile to droppedItems
repeat with theItem in inputFile
tell application "Finder"
set folderPath to parent of theItem as text
end tell
display dialog folderPath
end repeat

545:名称未設定
15/03/15 14:39:45.90 AV7GXmsk0.net
dialog出ないって事はどこがでエラーになってるんだろうね
dorpletだとエラーで即落ちするから
調べるにはtryで引っ掛けて自力でエラー表示さ�


546:ケるか、 droppedItemsの内容を把握してからテストはエディタ上でon run実行したりとか 普通のASだと>>502で合ってるよーに思うけど、 ASOCは詳しくないのでまぁ参考まで



547:名称未設定
15/03/15 14:41:34.89 AV7GXmsk0.net
言うまでもないけど
誤 dorplet
正 droplet

548:名称未設定
15/03/15 15:36:32.41 VmwaxW7K0.net
>>500
親ディレクトリ(パス)を得たいなら、
on application_openFiles_(sender, droppedItems)
repeat with theItem in droppedItems
set parentPath to theItem's stringByDeletingLastPathComponent()
display dialog (parentPath as text)
end repeat
end application_openFiles_
とか
droppedItemsはNSStringの配列なので。NSStringにはパスに対するそれなりの機能がある
>>503
>dialogが表示されず
何かの拍子にアプリケーションの作成が壊れる。MainMenu.nibがアプリケーションバンドルにコピーされない。直し方はまだわからんな
Dropletだからいらんからいらんのだが、Dropletとしてちゃんとプロジェクト作成手順を踏まなければならないのかなあ
単に>>502のようなスクリプトでDroplet作るなら、AppleScript Editorでの方がいいかもしれない

549:名称未設定
15/03/15 15:38:41.87 VmwaxW7K0.net
>>505
×>>503
>>502
すまんす

550:名称未設定
15/03/15 16:02:30.67 VmwaxW7K0.net
XcodeでのCocoa Applescriptテンプレートでの表記は、
on applicationWillFinishLaunching_(aNotification)
end applicationWillFinishLaunching_
だけど、AppleScript Editorで開いたら、
on applicationWillFinishLaunching:aNotification
end applicationWillFinishLaunching:
になって驚いたw 呼び出しもObjective-C疑似スタイルで可能なのね。Xcodeでも
いつからなんだろ

551:名称未設定
15/03/15 16:07:08.38 /RgW8kRq0.net
>>502
tell application "Finder"
set inputFile to droppedItems as alias list
repeat with theItem in inputFile
set folderPath to (parent of (theItem as alias)) as Unicode text
display dialog folderPath as Unicode text
end repeat
end tell
とか? とwindowsからレス。

552:497
15/03/15 16:45:53.56 iR+GQC990.net
>>503-508
たくさんの回答ありがとうございます!>>505の方法でちゃんと親フォルダを表示することができました
まさかこんな、ドンピシャな方法があるとは思いもしませんでした。本当にありがとうございました。

553:名称未設定
15/03/15 20:45:33.78 WymtzrWs0.net
>>507
10.9

554:名称未設定
15/03/15 22:10:53.64 VmwaxW7K0.net
>>510
なるほど。どうも

555:名称未設定
15/04/09 19:38:28.50 4kDpug2w0.net
>>495
で書き込んだ者ですが、この度修正版が出たようです。
URLリンク(dougscripts.com)

556:名称未設定
15/04/10 11:37:48.95 Tai/EZWG0.net
>>512
おめ

557:名称未設定
15/04/10 14:53:52.05 /ZQEY2Xe0.net
>>512
訂正。修正版が出たけど直ったのはMountain Lion、Marvericks、Yosemiteの間だけ。
Tigerとの間では通信できなかった。エラーメッセージは以下のように変わった。
$ osascript -e 'tell application "Finder" of machine "eppc://hoge.local" to quit'
2015-04-10 12:13:14.943 osascript[515:507] CFNetwork SSLHandshake failed (-9806)
2015-04-10 12:13:15.862 osascript[515:507] CFNetwork SSLHandshake failed (-4)
2015-04-10 12:13:16.159 osascript[515:507] CFNetwork SSLHandshake failed (-9806)
5:59: syntax error: Application isn’t running. (-600)
cmd+RでOS再インストールすれば元には戻せた。ぐぬぬ。

558:名称未設定
15/04/15 13:35:28.38 A/b2wCDlL
applescriptからrubyを実行した際に、
ruby1.8.7ではpで値を返しても日本語が化けなかったのですが、
ruby2.2.1からpで値を返すと日本語が化けます。putsの場合は大丈夫です。
仕様変更のためだと思うのですが回避方法はありますか?
単なる文字列ならputsで返しても良いのですが、配列を配列の状態で返したいので。

559:名称未設定
15/04/16 08:13:05.28 Zfi8c6iV6
>>515
自分も最近Rubyに手を出し始めたところで
あんまり詳しくない�


560:セけど…do shell script "ruby -Ku -e 処理内容"とやってUTF8前提で処理を始めるのと、require 'kconv' して、.toutf8 とやって文字列を再度UTF8に変換するのを試すくらいしか思いつかないね…それか、単にRubyの配列をAppleScriptの配列(リスト)として受け取りたいだけなら、文字化けしないputsで改行区切りのテキストとして受け取っておいて、それをAppleScript's text item delimitersに改行を指定してやることでリストに変換することはできると思うAppleScript's text item delimitersはまぁ、splitコマンドみたいなものちょっと使い方が特殊だけど、ググればサンプルスクリプトもいろいろ引っかかるはずていうか、scのMac板見てる人少ないんだね…自分もRubyのこと興味あるから詳しい人のレスがつくの待ってたけど、全然反応がない…



561:515
15/04/16 09:03:32.79 +ZLMD4wn4
>>516
レスありがとうござます。
本当人いない感じですね。試しにこっち(.sc)に書き込んでみたんですけど、.netで再質問してみます。

リスト変換は多次元配列なので単純にAppleScript's text item delimitersではできないんですよね。
前の仕様だとそのままpで書き出してrun scriptをかければリストに変換してくれたので。

ちなみに、良くわかってないのですがascii-8bitで出力されているような感じです。
force_encoding("utf-8")してもユニコードのまま吐き出されている感じです。
そして重要な事を書き忘れていましたが、do shell scriptではなくターミナルからrubyを実行した場合はpでもputsでもちゃんと日本語が表示されるんですよね。

ちなみに"こんにちは"をp出力すると
\"\\xE3\\x81\\x93\\xE3\\x82\\x93\\xE3\\x81\\xAB\\xE3\\x81\\xA1\\xE3\\x81\\xAF\"
force_encoding("utf-8")かけると
\"\\u3053\\u3093\\u306B\\u3061\\u306F\"

562:515
15/04/16 09:04:05.04 +ZLMD4wn4
なんかレスが2重になるw

563:名称未設定
15/04/16 09:35:48.15 fNeO9YuQ0.net
scの方に書き込んだのですが過疎っているようなのでこちらで再質問させてください。
下記の様なスクリプトを実行したときに戻り値が下の様になります。(ruby2.1.5)
"\"\\u3053\\u3093\\u306B\\u3061\\u306F\"
\"\\xE3\\x81\\x93\\xE3\\x82\\x93\\xE3\\x81\\xAB\\xE3\\x81\\xA1\\xE3\\x81\\xAF\"
こんにちは"
ruby1.8台の時は全て"こんにちは"で返っていたのですが、これを"こんにちは"として受け取る方法は無いのでしょうか?
ちなみにターミナルから普通にルビーを実行した場合は問題なく"こんにちは"として返ります。
単なる文字列ならputsで良いのですが配列を配列のままASに受け渡したいので。
set myScript to "#coding: utf-8
str=\"こんにちは\"
str2=ARGV[0]
p str,str2
puts str2"
do shell script "ruby -e " &amp; quoted form of myScript &amp; " " &amp; quoted form of "こんにちは"

564:名称未設定
15/04/16 11:29:38.57 JP8CNjtg0.net
>>519
set myScript to "#coding: utf-8 \nstr=\"こんにちは\" \nstr2=ARGV[0] \np str,str2 \nputs str2"
do shell script "ruby -Ku -e" & quoted form of myScript & " " & quoted form of "こんにちは"
-Kオプションで文字コード指定すれば? しかしこのコードはこれで良いのか?

565:516
15/04/16 11:48:12.31 fNeO9YuQ0.net
>>520
おーできました。 -Kuで。ありがとうございます。
#coding: utf-8を入れてあれば良いのかと思っていました。

566:515
15/04/16 11:57:16.39 +ZLMD4wn4
>>516
すみません。.netで再質問しましたが、お答え頂いた-Kuで解決していました。
.netにも書きましたが#coding: utf-8が入っているので問題ないと思っていました。

567:名称未設定
15/04/16 17:46:16.43 Zfi8c6iV6
>>522
解決したようでなによりです

なんかね�


568:・、ターミナルのシェルはちゃんと最初からLANG="ja_JP.UTF-8"になってるんだけど、do shell scriptで呼ばれるシェルはデフォルトがUTF-8じゃないっぽいんだよねぇターミナルで$ localeとやった結果とdo shell script "locale"ってやった結果が違ってるの今回の件だと、Ruby上はUTF-8で処理されてるんだけど、結果が出力されたシェルの言語設定がAsciiになっちゃってたせいで化けちゃったんじゃないかと思うただ、OS10.6だとこのへんいい加減でもなぜか化けなかったんだよねぇOS10.9だとそのへんキッチリ化けちゃうので、--クリップボード内のテキストのスタイルを外すスクリプトdo shell script "LC_CTYPE=ja_JP.UTF-8 pbpaste | LC_CTYPE=ja_JP.UTF-8 pbcopy"こんな感じでRubyに限らず言語指定を足すハメになって一時期苦労してました…



569:515
15/04/16 18:10:14.96 +ZLMD4wn4
>>523
実は>>515同様の事がpythonでも起きていて、pythonはrubyとの速度比較で試しに作った程度で
全然触った事がない状態でやってたので仕様なのかと思ってました。
どうやらこの辺に原因があったみたいですね。
>>do shell scriptで呼ばれるシェルはデフォルトがUTF-8じゃない

570:名称未設定
15/05/08 22:46:21.29 vR7cr5an0.net
これは、エラーにならない。
tell application "Finder"
set tmp to POSIX file "/tmp"
end tell
こうすると、実行時エラーになる。
tell application "Finder"
set tmp1 to "/tmp"
set tmp to POSIX file tmp1
end tell
なぜだか理由がわかりません。
ご教授お願いします。

571:名称未設定
15/05/09 00:35:21.89 S1iniwej0.net
エラーになるならエラー内容も書かないと
error "Finder でエラーが起きました:POSIX file ¥"/tmp¥" を取り出すことはできません。" number -1728 from file
-1728はMacErrors.hを見ると、
errAENoSuchObject = -1728, /* e.g.,: specifier asked for the 3rd, but there are only 2. Basically, this indicates a run-time resolution error. */
とある。「Finder でエラーが起きました」言うてるから
--tell application "Finder"
set tmp1 to "/tmp"
set tmp to POSIX file tmp1
--end tell
としてみたらエラーにならなくなった。Finder側の処理が何か良くなさそうだ。
または以下でも大丈夫だった。
tell application "Finder"
set tmp1 to "/tmp"
set tmp to tmp1 as POSIX file
end tell

572:名称未設定
15/05/09 09:40:06.13 il35J4cb0.net
>>526
ありがとうございます。
書き方が間違っていたということですね。

573:名称未設定
15/05/09 23:01:12.58 5b1J/LZS0.net
>>527
というより、半分バグみたいなもん

574:名称未設定
15/05/10 02:53:21.26 ucfHZQTk0.net
>>525
AppleScript でファイル参照を表現する記述には
・alias [HFS形式の文字列]
・file [HFS形式の文字列] ― (表記の互換性のために残されている)
・POSIX file [UNIX形式の文字列]
の三つのが用意されている。これはちょっと特別な記述と覚えておく必要がある。
ちょっと例題とは違うけど、
tell application "Finder"
exists POSIX file "/tmp"
--
set tmp1 to "/tmp"
exists tmp1 as POSIX file
--
exists POSIX file tmp1
end tell
と書いた場合、家の環境ではエラーは起きずに実行できるが、最後だけ false が帰ってくる(10.9)。
これはまあバグなんだろうけど、それは置いといて、この三つの記述は実は全部違う手順で実行されている。

575:名称未設定
15/05/10 02:53:46.85 ucfHZQTk0.net
>>529 の続き
最初の記述は冒頭に書いたようにファイル参照表現になっているので、POSIX file "/tmp" の部分が
コンパイル時にファイルを示すオブジェクトに変換されスクリプトに埋め込まれる。
10.4 ぐらいのスクリプトだと、こういう記述がコンパイル時に
file “Machintosh HD:private:tmp”
に書き換わっていたのを覚えている人もいると思う。まさにあの動作。
二番目の as POSIX file と言う表現�


576:ヘ強制的な型変換処理で、これは実行時に処理される。 as による型変換は基本的に tellブロックの中でもスクリプト側で優先して処理されるので、 Finderが受け取る引数はファイルを示すオブジェクトになっていて正しく処理できる。 三番目のものは、一見ファイル参照表現のように見えるけど、変数の tmp1 になにが入るかは 実行時で無ければ分らないので、コンパイル時には処理できない。そして実行時に get POSIX file "/tmp" が Finder に丸投げされて、でも Finder は POSIX file をうまく扱えず エラーになる…はずが、なぜか exists の場合は false が帰ってきてしまう。 ちなみに System Events で同じことをするとちゃんと(?)「エラー -1728」になった。もちろん、 tellブロックの外でこの手の手順を記述するならスクリプト側で処理されるので、問題にはならない。



577:名称未設定
15/05/10 11:56:58.29 ihNZ0FRq0.net
前にもここに書いたんだけど、Finderもfile classを定義してるからキーワードの解釈が
衝突してるんですよ。my付けてglobalな定義を優先すれば良い。
tell application "Finder"
set tmp1 to "/tmp"
set tmp to my POSIX file tmp1
end tell
tell application "Finder"
set tmp1 to "/tmp"
exists my POSIX file tmp1
end tell

578:名称未設定
15/06/27 20:35:43.04 oLuCxE430.net
display dialog "このスレって、生きてるんですよね?"

579:名称未設定
15/06/27 20:54:57.43 XVP2cUyr0.net
もちろんさ

580:名称未設定
15/06/27 20:58:32.57 2HcvqLl20.net
結果:
{button returned:"OK"}

581:名称未設定
15/06/27 23:59:13.55 IO5TRzBI0.net
error number -128

582:名称未設定
15/07/02 00:53:17.64 JqmVzF680.net
YosemiteからAppleScriptの代わりに
JavaScriptも使えるようになったのね。
今頃気が付いた。

583:名称未設定
15/07/02 02:03:26.78 5ci7EMIH0.net
それでScript Editorになったのか。納得

584:名称未設定
15/07/02 02:04:23.51 3sKDtNad0.net
Swiftも足せばいいのに

585:名称未設定
15/07/02 14:04:43.02 P9q2kFwz0.net
xcodeぇ…

586:名称未設定
15/07/03 20:28:58.67 BY+AkDuD0.net
いろんなサイトを見ながら見様見まねで
finder上で選択したファイルを選択したフォルダにコピーするスクリプトに
トライしてみたのですが
「if D_fileExist = "false" then」の部分がスルーされて「else display dialog ~」が実行されてしまいます。
ご指導いただけるとうれしいです。
よろしくお願いします。
tell application "Finder"
set A_filePath to selection as alias list
if A_filePath = {} then
display dialog "ファイルが選択されていません"
return
end if
end tell
getFileName(A_filePath)
on getFileName(theFile)
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to ":"
set fileName to last text item of (theFile as string)
set AppleScript's text item delimiters to tmp
return fileName
end getFileName

587:名称未設定
15/07/03 21:30:06.17 xfqT0ASe0.net
質問文とコードが合ってないじゃないの

588:名称未設定
15/07/03 21:43:28.53 zhZri2f80.net
文とスクリプトが一致してない(し、文のスクリプトが間違ってもいる)が、そのままでも意図したようには動いているけど
俺だったら
set A_filePath to selection
if (count of A_filePath) is 0 then
って書くかなあ

589:名称未設定
15/07/03 21:57:53.21 xcqVHBQg0.net
>>540続きです。
set C_fileName to getFileName(A_filePath)
set B_folderPath to (choose folder)
tell application "Finder"
get exists of file C_fileName of B_folderPath
set D_fileExist to result
if D_fileExist = "false" then
duplicate selection to B_folderPath without replacing
else
display dialog "すでに " & C_fileName & " は存在します。上書きしますか?" with icon caution
set E_buttonResult to button returned of result
if E_buttonResult = "OK" then
duplicate selection to B_folderPath with replacing
end if
end if
end tell>

590:名称未設定
15/07/03 22:05:26.31 zhZri2f80.net
なるほどw
exists of
で得られるのは Boolean値 であって、文字列(の"false"/"true")じゃないよ
if not D_fileExist then
でとか

591:名称未設定
15/07/03 22:45:13.35 xcqVHBQg0.net
>>544
ありがとうございます!
とりあえず動くようになりました。
Boolean値って何だ? と検索するぐらいの初心者で
いろんなところからコピペして繋げてみた感じです。
なので試行錯誤している途中で
これだとフォルダのコピーが出来ないことに気付きました。
> 文とスクリプトが一致してない
これってどういうことでしょうか?
あと「このサイトをみて勉強しろ」みたいなサイトがあったら教えてください。
今は>>1にあった鳶嶋工房をみながら少しずつ勉強しているところです。
よろしくお願いします。

592:名称未設定
15/07/03 23:25:35.52 zhZri2f80.net
>>545
あそこで切れて終わっているように見えたので、前半の文(の中でのスクリプト)と後半のスクリプトが一致していないってこと
>>544 の「なるほどw」は、なんだ続きがあったのかということで、「文とスクリプトが一致してない」は解決している

593:名称未設定
15/07/04 07:51:34.34 YgtqpRu90.net
>>536
>JavaScriptも使えるようになったのね。
Yosemite上のWebブラウザー(Safari)から、命令が
拡張されているアップル版”JavaScript”を実行するこ
とは、できないのですよね? たとえば、Safariから
アップル版”JavaScript”を実行して、それがApplications
内のDVD Playerを起動させて、DVDのチャプター2を
再生させることなど。
 5年ほど前からこの方法でSafariからAppleScriptに引数
を渡してDVD Playerを再生してきてますが、JavaScriptで
直接実行できたらよいと思います。
Launch Scripts from Webpage Links
URLリンク(www.macosxautomation.com)

594:名称未設定
15/07/04 11:09:22.94 h2hbqIaM0.net
>>547
純粋に興味から聞くけど、どうしてそんな面倒なことやってるの

595:541
15/07/04 11:48:03.94 YgtqpRu90.net
英語の教員をしておりまして、生徒に教える
英単語や受け身や仮定法などの文法事項を
DVD英語字幕から検索して、その場面をDVD
で再生しています。英語字幕とDVD再生に必
要になるタイムコードは、sqlLite形式で:
/Users/ユーザー名/Library/Safari/Databases/
に入れて、これをSafari==>Javascriptで検索し
検索結果をSafariにLaunch Scripts from Webpage
Linksで実行できる形式で表示して、それをクリック
して、AppleScriptを実行しDVD Playerで再生します。
 この方法は、余計なソフトをインストールせずに
Safari(+Javascript)+AppleScript+DVD Playerだけで
実行できる点が気に入っています。

596:名称未設定
15/07/04 13:30:27.29 lLFsJcsp0.net
そのままAppleScriptの部分をJavaScript(JXA) に直すといいのかな

597:名称未設定
15/07/04 14:32:18.72 cJAeUdIb0.net
>>546
そうでしたか。ありがとうございました。
改良してフォルダのコピーも出来るようになり、
目的は達成したけど、もっと勉強しないとです。
でも楽しい。

598:名称未設定
15/07/04 22:56:39.87 louF/aWK0.net
最新の環境(iTunes 12.2.0.145/OS X 10.10.4)でiTunesが手前にならないんだけど俺だけかな
tell application id "com.apple.iTunes" to activate

599:名称未設定
15/07/04 22:58:46.73 gXTZwE1/0.net
手前にくるなー。iTunes 12.2.0.145/OS X 10.10.4 だけど

600:名称未設定
15/07/04 23:07:35.80 louF/aWK0.net
追加:
メインウインドウを開いてて、かつアプリが隠れてない時しか手前にならない。
しかも起動してない時に実行すると、手前にならず、かつ隠れて起動する。

601:名称未設定
15/07/04 23:09:33.60 jRTw82Rh0.net
>>549
プログラミングを職業にされてるわけでもないのにすごいですね。
私はJavaScriptからsqliteが操作できることも
JavaScriptからAppleScriptを実行できることも知りませんでしたよ。
Appleの開発者


602:サイトを見ると "The JavaScript OSA component implements JavaScript for Automation. The component can be used from Script Editor, the global Script Menu, in the Run JavaScript Automator Action, applets/droplets, the osascript command-line tool, the NSUserScriptTask API, and everywhere else other OSA components, such as AppleScript, can be used." と書いてあるので、SafariのJavaScriptから直接実行するのは無理そうですね。



603:名称未設定
15/07/04 23:29:23.28 gXTZwE1/0.net
>>554
・ウィンドウを何も表示してない
・アプリケーションを隠しておく
・起動してない
全部手前にくるなー

604:名称未設定
15/07/04 23:34:30.30 louF/aWK0.net
>>556
じゃあ俺だけかな…
ありがとう

605:名称未設定
15/07/05 04:59:33.52 fJrrslaF0.net
怪しげな常駐アプリ入れてないかそれ

606:名称未設定
15/07/05 05:28:51.16 uBZo4BRt0.net
んにゃ
option起動して、空っぽの新規ライブラリ作ったら起きなかったから、ライブラリが何か悪さしてる模様。
前バージョンでは起きてなかったし、ライブラリ作り直すのもめんどいからしばらく様子見てみるよ。

607:名称未設定
15/07/06 18:11:24.38 dTkqL4+G0.net
set this_file to choose file without invisibles
tell application "Image Events"
launch
set this_image to open this_file
crop this_image to dimensions {1000, 500}
save this_image
close this_image
end tell
これを複数ファイルの連続処理が可能なドロップレットにしたいのですが
On Open dorp_Items, end openを前後に入れたくてもうまく行きません。。
ヘルプお願いします!

608:名称未設定
15/07/06 18:46:40.33 F44xxfZx0.net
>>560
スクリプトだけのことなら
on open dropItems
repeat with this_file in dropItems
tell application "Image Events"
...
end tell
end repeat
end open

Finderでドロップ可能なのにするのは、Info.plistを弄らないとならないのかな??
ドロップできないので(普通のアプリケーションと同じように)Info.plistにDocument typesを追加したらできたのだけど

609:554
15/07/06 19:05:12.47 dTkqL4+G0.net
>>561
ありがとうございます。なんとかできました。

610:名称未設定
15/07/06 19:17:26.04 F44xxfZx0.net
>>561
>Finderでドロップ可能なのにするのは、Info.plistを弄らないとならないのかな??
ああ、たぶん、Dropletsテンプレートから作れってことだな。そゆことで納得しとこうw

611:名称未設定
15/07/06 22:13:36.02 BXYRI4R00.net
Image Eventsで縦横を指定した数値に強制リサイズする方法ありませんか?

612:名称未設定
15/07/06 23:09:08.57 UWCV8pnF0.net
なさそうだからsipsコマンド-zオプションで

613:558
15/07/07 15:53:07.90 pMuP/1h30.net
>>565
ありがとう!
せめて短辺の数値を設定する方法ないですかね?
scale x to size xxx←これを短辺に。

614:名称未設定
15/07/07 16:34:46.48 eCnPxyr00.net
画像リサイズ osxでggrks
URLリンク(www5.wind.ne.jp)

615:558
15/07/07 18:07:22.26 pMuP/1h30.net
>>567
え?
そりゃフォトショでもなんでもできるがapplescriptで可能な記述はないかって話し。
同時にアイコン付けたり名前変えたりと他の作業も同時に行うスクリプトを書きたくて。

616:名称未設定
15/07/07 19:00:32.98 YzbvPtAK0.net
>>568
do shell script経由でimagemagickでできると思うが

617:名称未設定
15/07/07 22:16:01.83 amkJBVQ60.net
このスレの上の方に画像リサイズのスクリプトを書き込んだ人がいたよ。

618:名称未設定
15/07/11 13:33:24.18 uukKRe+y0.net
iTunesスレに行こうかとも思いましたがAppleScriptに限って発生するようなので、
まずはスクリプトの確認と再現性ということでこちらでお願いします。



619:AppleScriptを利用して動画データに情報を入力しているのですが、 編集できない(編集しても元に戻ってしまう)ファイルになってしまいます。 環境としてかなり限定的なのですが、今回利用したiTunes 12.2だけではなく、 以前のバージョンから引き続いて発生しています。 前提として、登録するファイルは「動画」である事と、 iTunes Mediaフォルダの場所やライブラリへ追加する際のコピーの実行の有無は問わないものの、 追加の結果、ファイルがローカルHDDではなくNAS上にあることが条件です。 (うちの場合、iTunes MediaフォルダはローカルHDDの場所を指定、追加するファイルはNAS上に設置、 環境設定にある追加時のコピーは行わない設定になっています。) 今回サンプルファイルとして以下のsample_iPod.m4vを利用しました。 https://support.apple.com/ja-jp/HT201549



620:名称未設定
15/07/11 13:34:16.15 uukKRe+y0.net
使用したAppleScriptは下記です。
tell application "iTunes"
add POSIX file "/Users/user/Desktop/sample_iPod.m4v"
set grouping of track "sample_iPod" to "TEST"
set year of track "sample_iPod" to "2015"
set category of track "sample_iPod" to "TEST"
set genre of track "sample_iPod" to "TEST"
set comment of track "sample_iPod" to "TEST"
set description of track "sample_iPod" to "TEST"
set long description of track "sample_iPod" to "TEST"
set name of track "sample_iPod" to "TEST"
end tell

621:名称未設定
15/07/11 13:36:24.56 uukKRe+y0.net
実行後、ホームビデオに追加されたsample_iPodを情報を見るから各項目を適当に編集して確定します。
その後一度このファイルを再生する、あるいは再度情報を見ると、各情報が編集前の状態(今回の場合はTEST)に戻ってしまいます。
ただ、必ずしもすべての項目で症状が発生するわけではなく、例えば説明(Description)に関しては発生しません。
編集できない情報に関しては何度やっても編集できませんが、再度AppleScriptを利用して情報を入力すれば編集できます。
AppleScriptを使用していない情報欄は編集できます。
なお、手動でiTunesに追加した場合は発生しません。
前提記載の通り、ファイルがローカルHDDにある場合も発生しません。
ミュージックファイルでも発生しないようです。
一応2種類のNAS(Drobo5NとAirMacExtremeにUSB接続したHDD)と2種類のMacで同様の症状を確認しました。
何かお気付きの点がありましたらよろしくお願いします。

622:名称未設定
15/07/11 14:21:39.53 uukKRe+y0.net
少し訂正です。
手動でiTunesに登録した場合でも、AppleScriptで情報入力を行うと編集できませんでした。
どうやら、NAS上にあるiTunesの動画ファイルの情報をAppleScriptを利用して書き換えると、
当該情報を手動で書き換えられないファイルになってしまう状態と言えそうです。

623:名称未設定
15/07/11 14:46:07.93 z2dqc7dE0.net
>>572
NASがないんで検証はできないが、文面見てパッと思いつく点
その書き方だと曖昧さがあるのでこうするのがよいと思う
...
set tarTrack to add POSIX file "hoge"
set name of track tarTrack to "hage"
...
問題の原因がこれかはわからんが
あと、症状が発生しないitunesのバージョンがわかれば何かヒントになるかも

624:名称未設定
15/07/11 16:18:59.81 uukKRe+y0.net
>>575
2行目でディスクリプタタイプが一致しません。number -10001 to item
と叱られたので、
set name of tarTrack to "hage"
にしてみました。が、結果は変わりません。修正不可ファイルです。
症状が発生しないバージョンは残念ながら不明です。
最近iTunesの見た目が大きく変わったのはiTunes11だったと思いますが、
iTunesのバグじゃないかなと期待しつつかかるバージョンに上げた記憶があるので、
そうすると少なくともiTunes10の頃からあった症状ということになります。
NASの導入がその頃なので、実際にはもっと以前のバージョンでも発生したのかもしれません。

625:名称未設定
15/07/11 16:56:15.76 z2dqc7dE0.net
>>576
ああごめん、二行目はこっちのミス
「何度やってもできない」は、一度発生した後


626:システム再起動しても不可?



627:名称未設定
15/07/11 19:02:49.32 uukKRe+y0.net
>>577
iTunesの再起動、本体の再起動共に効果なしです。
NASも再起動してみましたが、ダメですね。

628:名称未設定
15/07/14 02:28:27.39 A6Vp2DDe0.net
>>573
ストレージ違うだけで挙動が変わるのなら追加が終わるまでの時間が違うのかも。
2行目の直後にdelay 1挟んでみたらどうだろう。

629:名称未設定
15/07/14 08:26:20.02 k1XDpkSZ0.net
NASでそういうことするの厳しくね?
昔、NAS上のファイル名変更ですらうまくいかなかった記憶がある。
結局、aliasにして乗り切ったけれど、ものすごく時間がかかり、
do shell script とかいろいろ使ったような。
iTunesつかったことないけど、Finderでaliasにして
iTunesで操作とかできないのかね?
まったく理論的裏付けなく、経験的なことだけど。
純正アプリだしなんとかなりそう。

630:名称未設定
15/07/14 08:33:02.14 k1XDpkSZ0.net
>>574
ちょっと今どきのことはわかんないけど、afp://とかでNASと
つながってるんじゃない? cifs://とかだといいかも。
最近はすべてcifsとかだっけ?3年くらい前しかいじってないので
最近は知らない。cifsとafp混在でやっててもトラブる。

631:名称未設定
15/07/14 16:10:40.88 VhXIrKmA0.net
Cocoa-AppleScript Applet じゃなくても Cocoaフレームワーク 使えるよにできるのね
Safariの Favorities Bar 中の特定のフォルダ中のURLをBookmarks.plistより抽出するのを書いてみたのだが、速度が段違いすぎ&tryいらないから簡潔に見えるんだけど
まあ、AppleScriptは詳しくはわかっていない(whoseの使い方がいまいちわからん)のでAppleScriptの方が冗長なのかもしれないが

632:名称未設定
15/07/14 16:20:05.42 VhXIrKmA0.net
純粋(?)AppleScriptバージョン
URLリンク(gist.github.com)
Cocoa-AppleScriptバージョン
URLリンク(gist.github.com)
"Folder Item" が Favorities Bar 上でのアイテム名ね

633:名称未設定
15/07/14 17:14:05.00 VhXIrKmA0.net
>速度が段違い
ああ、System Eventsとのアプリケーション間通信でのオーバーヘッドがそのほとんどになりそうだわな
そりゃまあ遅くなるわな&どうしようもないわな&Cocoa-AppleScript万歳w

634:名称未設定
15/07/14 21:56:12.64 1ruXVyZ/0.net
>>579
それはちょっと考えてdelay挟んでみたもののやはり変わらずでした。
手動で追加だけしてそのあとに編集だけ行うAppleScriptを実行した場合も
同様におかしくなったので、原因はそこではなさそうです。

635:名称未設定
15/07/14 21:56:44.20 1ruXVyZ/0.net
>>581
マウント方法変えてみたけどダメですね。
というか、NASに置いても普通に手動で完結する分には全く問題ないから、
「NASだから」というわけでもなさそうです。
手動で追加、編集する分には問題なし。そのあとそのファイルをAppleScriptで編集すると、
その状態で固定みたいになって、以後同様にAppleScriptを使わないと編集できなくなる。
おま環なんですかね。そうであれば、それはそれで諦めるんですが。。。

636:名称未設定
15/07/15 04:34:10.51 hEGmCORz0.net
>>586
条件を満たしたとき「情報が戻る」というのは、itunesの操作と
スクリプト(ex. get name of tarTrack)どちらで確認している?
どちらかの手段のみで確認しても同じ?

637:名称未設定
15/07/16 00:32:52.64 qTdi8WaK0.net
xlsファイルをcsvで書き出すドロップレットを作りたく色々と調べた結果、
シェルスクリプトでxls2csvというアプリを使えば行けそうだったんですが
文字化けしてしまいます。
ターミナルからだと問題無いんですが、アップルスクリプトで実行すると
結果もファイルの書き出しも


638:化けてしまう状態です。 解決する方法はあるでしょうか? 因みにxlsの文字コードはUTF-8です。



639:名称未設定
15/07/16 02:27:49.86 +fhnsm1u0.net
>>588
AppleScriptでも do shell script してるんじゃないの?
だったら、シェルの環境設定がかなあ。ドロップレットにしたいだけだったら、Automator(での shell script アクション)でいいんじゃないの?ああ、同じように化けるかな?

640:名称未設定
15/07/16 03:24:14.69 PVq/K62H0.net
csvのコードはなんだろう。UTF16か昔風のShiftJIS?
こういうので変換するかな
iconv -f SHIFT_JIS -t UTF-8 out.csv > utf8.csv
iconv -f UTF-16 -t UTF-8 out.csv > utf8.csv

641:名称未設定
15/07/16 04:58:23.98 I+N1yIOO0.net
>>589
はい。AppleScriptでdo shell script "xls2csv input.xls"を実行すると
化けてしまいます。
シェルの環境設定はUTF-8です。
Automatorは試して無いのでやってみようと思います。
>>590
do shell scriptで書き出したcsvのコードは何故かASCIIになってました。
2バイト文字が全て?になってる状態です。
いま手元に環境がないので、明日iconvも試してみようと思います。
お二方ともありがとうございます。

642:名称未設定
15/07/16 08:31:37.42 o5zH5spX0.net
>>588
身も蓋もないこと書くと、do shell scriptではなく、
ApplescriptからTerminal.appを操作すれば解決しそう。
急ぎの仕事のやっつけスクリプトならね。

643:名称未設定
15/07/16 13:37:36.16 tdcKlDmT0.net
>>471と同じ話で、do shell script 内で LANG=ja_JP.UTF-8 を設定してやればいける気がするよ
do shell script "LANG=ja_JP.UTF-8 xls2csv input.xls"
もしダメなら
do shell script "export LANG=ja_JP.UTF-8; xls2csv input.xls"

644:名称未設定
15/07/16 16:02:09.78 iM/9yX710.net
>>593
いけました!
なるほど、LANG=ja_JP.UTF8と指定してやればいいんですね。
これでまたひとつ賢くなりました!
ありがとうございます。
>>592さんもありがとうございました。

645:名称未設定
15/07/25 09:01:30.20 robl8P910.net
Audio Hijack Proで深夜のラジオのストリーミングを
タイマーで録音したあと、自動でシステム終了させたいです。
デフォルトのQuit Audio Hijack Pro.scptの最後に、
tell application "System Events"以下を追加したのですが
終了してくれません
まちがっているところをおしえてください
おねがいします
on sessionsAreActive()
tell application "Audio Hijack Pro"
repeat with aSession in (every session)
if recording of aSession then
return true
end if
end repeat
end tell
return false
end sessionsAreActive
tell application "Audio Hijack Pro"
repeat while my sessionsAreActive()
delay 2
end repeat
delay 2 --Just to be really safe, wait one more time
quit
end tell
tell application "System Events"
shut down
end tell

646:名称未設定
15/07/26 04:28:28.86 26OH90hA0.net
>>595
System Eventsって、OSが10.9くらいになると、
初めて使う時にセキュリティ設定で許可しないとダメ、とか
面倒なことになってたような…
そのへんで引っかかってはいない?
tell application "System Events"
shut down
end tell
ここだけでちゃんとシステム終了するなら原因は他のところ、
って切り分けができるので、まだやってないなら試してみるといいかも
それが関係なければ、
tell application "System Events" の前にdelay 2(数字は秒数)とか入れてみると
もしかしたらうまくいくかも…
Audio Hijackの終了処理とshut downに入る処理がぶつかっちゃって
うまく動かない、なんてことも考えられるので
ちなみに自分も、iCalのタイマーでApplescriptを起動して
特定の曜日の特定の時間にシステムスリープをする、
ってことをやってるけど、三回に一回くらいは
スリープせずにそのままだったりする…
うまくいったりいかなかったりがあるのは
非常に謎です

647:名称未設定
15/07/26 05:18:05.29 emOATh9D0.net
Audio Hijack Proをquitしてるから


648:、残りのスクリプトを実行する人がいないんじゃないの



649:名称未設定
15/07/26 09:14:17.29 oPO6Ie/V0.net
>>596,591
tell application "System Events"
shut down
end tell
だけでよかったみたいですね
どうもありがとうございます

650:名称未設定
15/08/15 16:45:38.34 sV9ccIal0.net
>>595
tell application "System Events" to shut down
だけでは現在使用中の(開いてる)書類がある場合、
確認のダイアログが表示されてシステムが終了できないので
わたしのトコロでは~♪
do shell script "sudo shutdown -h now" password "ABC" with administrator privileges
※システムのスリープ中(スリープ解除にはパスワードを要求する設定)時には、
処理がキャンセルされてしまうようです。。?詳しく調べていませんが~
参考になれば~

651:名称未設定
15/09/11 19:43:23.46 g5Ecp+1z0.net
>>226
亀レスだけどありがとう
delay挟まないと上手に機能しないんだね。そこで詰まってたんだ㌧

652:名称未設定
15/09/12 20:05:41.29 m6VMDvfd0.net
tell application "Terminal" to do script "echo '123,あいう' | grep ,.い"
do shell script "echo '123,あいう' | grep ,.い"
--同じシェルスクリプトなのに、後者はエラーになる。なんでだろう・・・?

653:名称未設定
15/09/12 20:42:11.53 z0PX6hR20.net
>>601
・grep はパターンにマッチしたのが存在したか否かを終了ステータスでも表す
・do shell script は 0以外 の終了ステータスだとスクリプトそのものが失敗したとみなす
・do shell script と tell application "Terminal" では環境変数などが違うのだろうが、grep での , と い(日本語) が混じるパターンが一致しない。なんかあったけ?
なので、grepでパターンに一致するのがないので終了ステータスが 1 となり、do shell script はスクリプトが失敗したよと例外発生
パターンに一致しなくても例外発生させないようには、
do shell script "echo '123,あいう' | grep ',.い' || exit 0"
do shell script "echo '123,あいう' | grep ',.い';exit 0"
かな
, と い(日本語) が混じるパターンでの問題はよくわからんが
do shell script "echo '123,あいう' | grep ',.[い]';exit 0"
だといちおう思ったように動いているような

654:名称未設定
15/09/12 21:07:53.46 z0PX6hR20.net
>>602,595
>, と い(日本語) が混じるパターンでの問題はよくわからんが
>do shell script "echo '123,あいう' | grep ',.[い]';exit 0"
>だといちおう思ったように動いているような
いや、動いていない。[い]が絶賛無視されとる
環境変数といえば上のにあると思い見直し&調べ&テストすると、grepのパタンーマッチングではLC_CTYPEのよやね
do shell script "export LC_CTYPE=UTF-8;echo '123,あいう' | grep ',.い';exit 0"
でいいんじゃないのかな

655:名称未設定
15/09/12 21:47:12.87 m6VMDvfd0.net
>>603
なるほど環境変数が原因だったんですね
詳しく説明してくださってありがとうございます!

656:名称未設定
15/10/02 12:13:09.84 NO+o9yLb0.net
URLリンク(www.apple.com)
AppleScript Objective-C
dates、structs、recordsを使うためのAppleScriptObj-Cを新しくサポートします。
今更Objective-Cかいな。

657:名称未設定
15/10/02 12:58:15.03 UHfcxpmo0.net
OSのフレームワークが Objective-C だからな
AppleScript -> なんだかしらんがなにか(Swift?) -> Objective-C
よりも、
AppleScript -> Objective-C
だろうに
てか、「今更Objective-C」が明後日向いてね?
Objective-Cをサポートしていたが、新たに(ちゃんと) dates、structs、recordsをサポートします ってことじゃね?

658:名称未設定
15/10/02 13:06:10.03 UHfcxpmo0.net
URLリンク(developer.apple.com)
なんだそのまんまやん。struct/records は限定されていたのか。アレ以外使ったこと無いから知らんかったw

659:名称未設定
15/10/03 10:56:11.97 YP/PCEMt0.net
OS X 10.10 Release NotesのScripting Additions
の解説にsayを使用した例:
app = Application.curr


660:entApplication() app.includeStandardAdditions = true app.say('Hello world') app.displayDialog('Please enter your email address', { withTitle: 'Email', defaultAnswer: 'your_email@site.com' }) があります。emailの入力部分を音声認識Dictationを 使用するjavascriptも可能なのでしょうか? 実際に作成 したいスクリプトは、英語授業で、英語の質問をsayで 聞かせて、生徒にその解答を英語で発音させて、正しく 認識できれば正解、とする英会話練習ソフトウェアです。



661:名称未設定
15/10/03 12:12:42.47 6N6av+ju0.net
>>608
どこまで生徒にやらせないによるだろうな。キーボードによる不正(?)とか
Cocoaにアクセスできればより先が開けるだろうね

662:名称未設定
15/10/03 22:32:34.51 dkBh6mTx0.net
>>608
JavaScript OSA から使える音声認識API はあるかってことだね。
まずはAppleScriptでSpeechRecognitionServerっていうのを通してOS Xの音声認識機能を使える。あらかじめ登録した単語や文章しか認識できない。
認識するなあ、ってところまでしか試してないので、想定してるようなアプリを作るような使い方ができるかどうかまではわからない。あとJavaScript OSA から使えるかどうかは調べてないのでわからない。
次にJavaScriptからはHTML 5のWeb Speech APIっていうのを使える。こちらは登録してない文章でもちゃんと認識する。"My name is Mike Smith." と発話したら「my name is mike スネーク」と認識したw
こちらもJavaScript OSA から使えるかどうかは調べてないのでわからないけど、たぶん使えない。
でもテキスト読み上げもできるので、こちらを使ってWebアプリケーションとして実装しちゃうのが楽かも。あとこのAPIに対応しているブラウザのバージョンが限られているので、学校とかで使うんならそこは要確認かも。

663:名称未設定
15/10/03 22:48:47.94 dkBh6mTx0.net
ところで目的は発問と解答のサイクルを対話型で行うことだろうか、それとも音声認識できるような正確な発音を対話形式で生徒に練習させることだろうか。
音声認識ってけっこう正確な発音をしないと認識しないと思うので、前者目的の場合、解答は正解でも発音のせいで正解と認識してくれないとか、あるいは間違った解答なのに音声認識させようとして一生懸命何回も発声するようなシチュエーションがありそうに思うが。

664:名称未設定
15/10/03 23:40:16.83 aEqyyNFD0.net
SpeechRecognitionでの認識/目的はコマンドとしてみたい。なので事前に登録した単語=コマンドのよう
音声入力は DictationIM というインプットメソッドによる。音声認識の根幹は同じかもしれないが
CocoaでもDictation制御は公開されていないので制御は難しい。ユーザによるオン/オフをシミュレートしてかな
また、AppleScript/Javascriptのダイアログのテキストフィールドはなぜか DictationIM をサポートしてないよう
JavascriptでもどうやらCocoaブリッジはサポートしているので頑張ればできないこともないってとこかな

665:602
15/10/04 08:46:57.00 YSK4WGoB0.net
詳しい解説をありがとうございます。>>609,604,605,606
>>610
>次にJavaScriptからはHTML 5のWeb Speech APIっていうのを使える。
これを試してみます。Appleのsayは、3、4年間使用してき
ました。事前に使用する英文のアメリカ英語、イギリス英語
オーストラリア英語の音声ファイルを作成して、生徒に聞か
せて解答させる練習をさせてきました。sayのおかげで、リ
スニングの機会が劇的に増えましたが、これだけだと授業中
まったく英語を発音しません。
>解答は正解でも発音のせいで正解と認識してくれないとか、
解答は減点なしで2、3回できるようにしたり、音声ではなく
文字での解答も認める(ただし得点は1/3)などと工夫すれ
ば、どうにかなると思います。
>あるいは間違った解答なのに音声認識させようとして一生
英文を画面に表示して、それを正しく発音して、認識させれば
正解という設問も作ります。

666:名称未設定
15/10/19 12:01:32.52 UpKLRgHK0.net
10.11のスクリプトエディタ、ファイルメニューの最近使った項目を開くで、白紙アイコン+名前が空欄になってるのがある
その項目を選んだら前に開いた用語説明のタイトルだけ出た


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch