AppleScript アップルスクリプト 質問、発表 6at MAC
AppleScript アップルスクリプト 質問、発表 6 - 暇つぶし2ch300:名称未設定
14/10/25 19:25:35.38 Y7ywkFMP0.net
>>278,278
とりあえずな日付(NSDate)を文字列にはこんなんかな
set theDate to int_date's dateValue()
set dateFormatter to current application's NSDateFormatter's alloc()'s init()'s autorelease()
dateFormatter's setDateFormat_("YYYY-MM-dd hh:mm:ss a")
set dateString to dateFormatter's stringForObjectValue_(theDate)

's autorelease()
はいらないのかもしれない。Cocoa-AppleScriptでそこらがどないなってるのかわからないから入れてみた
Objective-Cだと余計な場合はクラッシュするがクラッシュしないので、入れた方がいいのか入れても入れなくてもいいのか不明

>>279
わからんw
文字列にしたら date にできるんじゃないかな。AppleScriptもdate<->文字列はめんどくさいっぽいなあ

301:名称未設定
14/10/25 19:27:59.17 pbKxf6+40.net
暇つぶしにデータピッカからテキストにして、テキストからNSDateに変換する流れ書いてみた、テストしてないです。
NSDateはテキストじゃないから、直接変換しようとしてつまるよねー。
property datePicker : missing value
set pickDate to my datePicker's dateValue()
set nsDateObj to my pick2date(pickDate)

on pick2date(pickdate)
  set cal to current application's class "NSCalendar"'s currentCalendar()
  set com to cal's components_


302:fromDate_(254, pickdate)   set year to com's |year|()   set month to com's |month|()   set day to com's |day|()   set hour to com's hour()   set minute to com's minute()   set second to com's |second|()   set time2sec to (((hour) * 3600) + ((minute) * 60)+ second) as number   set qqq to my mkDate(year, month, day, 0) + time2sec   return result end pick2date on makeDate(y, m, d, s)   tell (get current date)      set {year, its month, day, time} to {y, m, d, s}      return its contents   end tell end makeDate



303:名称未設定
14/10/25 19:30:07.23 pbKxf6+40.net
>>281
あNSDateじゃなくてASDate

304:名称未設定
14/10/25 20:10:23.39 pbKxf6+40.net
ハンドラの呼び出し名適当なやつのまんまだわ適宜直してちょ

305:質問者 278
14/10/25 20:18:04.97 N9eHGFRP0.net
281さんありがとうございます。実際おしえてもらったコードを入れてみました
set Client to name_Client's stringValue() as string
set the_Date to int_date's dateValue()

set dateFormatter to current application's NSDateFormatter's alloc()'s init()'s autorelease()
dateFormatter's setDateFormat_("YYYY-MM-dd hh:mm:ss a")
set dateString to dateFormatter's stringForObjectValue_(theDate)
最後の行でエラーが起きてしまいました
Scheduler[3049:303] *** -[AppDelegate workSchedulRecorder:]: The variable theDate is not defined. (error -2753)
ご返答のコード内容が理解できない初心者なのですが
変数のthe_Dateは作っていただいた書式にははまらないということでしょうか
もう少しねばってみたいと思います。ご返答ありがとうございました!

306:名称未設定
14/10/25 20:26:21.21 pbKxf6+40.net
>>284
落ち着きなさいtheDateが無いんだ
君はthe_Dateにしてるみたいだよ。

307:質問者 278
14/10/25 20:55:41.66 N9eHGFRP0.net
285さんありがとうございます!!
もう、学も無いのに英語サイトまわってくたくたになっていました。笑
出ました出ました!
本当に助かりました。ありがとうございます!
dateformatについての基礎知識は明日にでも探してみたいと思います。
これで、やりたいことが出来そうです。

本当にありがとうございました。

282さんありがとうございます!
いただいたサブルーチンを、appledelegateに加えて試してみたのですが、
ビルドエラーがでてしまい、試すことが出来ませんでした。
ただ、問題解決いたしましたので、お礼の返事のみさせていただきます。
ありがとうございました。

