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

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

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

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

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

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

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

292 :質問者 278:2014/10/26(日) 22:37:36.09 ID: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
いろいろ試しながら探しながらやってみました。。せっかく書いてくださったんですが、、
すると、下記の閉じ忘れのようなエラーが出てコンパイル失敗になったようです。

293 :質問者 278:2014/10/26(日) 22:39:28.30 ID: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ファイルを別に作って、引数付きで呼び出して使った方が良さそうです。

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

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

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

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

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

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

http://www1.axfc.net/u/3351055

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

とりあえず、お礼を。あ、そうなんですやりたいことは帰宅してまた書かせて頂きます。
(一つだけ壁にぶつかってしまいまして)
今回も沢山助けられました。ありがとうございます!

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

299 :名称未設定:2014/10/29(水) 00:07:03.41 ID:fRlD6nSB0.net
>>298
なんか面白そうだから、似たようなの作ってみた
というか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

300 :名称未設定:2014/10/30(木) 21:58:19.65 ID:DD9ePtIQ0.net
捕手

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

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