set Client to name_Client's stringValue() as string -- set the_Date to int_date's dateValue()
end workSchedulRecorder_
上のはCombo BoxとつながっておりstringValue() as stringで取得できました。 問題の箇所は調べて見つかったのに下のようなエラーがでました
2014-10-25 17:52:08.866 DPC Client Scheduler[2711:303] *** -[AppDelegate workSchedulRecorder:]: Can’t make «class ocid» id «data optr000000000D0000007491B841» into type Unicode text. (error -1700)
dateValue()ではなく違う言葉なのでしょうか・・・ どなたかお力になってくださいませんでしょうか 0279名称未設定2014/10/25(土) 18:45:32.40ID:Y7ywkFMP0>>278 set the_Date to int_date's dateValue() これでそのエラーになる?出ないけどなあ set the_Date to int_date's dateValue() as string だと、文字列に変換できないオブジェクト(この場合NSDate)を文字列に変換しようとすると(全く)同じエラーが出るけど
そこで、もう一つ質問したいのですが、 このthe_Dateから得たdate_Value()を アップルスクリプトのdateの型?っていうのでしょうか date "2014年10月25日土曜日 0:00:00" にするのにはどうすればいいのでしょうか? 0281名称未設定2014/10/25(土) 19:25:35.38ID:Y7ywkFMP0>>279,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)
>>280 わからんw 文字列にしたら date にできるんじゃないかな。AppleScriptもdate<->文字列はめんどくさいっぽいなあ 0282名称未設定2014/10/25(土) 19:27:59.17ID:pbKxf6+40 暇つぶしにデータピッカからテキストにして、テキストから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_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 0283名称未設定2014/10/25(土) 19:30:07.23ID:pbKxf6+40>>282 あNSDateじゃなくてASDate 0284名称未設定2014/10/25(土) 20:10:23.39ID:pbKxf6+40 ハンドラの呼び出し名適当なやつのまんまだわ適宜直してちょ 0285質問者 2782014/10/25(土) 20:18:04.97ID:N9eHGFRP0 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は作っていただいた書式にははまらないということでしょうか もう少しねばってみたいと思います。ご返答ありがとうございました! 0286名称未設定2014/10/25(土) 20:26:21.21ID:pbKxf6+40>>285 落ち着きなさいtheDateが無いんだ 君はthe_Dateにしてるみたいだよ。 0287質問者 2782014/10/25(土) 20:55:41.66ID:N9eHGFRP0 285さんありがとうございます!! もう、学も無いのに英語サイトまわってくたくたになっていました。笑 出ました出ました! 本当に助かりました。ありがとうございます! dateformatについての基礎知識は明日にでも探してみたいと思います。 これで、やりたいことが出来そうです。
単純なところでつまずいてしまっております。 スクリプトエディタでなんとなく進んで来れたので罰が当たったみたいで どうか、よろしくお願いします。 0290名称未設定2014/10/26(日) 18:12:44.58ID:BJ1Mvzrv0 わからん。qlmanageを一覧表示で表示するにはどうすればいいの? 0291名称未設定2014/10/26(日) 20:02:33.54ID:THGeGbUA0>>289 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ベースで考えた方がいいような どうしてもdateオブジェクト使いたい場合でも、で文字列からdateオブジェクトへは、文字列からCocoaオブジェクトにしてからdateオブジェクトへかなあ 0292名称未設定2014/10/26(日) 21:13:11.35ID:juj/Re6i0>>289 >>282のmakeDateハンドラ使ってみれば。 0293質問者 2782014/10/26(日) 22:37:36.09ID:UmsXIIQV0 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 いろいろ試しながら探しながらやってみました。。せっかく書いてくださったんですが、、 すると、下記の閉じ忘れのようなエラーが出てコンパイル失敗になったようです。 0294質問者 2782014/10/26(日) 22:39:28.30ID:UmsXIIQV0 Client Scheduler/AppDelegate.applescript:33: error: Expected “end” but found unknown token. (-2741) Command /usr/bin/osacompile failed with exit code 1
先ほどwebでみつけたのですが、出だしの私はASファイルを別に作って、引数付きで呼び出して使った方が良さそうです。 0295質問者 2782014/10/26(日) 22:40:19.50ID:UmsXIIQV0 291さん ありがとうございます。logで調べながらする方法すばらしいですね。 log class of date dateString 私のひっかかった date "変数" の箇所 log date dateString ですると複数のパラメーターがどうのでエラーになりました appdelegateはすごく私には早すぎた感がありました。皆さんこんなに助言いただいたのに うまくいかず申し訳ありません。
スクリプト中には同一時刻の場合サブナンバーを付けるようになってますが、これが出来ず、同じ 名前の項目があるため処理できない、とのメッセージが出てしまいます。下記がサブナンバーの 記述ですがどうすればサブナンバーがつくようになりますか? 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 制御では、お世話になっている。