X



AppleScript アップルスクリプト 質問、発表 6
■ このスレッドは過去ログ倉庫に格納されています
0001名称未設定
垢版 |
2013/12/21(土) 21:50:45.07ID:1PJJFexL0
質問、発表どっちでもスレ。

■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
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/
0296名称未設定
垢版 |
2014/10/26(日) 23:30:37.10ID:THGeGbUA0
>>295
>log date dateString ですると
うん、date dateString で «script»オブジェクト(?)ができての、«script»オブジェクトをlogするためになんか(文字列)変換/«script»オブジェクトに対してなんかしよとして失敗かと
log class of date dateString
は、«script»オブジェクトになんのクラスやねんって問いただして、(たぶん)classオブジェクトが返って来ての、classオブジェクトは文字列に変換可能だからかと
てきとーにそう思うw
0297名称未設定
垢版 |
2014/10/27(月) 04:41:14.63ID:MFcX2T9S0
>>294
ダメだったかーごめんね。てかそのエラー全角を半角に変換してないんじゃ。。。
なんか雑に教えちゃった感じで気持ち悪いから、データピッカーのサンプル作ったよ。
http://i.imgur.com/jb3SzVE.jpg
こんな感じで時計の針を動かしたりしたりして調整できて、
↓ボタンでテキストになって↑ボタンでテキストからピッカーに送るよ。
途中でNSDateだけじゃなくて、ASDate使ってやってるからapplescriptみたいに時間の操作ができるよ。
applescriptの文字列からDate型に変換は、裏で色々やっててapplescriptobjcじゃそのままできなかった思い出があるよ(多分
今回のは、すごく雑な変換だからいろいろ工夫してみてね。
いまいち何がしたいのか分からなくて、こんなサンプルでいいのかも謎だけど、、、、、

ソースはここにあるから、エディタで開いて見て
~/DatePickerTest.app/Contents/Resources/M2AppDelegate.scpt
んじゃがんばって。

http://www1.axfc.net/u/3351055
0298質問者 278
垢版 |
2014/10/27(月) 21:15:56.87ID:glAct/fS0
297さん ありがとうございます。結果動きました!ありがとうございます!
ソースを実際に出力させて頂き
http://cocoaapi.hatenablog.comで調べながら書き込んで、5割ほど読めたかなという所です。
ASDateを間に経由して、
NSdate>ASDate>テキストと、テキスト>ASDate>NSDateに変換しているのが分かりました。
他、adjustmentのアクションの辺りdatePickerの1と2が相互に関係しているのが特に興味深かったです。
NSdateのフォーマットの最後がタイムゾーンになっているとか国際的な感じがしてびっくりしました。
馬鹿なので時間は沢山掛かりましたが、こんなに読み応えのあるソースは初めてです!ありがとうございます!
他、分からない点が3点ほどあったのですが、上手く動いたのでまた次の機会にでも
お聞かせ頂けたらと思います。

とりあえず、お礼を。あ、そうなんですやりたいことは帰宅してまた書かせて頂きます。
(一つだけ壁にぶつかってしまいまして)
今回も沢山助けられました。ありがとうございます!
0299質問者 278
垢版 |
2014/10/28(火) 00:02:12.58ID:8TXD3xq30
こんばんわ。先ほどの実際にやりたいことは
というと、あるチラシ制作の仕事をしておりまして、
チラシの折込日を入力Enterするだけで3〜4日分の各作業日を自動でMavericksのカレンダーeventに
自動で登録しようと思ったのです。コレが出来れば月一の30分仕事が2分から3分、負担も無くなります。
作業日は祝祭日と休刊日、それからクライアントのスケジューリングの方則をスクリプトに盛り込めば
できあがります。(実際スクリプトエディタでそれらを登録して可能なことを確認しました)
ただ、XcodeをつかったUIの方が効率が違うし初心者にも渡すことが出来ます。
そこで、ぶつかった1つの多分コレも小さな問題を伺えたらと思います。
それはスクリプトエディタで出来た「ASdateの加算減算」です。
・・・いまちょっといじったら直せました。反省。。たぶんこれでなんとか作成できると思います。
ありがとうございました。(汗笑)
0300名称未設定
垢版 |
2014/10/29(水) 00:07:03.41ID:fRlD6nSB0
>>299
なんか面白そうだから、似たようなの作ってみた
というか10.8から使えるようになったEventKit.frameworkを触りたかったんだ。
飛ばしたい予定が入ってるカレンダー選ぶと、土日と選んだカレンダーに入ってる予定がある日を飛ばして、予定を立ててくれる。
これは、カレンダ一つしか選べないようになってるけど、簡単に複数のカレンダーで使えるようにできる。休刊日カレンダーとか他の作業が入ってるカレンダーとか
日本の祝祭日はここのカレンダー使ってるよ。
http://www.apple.com/downloads/macosx/calendars/japaneseholidaycalendar.html

GenでPlanの項目を下から締め切り日よりさかのぼって、EKEventのタイトルにしながら作ってくよ。
PlanがworkDayより少ない場合は、最初の方の日をOccasional Dayにするよ。
EKEventを作成してるから、そのまま書き込みたいカレンダー選んでsaveEventするだけでカレンダーに書き込めるよ
applescriptでカレンダーを操作するより気持ちいいかも、利点はカレンダーを起動しなくても書き込みや削除ができることかな
EKEventのプロパティは、applescriptで触ってると思うから分かると思う。

気になった点は、カレンダー起動したままで書き込んでカレンダーの自動アップデート中にremoveするとよくないね、
カレンダーの自動アップデート中の判定はどこにあるんだろうか?

そんなかんじ、久々にapplescriptobjc触って楽しかったわー
ざっと書いたからめちゃくちゃ爪が甘くて、参考にならないと思うけどこれもうpしときます。
すくしょ
http://i.imgur.com/Xcv6AWE.jpg
http://i.imgur.com/15PHaIC.jpg
斧が鯖落ちしてるみたいだからkienuに
http://kie.nu/2gET
0302質問者 278
垢版 |
2014/10/30(木) 22:21:06.57ID:1wagBLBS0
300さんありがとうございます! すごく勉強になりました。
それからまた作り込みがすごくて全然読めないです。汗
これからゆっくり読んでいきたいと思います。

EKEventって初めて聞きました。・・・ははは汗笑
それにしても、カレンダーを起動せずして書き込みなんて手品のよう!

読み解くには1ヶ月くらい覚悟します!
取りあえず版ができました。質問したおしたのでその成果をアップさせてもらいますね。
http://kie.nu/2gSs
これでいいのかな・・・笑
(クライアント名は変えましたクビになるので笑、なので法則はそれぞれバラバラです。)
操作は、キーボードのみでお手軽にできるものです。(見た目もシンプル!)
まぁ、こんな単純な物しかできなかっただけなんですけれど取りあえずホッとしてます。

これから、各作業日のステップ毎にカレンダーを分けて色別にしたり、
カレンダーの内容を読み取って、今日の作業を表示するTODOのようなパネルを作りたいです。
手軽な入力でカレンダーからTODOまでできるみたいな。

また無謀な、生きてるうちに出来るかな・・・(遠い目
0303名称未設定
垢版 |
2014/10/31(金) 02:04:32.90ID:P6vAtVvi0
スレチだったら誘導願いますが、ここが最も適当かと思って質問させていただきます。

RAW現像ソフトLightroom5で書き出しの後処理でターミナル上で動く
ExifToolを起動しカメラのシリアルNo.を削除したいのですが、下記の方法までは分かりました。

ExifTool
http://www.sno.phy.queensu.ca/~phil/exiftool/

1.ターミナルを開いてEXIFTOOLと入力した後、画像ファイルをターミナルに
 ドラッグ&ドロップするとパス付きファイル名が入力されてリターンキーで
 EXIFが表示される。

2.ターミナルを開いてEXIFTOOL -SERIALNUMBER=と入力した後、
 画像ファイルをターミナルにドラッグ&ドロップするとパス付きファイル名が
 入力されてリターンキーでEXIFからシリアルNo.が削除されて保存され
 別途、***.jpg_originalというファイル名でオリジナルファイルが保存される。

教えていただきたいのは、ここから先、
このコマンドをエイリアス化しなければならないようなのですが
ここが全く分かりません。どうすればよろしいのでしょうか。
0304名称未設定
垢版 |
2014/10/31(金) 02:31:53.45ID:4JVpEUGQ0
エイリアス化……? ちょっといみがわからん
受け売りをするならソースも貼れ
そもそもそれはapplescriptではなくシェルスクリプトだからこっちだな
Mac OS XをUnixとして使ってる人の為のスレ 17
http://anago.2ch.net/test/read.cgi/mac/1383436068/

ただ、lightroomの仕様がわからん以上、結局lightroomユーザ以外には
答えられんから、adobeスレで訊いたほうが早そうだ
少なくともapertureユーザのおれはその辺のわざわざ調べたくないからパス
0305名称未設定
垢版 |
2014/10/31(金) 02:58:55.50ID:cDlSGdtw0
>>303
とりあえずAutomatorでいいんじゃないの
Automatorはそれこそそういう単純な用途にあるのに誰も使わない不憫なヤツw

ExifToolはコマンドだから「シェルスクリプトを実行」アクションになるけど

EXIFを弄るだけだからLightroom5はほとんど全く関係ないはなしでそ
0306名称未設定
垢版 |
2014/10/31(金) 03:03:13.30ID:U4KxWBg20
>>303
>>このコマンドをエイリアス化しなければならないようなのですが
情弱がよくわかってない情報を然も当然かのように、質問に交えて自分の立場を少しでも上げようとする、
その態度じゃ、どこに行っても適当にあしらわれるだけだよ。
少しは人に物を聞く態度を勉強してこい
0309名称未設定
垢版 |
2014/10/31(金) 03:18:54.08ID:PdTh3q+P0
>>308
なんかこいつの質問の仕方イラつくんだよね、偉そうってか
重要な部分を隠して上っ面の質問の仕方ってのかね
2chをお客様サービスセンターと勘違いしてそう、mac探でも煙たがれてたね
0310名称未設定
垢版 |
2014/10/31(金) 03:24:09.66ID:cDlSGdtw0
偉そう?????うーむ...
やりたいことは理解できるんだけど。そりゃちょっと違うというのもw
0311名称未設定
垢版 |
2014/10/31(金) 03:40:29.53ID:PdTh3q+P0
>>310
自分の知識が中心で詳しいことを説明しないやつっているじゃん?
Lightroom5の書き出しの後処理でっていわれても
Lightroom5に書き出し設定に後処理って項目があって、そこで何が選べるかとか知らねーよって話。
まぁいいや短気過ぎたか すまんね
とりあえずその後処理でApplescriptのD&Dアプリ指定して何が渡されるか調べて、
もしファイルパスがもらえてたらそれにdo shell script でExifTool当てればいいんじゃないか?
0312名称未設定
垢版 |
2014/10/31(金) 04:09:46.08ID:cDlSGdtw0
まあ、こっち方面ど素人はこんなもんだろう。てかいたってふつーに見えるw
偉そうなど素人というのはだなもっとアレなんだぞ、リアルの世界で

ExifTool、ターミナル、ドラッグ&ドロップ てとこで、Lightroom5でファイルとして書き出した後の、ファイルをどうにかという話だと思うよ
エイリアスというのも、たぶんシェルのaliasのことだと思うけど、違うかもしれないw
0313名称未設定
垢版 |
2014/10/31(金) 04:18:47.00ID:PdTh3q+P0
>>312
2chはファンタジーの世界ですものね(違うか
後処理に関してはググったらLightroom5に後処理ってオプションがあるみたいよ
多分そこで開くアプリケーションにターミナルとか選んじゃったりして試行錯誤してんじゃないかな
0314名称未設定
垢版 |
2014/10/31(金) 04:25:40.65ID:cDlSGdtw0
あ、そうなの。だったら、Pluginsでよさそうなw
まとめてなんかしたいのかと思ったよ
0315名称未設定
垢版 |
2014/10/31(金) 04:39:49.46ID:cDlSGdtw0
うーん、後処理でターミナルってのがよくわからんな

>>305,304
とりあえず、可哀想なAutomatorではこんなん。コマンドが正しいのか知らんけど
(Automatorのスレが別にあるのを知ったんだけど、終わり間近なのでごめんくさい)
http://i.imgur.com/tCXDhqi.png
0316名称未設定
垢版 |
2014/10/31(金) 04:46:35.36ID:PdTh3q+P0
昔フォトショのプラグイン書いたの思い出して、LightroomのSDK探したら
プラグインluaなのかよw
これ超簡単にMetadata書き換えできる気がするわ
0317名称未設定
垢版 |
2014/10/31(金) 04:57:32.90ID:PdTh3q+P0
うんcom.adobe.serialNumbe呼び出せばシリアルナンバーも書き換えできるわ
てかチラッと見た感じこの量ならほとんど全部のメタデータに対応してそう
>>303君はlua覚えるといいよ
applescriptみたいなもんだ
0318名称未設定
垢版 |
2014/10/31(金) 07:56:33.44ID:rhP6dt/O0
>>303
よくわかりませんが、ここの人たちが言っていることのほうが
正しい道のような気はしますが、あなたの考えを伸ばすとすると、
要はLightroomで書きだしたあと後処理にExifTool使ってExif情報を操作するんだよね?
そしたら、情報を削除したファイルがどこかに出来るはずだから、
それのパスを作成してそれをtell application "Finder"で set ~ as alias (list)
とかして、適宜自分の好きな名前にするなどすればいいよ。

直接ExifToolからAppleScriptに結果を受けることはできないだろうから
上記の処理をする前にはファイルの生成待ちと存在確認は必要
(とはいえExif操作だから時間かからない?)
FolderActionとかにしてもいいかも。俺は絶対にしないけど。

というかLightroomってどこまでできるんだっけ? 最近のAdobeはAS対応貧弱だから嫌い。
昔からのツールはいろいろ簡単にできるのにね。

>>317
luaとか簡単? ザクッと昔ググるだけググッてとっかかりがなくて手を付けてないけど。
0319名称未設定
垢版 |
2014/10/31(金) 08:14:23.46ID:PdTh3q+P0
>>318
ExifTool自体はコマンドラインで動くバイナリ
用はターミナルでコマンド打って動作させるやつ
おそらくLightroomの後処理では保存ファイルのパスを引数にしたシェルスクリプトを走らせる機能はないと思う
だからExifToolをパッキングしたアプリケーションなどにファイルパスを渡さないと行けないんだ
AppleScriptでExifToolを操作するが正解
理解した?
ASっていうとApplescriptなのかActionScriptなのか、はたまたAngelScriptの可能性も出て来るから微妙よねw

Luaの構文自体は分かりやすいからすぐ触れるよ、applescriptしか触ったこと無かったら最初はキツいかもしれないけど。
0320名称未設定
垢版 |
2014/10/31(金) 08:39:42.29ID:rhP6dt/O0
>>319
えー! Lightroomって後処理みたいなのもできないのか。
出来ないはずないとか思っちゃった。
ま、でも、書きだした後ASで処理すりゃいい話だからどっちでもいいか。
0321名称未設定
垢版 |
2014/10/31(金) 08:47:26.70ID:PdTh3q+P0
>>320
いや後処理機能はついてるみたいだけど、開くアプリ選ぶくらいじゃないかと推測して(ry
だからD&Dで作ればパスがもらえるとおも(ry
デジャブか
0322名称未設定
垢版 |
2014/10/31(金) 09:30:08.36ID:ZcnZkG8y0
こんなソフト探していますスレで
EXIF編集ソフトのアンケートをとったら軽くスルーされたので
こっちに来たとみた
0323名称未設定
垢版 |
2014/10/31(金) 14:02:31.92ID:P6vAtVvi0
>>304-322
皆さん、毎度お騒がせしております。説明不足で申し訳ございません。
エスパーしてたくさんのアドバイスありがとうございました。
やりたいことを再度、かみ砕いて説明させていただきますと、

1.RAW現像ソフトLightroom5(以後略してLr5)を使ってます。
 Lr5は現像後に別のソフトへ現像後のJPEGファイルを受け渡す
 ことができます。これが>>303のいわゆる後処理です。

2.この後処理にExifToolというターミナル上でコマンドを
 入力して動くExif閲覧、編集、削除アプリを動かしたいです。

3.どのように動かしたいかは現像後のJPEGのExifから
 カメラのシリアルNo.のみを削除したいです。
 そのコマンドはEXIFTOOL -SERIALNUMBER=ファイル名です。

これをするにはコマンドをエイリアス化しなければならない
そうなのですが、どうしましたらよろしいでしょうか。
0324名称未設定
垢版 |
2014/10/31(金) 14:11:34.53ID:cDlSGdtw0
>>323
>コマンドをエイリアス化
ってなんやねん
説明するか、説明できないんだったら「コマンドをエイリアス化しなければならないそうなのですが」の元を示さないとわからんよ

あと、自分で試しているの?「EXIFTOOL -SERIALNUMBER=ファイル名」じゃ一般的にいうターミナルでは動かないと思うよ
0325名称未設定
垢版 |
2014/10/31(金) 14:14:23.15ID:cDlSGdtw0
>>324
>あと、自分で試しているの?「EXIFTOOL -SERIALNUMBER=ファイル名」じゃ一般的にいうターミナルでは動かないと思うよ
orz... 今は(?)小文字大文字関係無いのか... 謝罪して取り消させていただきます
0326名称未設定
垢版 |
2014/10/31(金) 14:29:45.27ID:cDlSGdtw0
大文字好き(?)といいどうもWindowsでのエイリアスのような気がするんだが
0327名称未設定
垢版 |
2014/10/31(金) 14:30:31.85ID:4JVpEUGQ0
>>323
>>304で「エイリアス化しなければならない」のソースを貼れと言ったはずだが?
他の意見も全部無視かよ
それにそこ以外は「applescript シェルスクリプト アプリケーション」とかでググればわかることだ
あるいは他のやつが書いてるようにautomatorでもいい

ここのやつらは親切だからこんなクソにも答えてくれるだろうが
質問の仕方も質問内容もおかしいと気づいてほしい
0328名称未設定
垢版 |
2014/10/31(金) 14:35:03.58ID:4JVpEUGQ0
あとは目的が全然特殊じゃないので、exiftoolを自分で使いこなそうとせず
普通に「lightrooom exif シリアル 削除」とかでググった方が幸せになれるんじゃないか? お互いに
0330名称未設定
垢版 |
2014/10/31(金) 14:50:05.89ID:4JVpEUGQ0
なんだマルチかよ氏ね
0332名称未設定
垢版 |
2014/10/31(金) 16:06:19.88ID:PdTh3q+P0
地雷臭はこれか、まんまと釣られてしまったな
みんな優しすぎんよ
0333名称未設定
垢版 |
2014/10/31(金) 16:19:50.43ID:neCXR2Hh0
質問者そっちのけで話は盛り上がるんだけど、いつの間にか質問者がフェードアウトしててなんとなくうやむやになる……といういつものパターンだねw
0334名称未設定
垢版 |
2014/10/31(金) 21:23:03.21ID:/phNTl1y0
【Macで】もなにも
ってExifToolはクロスプラットフォームだろうが
いい加減にしろ
0336名称未設定
垢版 |
2014/11/01(土) 10:11:10.50ID:iIVG1+Z10
Shane StanlyさんのASOC本、PDFだとパラハラめくれなかったので、
自分で印刷、製本したったw 装丁は茶色の牛革w 7000円くらいしそうな
本ができたwww いつでもどこでも勉強するぜ!

A5両面印刷のA6小冊子だから字が小さすぎて読めないorz
0337名称未設定
垢版 |
2014/11/01(土) 11:45:25.90ID:iIVG1+Z10
あーあー誰かがASOC本を日本語でまとめてくれたらなあ。
日本語のASOC本って1冊もないよね。
0338名称未設定
垢版 |
2014/11/01(土) 21:56:29.60ID:eXHrQzp90
でもまあASは英語でも分かりやすいかも
ムズい言語のは日本語なのにムズいという
0339名称未設定
垢版 |
2014/11/08(土) 14:20:35.62ID:LlCPsU700
写真のリネームのapplescriptを下記からコピーして使用しています。
ttp://hottinroof.blog54.fc2.com/blog-entry-77.html

スクリプト中には同一時刻の場合サブナンバーを付けるようになってますが、これが出来ず、同じ
名前の項目があるため処理できない、とのメッセージが出てしまいます。下記がサブナンバーの
記述ですがどうすればサブナンバーがつくようになりますか?
OS Mavericks, mac pro mid 2012 です。

--もし同一時刻のファイルが存在した場合、サブナンバーをつける
set ChkFname to name of Obj
if ChkFname is not Orifname then
set CHK to "OK"
end if
if ChkFname is Orifname then
set CHK to "NO"
set subNUM to subNUM + 1
end if
0340名称未設定
垢版 |
2014/11/08(土) 15:44:24.97ID:ypauXXT+0
エラーになってるのは引用箇所の直前の

set name of Obj to fname & "." & kakutyousi

だから、そこ try / on error / end で囲えばいいんじゃないの
スクリプトちゃんと読んでないけどとりあえず _2 _3 _4 などにリネームされる

try
set name of Obj to fname & "." & kakutyousi
on error
--もし同一時刻のファイルが存在した場合、サブナンバーをつける
set ChkFname to name of Obj
if ChkFname is not Orifname then
set CHK to "OK"
end if
if ChkFname is Orifname then
set CHK to "NO"
set subNUM to subNUM + 1
end if
end try
0341名称未設定
垢版 |
2014/11/08(土) 16:34:00.38ID:LlCPsU700
>>340
set name of Obj to fname & "." & kakutyousi
の;で、end of lineがあるべきところですがunkown tokenが見つかりました、
で引っかかってしまいうまくいかないです。
0342名称未設定
垢版 |
2014/11/08(土) 17:01:27.86ID:ypauXXT+0
その行はオリジナルのままにしといてちょ(あるいは amp; を取り去る)
生アンパサンドが打てない
0343名称未設定
垢版 |
2014/11/08(土) 17:28:47.70ID:bXbYhwqn0
>>340
てか、全然実行してないけど、なんでエラーになるん?
すでに途中まで実行してて正しい名前になってる場合に
エラーになるのかな?
0344名称未設定
垢版 |
2014/11/08(土) 17:41:46.94ID:LlCPsU700
>>342
んー。全くリネームしなくなりました。というかtry でループしてる感じです。
0345名称未設定
垢版 |
2014/11/08(土) 20:09:06.28ID:bXbYhwqn0
>>344
>>343が全てなのでは? 普通に動くよ。
それに、そもそもこのスクリプトで同時刻でサブナンバーがつく
状況は普通は起きないよ。子どもの運動会の写真を連写したりしたらありうるけど。
0346名称未設定
垢版 |
2014/11/08(土) 20:12:37.10ID:LlCPsU700
>>345
まさに連写です。
現状止まったら同じ秒の処理済みのファイル名に自分で1とか追加して同じファイル名にならない
ようにしてます。
0347名称未設定
垢版 |
2014/11/08(土) 20:44:30.86ID:bXbYhwqn0
>>346
あんま言うのもなんだけど、そしたらもう問題解決してるよ。
エラーは当然出る。手作業が嫌ならスクリプトを変更。
基本的な変更はだれでもできる簡単なものだから、ちょっと頑張ってみたら?
今言えるのはこんだけ。
0348名称未設定
垢版 |
2014/11/08(土) 20:51:14.99ID:wpKvrxUU0
自分で[考える、作り出す]ことをしなくなった人間って生きる価値無いよね。
最近そんな人多いいけどさ
0349名称未設定
垢版 |
2014/11/08(土) 20:54:50.91ID:ypauXXT+0
これでいくかな?
下記を>>340と入れ替え(アンパサンドについては同じく書き替え)

try
set name of Obj to fname & "." & kakutyousi
end try
--もし同一時刻のファイルが存在した場合、サブナンバーをつける
set ChkFname to name of Obj
if ChkFname is not Orifname then
set CHK to "OK"
end if
if ChkFname is Orifname then
set CHK to "NO"
set subNUM to subNUM + 1
end if
0350名称未設定
垢版 |
2014/11/08(土) 21:26:27.22ID:bXbYhwqn0
言うだけでもなんなんで。
よくわからんがバージョン依存あるかも。
あー、書いてたらアイスとけたよ

tell application "Finder"
set theFileList to selection as alias list
repeat with i in theFileList
set i to i as alias
set i_Extension to name extension of i
set AnswerFileName to my getExif_(i) & i_Extension
set NUM to 1
repeat while (exists (file AnswerFileName of parent of i))
set AnswerFileName to my getExif_(i) & "_" & NUM & i_Extension
set NUM to NUM + 1
end repeat
set name of i to AnswerFileName
end repeat
end tell

on getExif_(theFile)
set theName_of_Camera to do shell script "exiftool -model " & quoted form of POSIX path of theFile

set theDate to do shell script "exiftool -DateTimeOriginal " & quoted form of POSIX path of theFile

set OriginalDeliniter to AppleScript's text item delimiters
set AppleScript's text item delimiters to ":"
set theName_of_Camera to item 2 of text items of theName_of_Camera
set theDate to items 2 thru end of text items of theDate
set AppleScript's text item delimiters to OriginalDeliniter
return text 2 thru end of theName_of_Camera & (theDate as string)
end getExif_
0351名称未設定
垢版 |
2014/11/08(土) 21:31:47.41ID:bXbYhwqn0
間違えるし。適当に直してくれ。
0352名称未設定
垢版 |
2014/11/08(土) 21:42:28.42ID:hUAOfoDF0
AppleScriptとは、かれこれ20年以上の
付き合いで、今でもDVD PlayerやQuickTime
制御では、お世話になっている。

だが、ファイル名変更などの処理は付き合いが
2年のpythonで書く。
0353名称未設定
垢版 |
2014/11/08(土) 22:09:04.06ID:PoIJmgvo0
>>352
python興味あるんだよな〜
よかったらそうやって日常的に使ってるスクリプトうpしてくれ参考にしたい
0354名称未設定
垢版 |
2014/11/08(土) 22:12:37.60ID:09XY7TPZ0
文字列処理はAppleScript's text item delimitersとか面倒
osaxが使えると簡単にできるんだけど
0355名称未設定
垢版 |
2014/11/08(土) 22:24:30.26ID:PoIJmgvo0
いまはosaxよりdo shell scriptだよな
AppleScript's text item delimitersってほんと書いててばかばかしい
まあ一度自分専用ハンドラつくれば次からは呼ぶだけだけどさ
0356名称未設定
垢版 |
2014/11/08(土) 22:33:56.17ID:bXbYhwqn0
>>354
確かに面倒だよねー。上のスクリプト書くときもブログのスクリプトの
Delimiterがちょっと煩雑だなあとできるだけまとめたんだけど、
exiftoolのオプションをまとめて、その結果からほぼ一発で結果
返せないかと考えたけど、面倒になって断念したよ。
それ以外にはいつもはrepeat while existsとか使ったことないけど
ちょっと使ってみた。

もっとスマートでかっこいい書き方よろしく。
0357名称未設定
垢版 |
2014/11/08(土) 22:42:40.37ID:bXbYhwqn0
ところで変数作るときCameraNameとかにしたかったけどコンパイルすると
cameranameになっちゃう。意味がわからない。
0358名称未設定
垢版 |
2014/11/08(土) 23:02:44.84ID:PoIJmgvo0
>>357
一度全部小文字でコンパイルした後はどうあがこうと小文字に直される
最初からcapitaliseしとけば問題なかったはず
0359名称未設定
垢版 |
2014/11/09(日) 03:05:12.49ID:tOvI53P80
>>349
いけました。ありがとうございます。

>>350
ありがとうございます。試してみます。
VBA使っているので自分で直してみようと思いブレークポイントの設定やステップで動かしてみようと
したのですが、そこからつまずき質問しました。
applescriptにはないんですね。
0360名称未設定
垢版 |
2014/11/09(日) 03:11:10.32ID:FeCGzdwq0
>>359
もう一つ新規で作ってそこで、部分的に確認して行けばいい
基本は1行で完結してる
くっつけてるだけ。
0361名称未設定
垢版 |
2014/11/09(日) 03:52:52.38ID:VXCQ5bro0
>>357
自分がよくやる直し方を書いとくよ。

1. AppleScriptエディタで新規ファイルを作る。保存の必要なし、このファイルのみを開くこと。
2. CameraNameという変数を書いてコンパイルする。
3. 変数名を直したいファイルを開いてコンパイルして保存。

これで好きなように大文字小文字を変えれるはず。ただ、頻繁に変わってしまうけどね・・・
これはAppleScriptエディタで先に開いているファイルにある変数(コンパイル済のもの)の大文字小文字の表記を後から開いたファイルにも適用(タイミングはコンパイル時)するという親切設計(^^)凸が原因なんだよ
0362名称未設定
垢版 |
2014/11/11(火) 08:13:53.74ID:gi7C6GO70
ああ日本にもMacscripterみたいなところほしい。
ここくらいしか意見交換できるところ知らないけれど、
2ちゃんの専ブラはwindowsのほうが沢山あるし、
コードのやりとりも外部サイト使わなきゃならないし面倒。
テーマごとにスレッドが立つわけでもないので、
話が散発的。
0363名称未設定
垢版 |
2014/11/11(火) 19:48:26.51ID:QbSjNnGp0
>>362
低レベルな初心者質問所になって誰も寄り付かんでしょ
0364名称未設定
垢版 |
2014/11/11(火) 19:54:15.09ID:gHfKBy9o0
言い出しっぺが頑張るしかない
0365名称未設定
垢版 |
2014/11/14(金) 09:34:40.02ID:bdBo1rtm0
スマホでかきこみしてると痛感するけど
デリミタの最悪なところはスペルが長いのに
コード補完効かないエディタに問題があるかなと思った。
単語登録、ハンドラ作成よりスマートな
方法ないかな?
0366名称未設定
垢版 |
2014/11/14(金) 09:37:02.87ID:bdBo1rtm0
フリーのフレームワークに検索置換、
正規表現含めてないものかね?
0367名称未設定
垢版 |
2014/11/14(金) 11:51:09.09ID:jdF3j3OF0
いまどきはdo shell scriptでなんでもござれ
sedでもrubyでも好きなの使えや
0368名称未設定
垢版 |
2014/11/14(金) 15:00:28.68ID:grdt4k+m0
AppleScriptが"do shell script"の実行結果の
返り値をどう取得するかが問題?
0369名称未設定
垢版 |
2014/11/14(金) 21:20:09.76ID:jdF3j3OF0
set a to do shell script ...
じゃだめなのか? パイプ処理やリダイレクトで出力はすべて取り出せると思うが
0370名称未設定
垢版 |
2014/11/15(土) 12:55:03.50ID:Bp4U37ku0
あっ、これで出来るのですね! ありがとうございます。
勉強になりました。
0371名称未設定
垢版 |
2014/11/15(土) 20:05:03.07ID:yPqV/T6U0
今まで検索置換正規表現はdo shell script からrubyでやってたけど、
最近、delimiter使い始めた。使い始めると面白いね。いろいろ使える。
分かち書きする言語だともっと便利なんだろうなと理解した。
0372名称未設定
垢版 |
2014/11/16(日) 20:27:36.67ID:CANt0WnQ0
最近はじめたけど
文法独特すぎやなあ
0373名称未設定
垢版 |
2014/11/16(日) 23:03:17.12ID:V4b/3JFT0
下手に英語に似てるぶん>>369のような書き方を思いつかない場合はあると思う
基本的には親しみやすい言語だと思うが
0374名称未設定
垢版 |
2014/11/18(火) 08:14:34.62ID:KyR0vcIu0
ASOCでやっとひとつ壁を越えた。うれしい。つっても低い壁だけど。
それにしても、ASOCでGUI用のオブジェクト自由自在に使える人って
日本にどれだけいるのかな? 参考になるものが見つからなくって
なかなか手も足も出ません。画像を一覧表示したいけど次の課題は
それだな。GUIオブジェクトの扱い方の一般的な方法が知りたいよ。
0375名称未設定
垢版 |
2014/11/18(火) 08:41:29.05ID:oSyrzLiQ0
>>374
何を越えたか知らんけどおめでと
objcをasocに書き換えれるようになれば、簡単だよ。
自分のオリジナルのクラスをasocで作って配置すれば汎用効くしいいよ。
ただそれやってるのは、縛りプレイ好きの物好きだけなんだよね、objcで書いた方が楽だしさ。
そのうちiOSアプリとか作り始めるから、asoc離れて行くんだよね。
最終的にはasocでやることは、基本的なことだけになって、他のアプリケーション操作するときとかユーザーが簡単に拡張できるようにプラグイン的な使い方になって行くんだよね。
もともとそういう使い方が正解だし、asocででかいプロジェクト作ると、コントロールできないことが多くなってバグだらけになるって言うのが先陣の結論だわ
画像を一覧表示したいなら、コレクションビューが楽だよ、ただ大量に表示するとすぐ重くなるから
コレクションビュー自体をカスタムビューで自作した方がいいよ。
扱い方の一般的な方法って言うのも謎だけど、xib使は極力使わないでコードで書いた方が扱いやすいかな。
何個も同じようなの作ると、わりとコピペしたりするからxibで色々やっちゃうと後でめんどくさくなるんだよね、どこ触ったかも後で確認しづらいしさ
0376名称未設定
垢版 |
2014/11/18(火) 14:22:38.49ID:1jvrEaba0
iTunesで曲の最初の30秒ずつ再生するスクリプトを作った。

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

iTunesの外で実行するとちゃんと動いてるんだけど、~/Library/iTunes/Scriptsにおいて、iTunesから実行すると、delayが無視されてるみたい。そういう仕様なの?
なにか対策ある?
0377名称未設定
垢版 |
2014/11/18(火) 14:29:52.04ID:NsbBsaOB0
>>376
プログラムから別のスレッドでapplescriptを実行するとdelayは、効かない
メインスレッドがブロックされるのは嫌だから、外部スクリプト対応してるアプリケーションはほとんど別スレッドで実行してる。
delayを使うんじゃなくて、再生時間取得して30秒再生したら次に行くように変えたらどうか?
0378名称未設定
垢版 |
2014/11/18(火) 15:02:39.85ID:1jvrEaba0
>>377
サンキュー。これでいけたよ。

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

repeatっていらないんだなぁ。
0379名称未設定
垢版 |
2014/11/19(水) 23:42:34.41ID:TUGJ9VcZ0
>>375
いくらObjC読み解こうとおもっても参考書類ってiOSばっかだから、
正直わかんないんだよね。Macのプログラマーってどこで勉強してるんだろうか。
参考書読めばなんとなくは分かるんだけど、試行錯誤してるヒマがないから
ついついこっちに戻ってきちゃうんだよねぇ。GUI以外ならもうなんでもできるんだもん。
GUIも凝ったことしなければ別に問題ないし。
Table Viewとか使う方法って大きく分けて3つくらいあるよね?
・data sourceを使ったもの
・xibでいろいろいじって適当なプロパティ作ってぶっこむ
・ObjCでまじめにメソッド?つかったりしてがんばる。
一番下の方法しか使ったことないけど、昔ながらのやり方ができるなら
ちょっと試したい気もしている。
今日は仕事でスクリプトがんばりまくりでした。ありがとう!ASOC!
0380名称未設定
垢版 |
2014/11/20(木) 08:48:11.95ID:lzIykKYT0
>>372
言うほどじゃないよ。
delumiterだってsplit系の命令だし。
0381名称未設定
垢版 |
2014/11/21(金) 05:18:03.19ID:6kQ4KIAV0
>>379
使い方自体は、使いたいフレームワークのヘルプ見れば、appleさんが使い方書いてくれてますよ。
何でもできるけどASOCだけで、それなりに書くとバグが酷くないです?
マルチスレッド関連の処理とかも勝手にリリースされてんのか、よく落ちたりした思い出ががが。
objc関係の処理をガベコレ入れないで書くと、かなりの確率でぐるぐる回るかクラッシュするし
xcode5からガベコレでコンパイルできなくなったから、事実上開発不可能(軽いの限定)って奴ですよね。
appleさんもswiftにシフトしてASOC捨てたみたい?だから、対応は絶望的だしこのまま消えてくんだろうなと最近思ってます悲

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

スクショ
http://i.imgur.com/bB4e81F.jpg

http://kie.nu/2jaH
0382名称未設定
垢版 |
2014/11/21(金) 08:06:10.65ID:q+tkQrRs0
>>381
ありがとう。ちょっと見てみます。
ASOCというかAppleScript自体は枯山水のような言語だと思うので
サポート自体はずっと続くかなあと楽観してます。10.8ですらAppleScript studioが動いてますし。
10.9、10.10で動かしてる猛者はいるのかな?
0383名称未設定
垢版 |
2014/11/21(金) 08:23:20.44ID:0EtAPx1n0
>>381
>appleさんもswiftにシフトしてASOC捨てたみたい?
swiftは、複雑なASOCだけではなく、単純なAppleScript
(の基本コマンド)のように簡単に書けるものですか?

AppleScriptとswiftのコマンド対照表など、参考になる
サイトなどはございますか?
0384名称未設定
垢版 |
2014/11/21(金) 19:26:58.10ID:5ayGMZMc0
すいません
アプリ起動のスクリプトで画面を開かずに起動とかできるスクリプトを教えて下さい
0386384
垢版 |
2014/11/21(金) 19:55:02.17ID:5ayGMZMc0
ログイン後にitunesを画面を表示せず起動がしたいのです
0387名称未設定
垢版 |
2014/11/21(金) 22:11:46.09ID:GTi6Gh3s0
ログイン項目にiTunesを登録して「隠す」にチェックを入れる

とかいうことじゃないのねきっと
0388名称未設定
垢版 |
2014/11/21(金) 23:55:30.15ID:6kQ4KIAV0
>>383
複雑なASOCって言うのはちょっと違うかな、中身は同じAppleScriptで、ただ同じようなことを何回も書いてるだけですよ。
単純なコマンドでの比較なら根本は、全く別の言語だからAppleScriptとの対照表を見ても書けないと思います。
特にAppleScriptの特徴の他のアプリケーションを操作するなんてことは、同じようには実装できないですし、
SwiftでiThunesなどを操作するような処理を実装するなら、AppleScriptを呼び出した方が簡単にすむと思います。
そういうのをやりたいなら、AppleScriptで書いた方がいいですね。
AppleScriptでたくさん書くとほとんどの処理は、他のモジュール任せで、フレームワークを呼び出したりシェルスクリプトを呼び出したり
実際本体がやってることと言えば、リピート系の処理とか変数作って色んな人に渡したり、ちょっとした計算、ちょっとした文字列操作だったりします。
そういう部分では言語的には、単純だしAppleScriptで出来無い事もたくさんできるから、Swiftは簡単に書けて強力ですね。
とりあえずwiki見れば、何となく書けるような言語です。Swiftについて詳しく聞きたかったらSwiftスレに行くといいですよ。
AppleScriptのいい所は、寝る前とかにスクリプトエディタでさくっと書ける気軽さですね。
0389384
垢版 |
2014/11/22(土) 08:29:13.19ID:PMrhB+tK0
>>387
> ログイン項目にiTunesを登録して「隠す」にチェックを入れる
>
> とかいうことじゃないのねきっと

はい
やりたいことはログイン後Nasへ接続後にiTunesを画面を表示しない状態で起動
する事になります
ログイン項目だと早すぎてNasへの接続がエラーになるので、スクリプトで
デレイさせてます
0390名称未設定
垢版 |
2014/11/22(土) 09:20:06.06ID:LIbEyQFi0
>>389
iTunesがアクティブになったら、GUIスクリプティングでコマンド+Hして隠せば?
0391名称未設定
垢版 |
2014/11/22(土) 09:23:26.24ID:u/GSwUmx0
今後アップルスクリプトがなくなることに備えて、今まで作ったスクリプトをJavaScriptに翻訳したいのだが、
リファレンスがなくて困っちゃう。もう少し待てば色々出してくるんだろうけど。。
0392名称未設定
垢版 |
2014/11/22(土) 09:33:46.73ID:MsdAX1Fa0
tell app "iTunes" to run

したら隠れて起動してくれたけど
Language Guide見たら、The run command launches an application as hiddenってあって、その通りになった
0393名称未設定
垢版 |
2014/11/23(日) 08:31:10.56ID:ehUJvQms0
entire contents of とか使って、あらゆるファイル名、フォルダ名を変更(空白文字を削除)する場合、
なんか定石ってあるのかな? 単純にentire contents of 使って取得した後、
すべてのファイル名、フォルダ名に変更かけようとしたらエラーがでた。
0395名称未設定
垢版 |
2014/11/23(日) 08:51:47.95ID:05FNHYym0
>>388
詳しい解説をありがとうございます。

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

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

swiftだと60行(100倍の長さ!)を超えてしまうのであれば、
やめます。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況