308:名称未設定
14/10/25 20:58:46.80 pbKxf6+40.net
>>286
あっれエラったかぁー全角スペースを変換してないとかだったりして。。。まいっか。

309:質問者 278
14/10/26 17:03:52.38 UmsXIIQV0.net
datePickerで悩んでいた者です。
dateformatについて私なりに調べてみました。奥が深く(?▽?; な感じでしたが、
EEEをつけると曜日まで表示されることが新たに分かりました。感謝します!

そしてまた、毎度申し訳なく書き込ませてもらいます。

下のスクリプトを「スクリプトエディタ」で実行すると、
set aaa to "2014年10月25日"
display dialog date aaa as text
->2014年10月25日土曜日 0:00:00

こうなってくれるのですが、appdelegeteのなかでは通用してくれません。
[AppDelegate workSchedulRecorder:]: Can’t make «script» into type text. (error -1700)
ただ、変数ではなくて、テキストをそのまま入れると

display dialog date "2014年10月25日" as text
->2014年10月25日土曜日 0:00:00

うまくしてくれます。ただ変数に入れないと作りたいものが作れなくて、、、
変数に入れるとなぜ急にダメになったのか、別の方法があるのか

単純なところでつまずいてしまっております。
スクリプトエディタでなんとなく進んで来れたので罰が当たったみたいで
どうか、よろしくお願いします。

310:名称未設定
14/10/26 18:12:44.58 BJ1Mvzrv0.net
わからん。qlmanageを一覧表示で表示するにはどうすればいいの?

311:名称未設定
14/10/26 20:02:33.54 THGeGbUA0.net
>>288
set dateString to "2014/10/26" as text
log class of dateString
log class of "2014/10/26"
log class of date dateString
log class of date "2014/10/26"
Cocoa-AppleScript の date文 が変数の場合なんかおかしなことをしている/おかしなことになっている
date 変数
の場合に作られるのは«script»オブジェクト?

NSDateベースで考えた方がいいような
どう�


312:オてもdateオブジェクト使いたい場合でも、で文字列からdateオブジェクトへは、文字列からCocoaオブジェクトにしてからdateオブジェクトへかなあ



313:名称未設定
14/10/26 21:13:11.35 juj/Re6i0.net
>>288
>>281のmakeDateハンドラ使ってみれば。

314:質問者 278
14/10/26 22:37:36.09 UmsXIIQV0.net
292さんありがとうございます。がんばってみましたが能力が足りないせいでうまくいきませんでした
set the_Date to pick_date's dateValue() --my取りました
set nsDateObj to my pick2date(the_Date)

on pick2date(pickdate)
  set cal to current application's class "NSCalendar"'s currentCalendar()
  set com to cal's components_fromDate_(254, pickdate)

set year to com's |year|()
  set month to com's |month|()
  set day to com's |day|()
  set hour to com's hour()
  set minute to com's minute()
  set second to com's |second|()
  set time2sec to (((hour) * 3600) + ((minute) * 60)+ second) as number
set qqq to my makeDate(year, month, day, 0) + time2sec --mkDateからmake dateに訂正
  return result
end pick2date


on makeDate(y, m, d, s)
  tell (get current date)
     set {year, its month, day, time} to {y, m, d, s}
     return its contents
  end tell
end makeDate
いろいろ試しながら探しながらやってみました。。せっかく書いてくださったんですが、、
すると、下記の閉じ忘れのようなエラーが出てコンパイル失敗になったようです。

315:質問者 278
14/10/26 22:39:28.30 UmsXIIQV0.net
Client Scheduler/AppDelegate.applescript:33: error: Expected “end” but found unknown token. (-2741)
Command /usr/bin/osacompile failed with exit code 1

先ほどwebでみつけたのですが、出だしの私はASファイルを別に作って、引数付きで呼び出して使った方が良さそうです。

316:質問者 278
14/10/26 22:40:19.50 UmsXIIQV0.net
291さん ありがとうございます。logで調べながらする方法すばらしいですね。
log class of date dateString 私のひっかかった date "変数" の箇所
log date dateString ですると複数のパラメーターがどうのでエラーになりました
appdelegateはすごく私には早すぎた感がありました。皆さんこんなに助言いただいたのに
うまくいかず申し訳ありません。

今回はdatePickerからもらった値をASに引っ張り込んで祝祭日と比較などして
最終「カレンダー」のeventに登録していきたかったので、ASファイルを別に作って
datePikerから得た文字列を引数にして呼び出そうと思います。

これから、その作業をしてみようと思います。ありがとうございました!!

317:名称未設定
14/10/26 23:30:37.10 THGeGbUA0.net
>>294
>log date dateString ですると
うん、date dateString で «script»オブジェクト(?)ができての、«script»オブジェクトをlogするためになんか(文字列)変換/«script»オブジェクトに対してなんかしよとして失敗かと
log class of date dateString
は、«script»オブジェクトになんのクラスやねんって問いただして、(たぶん)classオブジェクトが返って来ての、classオブジェクトは文字列に変換可能だからかと
てきとーにそう思うw

318:名称未設定
14/10/27 04:41:14.63 MFcX2T9S0.net
>>293
ダメだったかーごめんね。てかそのエラー全角を半角に変換してないんじゃ。。。
なんか雑に教えちゃった感じで気持ち悪いから、データピッカーのサンプル作ったよ。
URLリンク(i.imgur.com)
こんな感じで時計の針を動かしたりしたりして調整できて、
↓ボタンでテキストになって↑ボタンでテキストからピッカーに送るよ。
途中でNSDateだけじゃなくて、ASDate使ってやってるからapplescriptみたいに時間の操作ができるよ。
applescriptの文字列からDate型に変換は、裏で色々やっててapplescriptobjcじゃそのままできなかった思い出があるよ(多分
今回のは、すごく雑な変換だからいろいろ工夫してみてね。
いまいち何がしたいのか分からなくて、こんなサンプルでいいのかも謎だけど、、、、、

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

URLリンク(www1.axfc.net)

319:質問者 278
14/10/27 21:15:56.87 glAct/fS0.net
297さん ありがとうございます。結果動きました!ありがとうございます!
ソースを実際に出力させて頂き
URLリンク(cocoaapi.hatenablog.com)で調べながら書き込んで、5�


320:рルど読めたかなという所です。 ASDateを間に経由して、 NSdate>ASDate>テキストと、テキスト>ASDate>NSDateに変換しているのが分かりました。 他、adjustmentのアクションの辺りdatePickerの1と2が相互に関係しているのが特に興味深かったです。 NSdateのフォーマットの最後がタイムゾーンになっているとか国際的な感じがしてびっくりしました。 馬鹿なので時間は沢山掛かりましたが、こんなに読み応えのあるソースは初めてです!ありがとうございます! 他、分からない点が3点ほどあったのですが、上手く動いたのでまた次の機会にでも お聞かせ頂けたらと思います。 とりあえず、お礼を。あ、そうなんですやりたいことは帰宅してまた書かせて頂きます。 (一つだけ壁にぶつかってしまいまして) 今回も沢山助けられました。ありがとうございます!



321:質問者 278
14/10/28 00:02:12.58 8TXD3xq30.net
こんばんわ。先ほどの実際にやりたいことは
というと、あるチラシ制作の仕事をしておりまして、
チラシの折込日を入力Enterするだけで3~4日分の各作業日を自動でMavericksのカレンダーeventに
自動で登録しようと思ったのです。コレが出来れば月一の30分仕事が2分から3分、負担も無くなります。
作業日は祝祭日と休刊日、それからクライアントのスケジューリングの方則をスクリプトに盛り込めば
できあがります。(実際スクリプトエディタでそれらを登録して可能なことを確認しました)
ただ、XcodeをつかったUIの方が効率が違うし初心者にも渡すことが出来ます。
そこで、ぶつかった1つの多分コレも小さな問題を伺えたらと思います。
それはスクリプトエディタで出来た「ASdateの加算減算」です。
・・・いまちょっといじったら直せました。反省。。たぶんこれでなんとか作成できると思います。
ありがとうございました。(汗笑)

322:名称未設定
14/10/29 00:07:03.41 fRlD6nSB0.net
>>298
なんか面白そうだから、似たようなの作ってみた
というか10.8から使えるようになったEventKit.frameworkを触りたかったんだ。
飛ばしたい予定が入ってるカレンダー選ぶと、土日と選んだカレンダーに入ってる予定がある日を飛ばして、予定を立ててくれる。
これは、カレンダ一つしか選べないようになってるけど、簡単に複数のカレンダーで使えるようにできる。休刊日カレンダーとか他の作業が入ってるカレンダーとか
日本の祝祭日はここのカレンダー使ってるよ。
URLリンク(www.apple.com)

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

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

そんなかんじ、久々にapplescriptobjc触って楽しかったわー
ざっと書いたからめちゃくちゃ爪が甘くて、参考にならないと思うけどこれもうpしときます。
すくしょ
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
斧が鯖落ちしてるみたいだからkienuに
URLリンク(kie.nu)

323:名称未設定
14/10/30 21:58:19.65 DD9ePtIQ0.net
捕手

324:質問者 278
14/10/30 22:21:06.57 1wagBLB


325:S0.net



326:名称未設定
14/10/31 02:04:32.90 P6vAtVvi0.net
スレチだったら誘導願いますが、ここが最も適当かと思って質問させていただきます。

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

ExifTool
URLリンク(www.sno.phy.queensu.ca)

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

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

教えていただきたいのは、ここから先、
このコマンドをエイリアス化しなければならないようなのですが
ここが全く分かりません。どうすればよろしいのでしょうか。

327:名称未設定
14/10/31 02:31:53.45 4JVpEUGQ0.net
エイリアス化……? ちょっといみがわからん
受け売りをするならソースも貼れ
そもそもそれはapplescriptではなくシェルスクリプトだからこっちだな
Mac OS XをUnixとして使ってる人の為のスレ 17
スレリンク(mac板)

ただ、lightroomの仕様がわからん以上、結局lightroomユーザ以外には
答えられんから、adobeスレで訊いたほうが早そうだ
少なくともapertureユーザのおれはその辺のわざわざ調べたくないからパス

328:名称未設定
14/10/31 02:58:55.50 cDlSGdtw0.net
>>302
とりあえずAutomatorでいいんじゃないの
Automatorはそれこそそういう単純な用途にあるのに誰も使わない不憫なヤツw

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

EXIFを弄るだけだからLightroom5はほとんど全く関係ないはなしでそ

329:名称未設定
14/10/31 03:03:13.30 U4KxWBg20.net
>>302
>>このコマンドをエイリアス化しなければならないようなのですが
情弱がよくわかってない情報を然も当然かのように、質問に交えて自分の立場を少しでも上げようとする、
その態度じゃ、どこに行っても適当にあしらわれるだけだよ。
少しは人に物を聞く態度を勉強してこい

330:名称未設定
14/10/31 03:07:21.31 cDlSGdtw0.net
>>302
URLリンク(www.sno.phy.queensu.ca)
に、
Lightroom Plugins
Metadata Wrangler: Strip selected metadata components from images as they are exported
ってあるけど

331:名称未設定
14/10/31 03:09:21.84 cDlSGdtw0.net
>>305
なに�


332:セっているのかわからんぞww



333:名称未設定
14/10/31 03:18:54.08 PdTh3q+P0.net
>>307
なんかこいつの質問の仕方イラつくんだよね、偉そうってか
重要な部分を隠して上っ面の質問の仕方ってのかね
2chをお客様サービスセンターと勘違いしてそう、mac探でも煙たがれてたね

334:名称未設定
14/10/31 03:24:09.66 cDlSGdtw0.net
偉そう?????うーむ...
やりたいことは理解できるんだけど。そりゃちょっと違うというのもw

335:名称未設定
14/10/31 03:40:29.53 PdTh3q+P0.net
>>309
自分の知識が中心で詳しいことを説明しないやつっているじゃん?
Lightroom5の書き出しの後処理でっていわれても
Lightroom5に書き出し設定に後処理って項目があって、そこで何が選べるかとか知らねーよって話。
まぁいいや短気過ぎたか すまんね
とりあえずその後処理でApplescriptのD&Dアプリ指定して何が渡されるか調べて、
もしファイルパスがもらえてたらそれにdo shell script でExifTool当てればいいんじゃないか?

336:名称未設定
14/10/31 04:09:46.08 cDlSGdtw0.net
まあ、こっち方面ど素人はこんなもんだろう。てかいたってふつーに見えるw
偉そうなど素人というのはだなもっとアレなんだぞ、リアルの世界で

ExifTool、ターミナル、ドラッグ&ドロップ てとこで、Lightroom5でファイルとして書き出した後の、ファイルをどうにかという話だと思うよ
エイリアスというのも、たぶんシェルのaliasのことだと思うけど、違うかもしれないw

337:名称未設定
14/10/31 04:18:47.00 PdTh3q+P0.net
>>311
2chはファンタジーの世界ですものね(違うか
後処理に関してはググったらLightroom5に後処理ってオプションがあるみたいよ
多分そこで開くアプリケーションにターミナルとか選んじゃったりして試行錯誤してんじゃないかな

338:名称未設定
14/10/31 04:25:40.65 cDlSGdtw0.net
あ、そうなの。だったら、Pluginsでよさそうなw
まとめてなんかしたいのかと思ったよ

339:名称未設定
14/10/31 04:39:49.46 cDlSGdtw0.net
うーん、後処理でターミナルってのがよくわからんな

>>304,304
とりあえず、可哀想なAutomatorではこんなん。コマンドが正しいのか知らんけど
(Automatorのスレが別にあるのを知ったんだけど、終わり間近なのでごめんくさい)
URLリンク(i.imgur.com)

340:名称未設定
14/10/31 04:46:35.36 PdTh3q+P0.net
昔フォトショのプラグイン書いたの思い出して、LightroomのSDK探したら
プラグインluaなのかよw
これ超簡単にMetadata書き換えできる気がするわ

341:名称未設定
14/10/31 04:57:32.90 PdTh3q+P0.net
うんcom.adobe.serialNumbe呼び出せばシリアルナンバーも書き換えできるわ
てかチラッと見た感じこの量ならほとんど全部のメタデータに対応してそう
>>302君はlua覚えるといいよ
applescriptみたいなもんだ

342:名称未設定
14/10/31 07:56:33.44 rhP6dt/O0.net
>>302
よくわかりませんが、ここの人たちが言っていることのほうが
正しい道のような気はしますが、あなたの考えを伸ばすとすると、
要はLightroomで書きだしたあと後処理にExifTool使ってExif情報を操作するんだよね?
そしたら、情報を削除したファイルがどこかに出来るはずだから、
それのパスを作成してそれをtell application "Finder"で set ~ as alias (list)
とかして、適宜自分の好きな名前にするなどすればいいよ。

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


343:いいかも。俺は絶対にしないけど。 というかLightroomってどこまでできるんだっけ? 最近のAdobeはAS対応貧弱だから嫌い。 昔からのツールはいろいろ簡単にできるのにね。 >>316 luaとか簡単? ザクッと昔ググるだけググッてとっかかりがなくて手を付けてないけど。



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

Luaの構文自体は分かりやすいからすぐ触れるよ、applescriptしか触ったこと無かったら最初はキツいかもしれないけど。

345:名称未設定
14/10/31 08:39:42.29 rhP6dt/O0.net
>>318
えー! Lightroomって後処理みたいなのもできないのか。
出来ないはずないとか思っちゃった。
ま、でも、書きだした後ASで処理すりゃいい話だからどっちでもいいか。

346:名称未設定
14/10/31 08:47:26.70 PdTh3q+P0.net
>>319
いや後処理機能はついてるみたいだけど、開くアプリ選ぶくらいじゃないかと推測して(ry
だからD&Dで作ればパスがもらえるとおも(ry
デジャブか

347:名称未設定
14/10/31 09:30:08.36 ZcnZkG8y0.net
こんなソフト探していますスレで
EXIF編集ソフトのアンケートをとったら軽くスルーされたので
こっちに来たとみた

348:名称未設定
14/10/31 14:02:31.92 P6vAtVvi0.net
>>303-321
皆さん、毎度お騒がせしております。説明不足で申し訳ございません。
エスパーしてたくさんのアドバイスありがとうございました。
やりたいことを再度、かみ砕いて説明させていただきますと、

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

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

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

これをするにはコマンドをエイリアス化しなければならない
そうなのですが、どうしましたらよろしいでしょうか。

349:名称未設定
14/10/31 14:11:34.53 cDlSGdtw0.net
>>322
>コマンドをエイリアス化
ってなんやねん
説明するか、説明できないんだったら「コマンドをエイリアス化しなければならないそうなのですが」の元を示さないとわからんよ

あと、自分で試しているの?「EXIFTOOL -SERIALNUMBER=ファイル名」じゃ一般的にいうターミナルでは動かないと思うよ

350:名称未設定
14/10/31 14:14:23.15 cDlSGdtw0.net
>>323
>あと、自分で試しているの?「EXIFTOOL -SERIALNUMBER=ファイル名」じゃ一般的にいうターミナルでは動かないと思うよ
orz... 今は(?)小文字大文字関係無いのか... 謝罪して取り消させていただきます

351:名称未設定
14/10/31 14:29:45.27 cDlSGdtw0.net
大文字好き(?)といいどうもWindowsでのエイリアスのような気がするんだが

352:名称未設定
14/10/31 14:30:31.85 4JVpEUGQ0.net
>>322
>>303で「エイリアス化しなければならない」のソースを貼れと言ったはずだが?
他の意見も全部無視かよ
それにそこ以外は「applescript シェルスクリプト アプリケーション」とかでググればわかることだ
あるいは他のやつが書いてるようにautomatorでもいい

ここのやつらは親切だからこんなクソにも答えてくれるだろうが
質問の仕方も質問内容もおかしいと気づいてほしい

353:名称未設定
14/10/31 14:35:03.58 4JVpEUGQ0.net
あとは目的が全然特殊じゃないので、exiftoolを自分で使いこなそうとせず
普通に「lightrooom exif シリアル 削除」とかでググった方が幸せになれるんじゃないか? �


354:ィ互いに



355:名称未設定
14/10/31 14:35:36.01 hu2rEbyn0.net
【Macで】ExifTool質問スレッド【Exif編集】 [転載禁止]©2ch.net
スレリンク(dcamera板)

頑張ってスレッド立てたんだろうから誰かの回答をじっと待てばいいのに。

356:名称未設定
14/10/31 14:50:05.89 4JVpEUGQ0.net
なんだマルチかよ氏ね

357:名称未設定
14/10/31 14:50:45.82 cDlSGdtw0.net
ねんてこったいっ!w

358:名称未設定
14/10/31 16:06:19.88 PdTh3q+P0.net
地雷臭はこれか、まんまと釣られてしまったな
みんな優しすぎんよ

359:名称未設定
14/10/31 16:19:50.43 neCXR2Hh0.net
質問者そっちのけで話は盛り上がるんだけど、いつの間にか質問者がフェードアウトしててなんとなくうやむやになる……といういつものパターンだねw

360:名称未設定
14/10/31 21:23:03.21 /phNTl1y0.net
【Macで】もなにも
ってExifToolはクロスプラットフォームだろうが
いい加減にしろ

361:名称未設定
14/11/01 01:16:11.93 YSoq0j8H0.net
>>333
これ以上釣られてはならん

362:名称未設定
14/11/01 10:11:10.50 iIVG1+Z10.net
Shane StanlyさんのASOC本、PDFだとパラハラめくれなかったので、
自分で印刷、製本したったw 装丁は茶色の牛革w 7000円くらいしそうな
本ができたwww いつでもどこでも勉強するぜ!

A5両面印刷のA6小冊子だから字が小さすぎて読めないorz

363:名称未設定
14/11/01 11:45:25.90 iIVG1+Z10.net
あーあー誰かがASOC本を日本語でまとめてくれたらなあ。
日本語のASOC本って1冊もないよね。

364:名称未設定
14/11/01 21:56:29.60 eXHrQzp90.net
でもまあASは英語でも分かりやすいかも
ムズい言語のは日本語なのにムズいという

365:名称未設定
14/11/08 14:20:35.62 LlCPsU700.net
写真のリネームのapplescriptを下記からコピーして使用しています。
URLリンク(hottinroof.blog54.fc2.com)

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

366:名称未設定
14/11/08 15:44:24.97 ypauXXT+0.net
エラーになってるのは引用箇所の直前の

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

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

try
set name of Obj to fname &amp; "." &amp; 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

367:名称未設定
14/11/08 16:34:00.38 LlCPsU700.net
>>339
set name of Obj to fname &amp; "." &amp; kakutyousi
の;で、end of lineがあるべきところですがunkown tokenが見つかりました、
で引っかかってしまいうまくいかないです。

368:名称未設定
14/11/08 17:01:27.86 ypauXXT+0.net
その行はオリジナルのままにしといてちょ(あるいは amp; を取り去る)
生アンパサンドが打てない

369:名称未設定
14/11/08 17:28:47.70 bXbYhwqn0.net
>>339
てか、全然実行してないけど、なんでエラーになるん?
すでに途中まで実行してて正しい名前になってる


370:場合に エラーになるのかな?



371:名称未設定
14/11/08 17:41:46.94 LlCPsU700.net
>>341
んー。全くリネームしなくなりました。というかtry でループしてる感じです。

372:名称未設定
14/11/08 20:09:06.28 bXbYhwqn0.net
>>343
>>342が全てなのでは? 普通に動くよ。
それに、そもそもこのスクリプトで同時刻でサブナンバーがつく
状況は普通は起きないよ。子どもの運動会の写真を連写したりしたらありうるけど。

373:名称未設定
14/11/08 20:12:37.10 LlCPsU700.net
>>344
まさに連写です。
現状止まったら同じ秒の処理済みのファイル名に自分で1とか追加して同じファイル名にならない
ようにしてます。

374:名称未設定
14/11/08 20:44:30.86 bXbYhwqn0.net
>>345
あんま言うのもなんだけど、そしたらもう問題解決してるよ。
エラーは当然出る。手作業が嫌ならスクリプトを変更。
基本的な変更はだれでもできる簡単なものだから、ちょっと頑張ってみたら?
今言えるのはこんだけ。

375:名称未設定
14/11/08 20:51:14.99 wpKvrxUU0.net
自分で[考える、作り出す]ことをしなくなった人間って生きる価値無いよね。
最近そんな人多いいけどさ

376:名称未設定
14/11/08 20:54:50.91 ypauXXT+0.net
これでいくかな?
下記を>>339と入れ替え(アンパサンドについては同じく書き替え)

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

377:名称未設定
14/11/08 21:26:27.22 bXbYhwqn0.net
言うだけでもなんなんで。
よくわからんがバージョン依存あるかも。
あー、書いてたらアイスとけたよ

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_

378:名称未設定
14/11/08 21:31:47.41 bXbYhwqn0.net
間違えるし。適当に直してくれ。

379:名称未設定
14/11/08 21:42:28.42 hUAOfoDF0.net
AppleScriptとは、かれこれ20年以上の
付き合いで、今でもDVD PlayerやQuickTime
制御では、お世話になっている。

だが、ファイル名変更などの処理は付き合いが
2年のpythonで書く。

380:名称未設定
14/11/08 22:09:04.06 PoIJmgvo0.net
>>351
python興味あるんだよな~
よかったらそうやって日常的に使ってるスクリプトうpしてくれ参考にしたい

381:名称未設定
14/11/08 22:12:37.60 09XY7TPZ0.net
文字列処理はAppleScript's text item delimitersとか面倒
osaxが使えると簡単にできるんだけど

382:名称未設定
14/11/08 22:24:30.26 PoIJmgvo0.net
いまはosaxよりdo shell scriptだよな
AppleScript's text item delimitersってほんと書いててばかばかしい
まあ一度自分専用ハンドラつくれば次からは呼ぶだけだけどさ

383:名称未設定
14/11/08 22:33:56.17 bXbYhwqn0.net
>>353
確かに面倒だよねー。上のスクリプト書くときもブログのスクリプトの
Delimiterがちょっと煩雑だなあとできるだけまとめたんだけど、
exiftoolのオプションをまとめて、その結果からほぼ一発で結果
返せないかと考えたけど、面倒になって断念したよ。
それ以外にはいつもはrepeat while existsとか使ったことないけど



384:ソょっと使ってみた。 もっとスマートでかっこいい書き方よろしく。



385:名称未設定
14/11/08 22:42:40.37 bXbYhwqn0.net
ところで変数作るときCameraNameとかにしたかったけどコンパイルすると
cameranameになっちゃう。意味がわからない。

386:名称未設定
14/11/08 23:02:44.84 PoIJmgvo0.net
>>356
一度全部小文字でコンパイルした後はどうあがこうと小文字に直される
最初からcapitaliseしとけば問題なかったはず

387:名称未設定
14/11/09 03:05:12.49 tOvI53P80.net
>>348
いけました。ありがとうございます。

>>349
ありがとうございます。試してみます。
VBA使っているので自分で直してみようと思いブレークポイントの設定やステップで動かしてみようと
したのですが、そこからつまずき質問しました。
applescriptにはないんですね。

388:名称未設定
14/11/09 03:11:10.32 FeCGzdwq0.net
>>358
もう一つ新規で作ってそこで、部分的に確認して行けばいい
基本は1行で完結してる
くっつけてるだけ。

389:名称未設定
14/11/09 03:52:52.38 VXCQ5bro0.net
>>356
自分がよくやる直し方を書いとくよ。

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

これで好きなように大文字小文字を変えれるはず。ただ、頻繁に変わってしまうけどね・・・
これはAppleScriptエディタで先に開いているファイルにある変数(コンパイル済のもの)の大文字小文字の表記を後から開いたファイルにも適用(タイミングはコンパイル時)するという親切設計(^^)凸が原因なんだよ

390:名称未設定
14/11/11 08:13:53.74 gi7C6GO70.net
ああ日本にもMacscripterみたいなところほしい。
ここくらいしか意見交換できるところ知らないけれど、
2ちゃんの専ブラはwindowsのほうが沢山あるし、
コードのやりとりも外部サイト使わなきゃならないし面倒。
テーマごとにスレッドが立つわけでもないので、
話が散発的。

391:名称未設定
14/11/11 19:48:26.51 QbSjNnGp0.net
>>361
低レベルな初心者質問所になって誰も寄り付かんでしょ

392:名称未設定
14/11/11 19:54:15.09 gHfKBy9o0.net
言い出しっぺが頑張るしかない

393:名称未設定
14/11/14 09:34:40.02 bdBo1rtm0.net
スマホでかきこみしてると痛感するけど
デリミタの最悪なところはスペルが長いのに
コード補完効かないエディタに問題があるかなと思った。
単語登録、ハンドラ作成よりスマートな
方法ないかな?

394:名称未設定
14/11/14 09:37:02.87 bdBo1rtm0.net
フリーのフレームワークに検索置換、
正規表現含めてないものかね?

395:名称未設定
14/11/14 11:51:09.09 jdF3j3OF0.net
いまどきはdo shell scriptでなんでもござれ
sedでもrubyでも好きなの使えや

396:名称未設定
14/11/14 15:00:28.68 grdt4k+m0.net
AppleScriptが"do shell script"の実行結果の
返り値をどう取得するかが問題?

397:名称未設定
14/11/14 21:20:09.76 jdF3j3OF0.net
set a to do shell script ...
じゃだめなのか? パイプ処理やリダイレクトで出力はすべて取り出せると思うが

398:名称未設定
14/11/15 12:55:03.50 Bp4U37ku0.net
あっ、これで出来るのですね! ありがとうございます。
勉強になりました。

399:名称未設定
14/11/15 20:05:03.07 yPqV/T6U0.net
今まで検索置換正規表現はdo shell script からrubyでやってたけど、
最近、delimiter使い始めた。使い始めると面白いね。いろいろ使える。
分かち書きする言語だともっと便利なんだろうなと理解した。

400:名称未設定
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を入れてあれば良いのかと思っていました。


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