AppleScript アップルスクリプト 質問、発表 6
レス数が900を超えています。1000を超えると表示できなくなるよ。
ここまでおんぶにだっこで「されてしまいます!」じゃねえよ… どう見ても丸投げなんだから自分でどうこうできるわけがない >>801
まずは拡張子を外してから痴漢、最後に拡張子を戻してテキストにペーストしてたんですね!
この部分を削除して希望の通りのフォーマットでコピペされました!
神様有難うございます!! 文字列をパースしてdateオブジェクトに変換したいのだけど、システム設定に非依存でやる方法を教えてください。
set theDateString to 文字列をパースしてdateオブジェクトに変換したいのだけど、システム設定に非依存でやる方法を教えてください
set theDateString to "2016/9/6"
set theDate to date theDateString
の時、システム設定が和暦になってると theDateは "平成2016"になってしまいます
かといって、set theDateString to "H28/9/6"とすると、システム設定が西暦の場合エラーになります
システム設定のフォーマットに依存せず、テキストから正しく日付オブジェクトに変換する方法が思いつきません。 よろしくお願いします。 和暦と西暦の変換処理を自分で書いちゃうのはダメなの?
まず、dateオブジェクト内は西暦で統一しておく
dateオブジェクトに入れる前の文字列に
昭和とか平成、Hの文字が入っていないかチェックする処理
→入っていなくて年の部分が4文字なら西暦と見なしてdateオブジェクト化
→入っていた時は和暦→西暦変換の処理をしたあとdateオブジェクト化
で、dateオブジェクトから日時を取り出して使う際に、
西暦のまま取り出すか、和暦に変換して取り出すか、
フラグでも立てて分岐する処理を書いておく
江戸時代とか、それより前の日付も対象になるなら、
その分チェック対象のリスト(配列)も用意しないとダメで
面倒そうだけども… ちなみに自分の場合、
set theDate to current date
set (year of theDate) to 1999
こんな感じで、current date でdateオブジェクトをまず作っちゃって、
そのあと必要に応じて年月日を変更する形でやってて、
西暦しか使えないと思ってました…
>>809みたいな書き方すると、"2016/9/6" を直接
dateオブジェクト化したりできたんですね… >>809
かんたんかんたん
set theCommand to "date +%Y/%m/%d"
set theDateString to do shell script theCommand
set theDate to date theDateString あ、上のは検証してないんで一応補足しておくけど、もし年/月/日の並びがだめぽな
環境があるなら>>811のような定番の方法を使ってそれぞれ別個に定義してやればよい
e.g.
set theDate to current date
set theYearString to do shell script "date +%Y"
set (year of theDate) to theYearString
... OS10.9以上なら、Rubyのdateオブジェクトで西暦和暦変換ができるみたいです
ただ、和暦はドット区切り、西暦はスラッシュ区切り固定のようなので、
入力する日付を自分でその形式に変換しておく必要あり
(AppleScript's text item delimiters とif文を組み合わせればできる)
というか、本題からズレてたらすいません…
--和暦→西暦変換(ドット区切り・H(平成)・S(昭和)・T(大正)・M(明治)対応)
set theDateStringJp to "S10.9.6"
set theRubyScript to "require 'date';puts Date.parse(\"" & theDateStringJp & "\").strftime(\"%Y/%m/%d\")"
set theDateString to do shell script "ruby -Ku -e " & quoted form of theRubyScript
--西暦→和暦変換(スラッシュ区切り・H(平成)・S(昭和)・T(大正)・M(明治)対応)
set theDateString to "1935/09/06"
set theRubyScript to "require 'date';puts Date.parse(\"" & theDateString & "\").jisx0301"
set theDateStringJp to do shell script "ruby -Ku -e " & quoted form of theRubyScript >>809
set theDateString to "2016/9/6"
set theDate to date theDateString
set yearString to characters 1 thru 4 of theDateString as text
set (year of theDate) to yearString
log theDate
やっつけ仕事っぽいけど、
システムの設定が和暦だろうが西暦だろうが、
theDateStringの最初の4文字を切り出して
dateオブジェクト「theDate」のyearに代入しちゃえば、
西暦2016年(和暦表記だと平成28年)に上書きできますた 平成やHの文字が出てくると決めつけてるとすぐ使えなくなる可能性が… >>809
結局最終的に何が得たいの? 日付を西暦にした文字列? 日付同士の計算がしたい?
どちらにせよ一旦和暦を西暦に変換しないとできないっぽいので、
正規表現の使えないASのみではちょいと面倒だと思う。
ちなみに10.6.8だと>>809のは和暦にすると動かないんだが。 入力時点で表記を統一させるか、例外な表記は統一する関数でも書けよ image eventsで適当な画像をpictで保存したいのですがerror 1708がでてうまくいきません.
どのようにしたらいいでしょうか??
set afile to choose file
set adesk to (path to desktop) as text
tell application "Image Events"
launch
set the_image to open afile
try
save the_image as PICT in (file (adesk & "a.pict"))
end try
close the_image
end tell pictは扱えなさそうな感じ
代わりにsipsコマンドでやると Error: Unsupported output format com.apple.pict 標準のコマンドがダメなら brew install imagemagick して
convert コマンドを使う手もある
ImageMagick は PICT 形式に対応してるよ
ちなみに今時 PICT って何に使うんだい 過去スレでiTunesのアートワークとして画像を差し込む方法が載っていたのでその通りにやってみました.
そこでは一度,画像データをpictに変換し,data of artwork に入れていました. お騒がせしましたiTunes10.2から仕様が変わっていたのですね,,,
tell application "iTunes" to set data of artwork 1 of theTrack to (read (file targetImageFile) as picture)
これでできそうですね. そういうのは最初からやりたいことを全部言ったほうがいい
質問がズレてると回答もズレちまってお互い時間の無駄だ automatorで、上のメニューバーにはあるけどショートカットコマンドが与えられてない項目のショートカットを作りたいのですが、
自動記録したものを走らせてもエラーが出て動きません。
どのようなApple script を書けばいいか教えてください。
(例えばChromeの「ズーム」をショートカットにしたい場合) on run {input, parameters}
-- ズーム
set timeoutSeconds to 2.0
set uiScript to "click menu item 3 of menu 1 of menu bar item 9 of menu bar 1 of application process \"Chrome\""
my doWithTimeout(uiScript, timeoutSeconds)
return input
end run
on doWithTimeout(uiScript, timeoutSeconds)
set endDate to (current date) + timeoutSeconds
repeat
try
run script "tell application \"System Events\"
" & uiScript & "
end tell"
exit repeat
on error errorMessage
if ((current date) > endDate) then
error "Can not " & uiScript
end if
end try
end repeat
end doWithTimeout
記録したものはこんな感じです。 >>828で済むならいいけど書く場合
tell application id "com.apple.systemevents"
tell application "Google Chrome" to activate --これは呼び出し方によっては不要
tell process "Google Chrome"'s first menu bar's menu bar item "ウインドウ"'s menu "ウインドウ"'s menu item "ズーム" to click
end tell AppleScript他自動化ツールはこの先どうなる
https://www.macintouch.com/forums/showthread.php?tid=1189
Apple dumps Sal Soghoian, who gave us Mac automation tools いつの間にかiTunesでdisplay dialogとdisplay alertのcancel buttonが効かなくなってる >>830
やべぇよやべぇよ……
ほんこれ >Another nail in the coffin of macOS being a tool for professionals. Rhapsody発表時にAppleScriptも廃止する予定とジョブズが言ったとたん
じゃぁもうMac使ってる意味ねーよ安いAT機買うからとプロ業界から総スカンをくらい
なんと思い直したというMac自動化の歴史も、彼なき後、遂に終焉を迎えるわけですな 相談です。
最近、iTunes用の以下のスクリプトで動画ファイルの種類を変更しようとするとパラメーターのエラーです、というエラーが出てしまいます。
なぜか、TV showへの変更はうまくいき、movieやmusic videoへの変更が失敗します。
tell application "iTunes"
--return (item 1 of selection)
set video kind of (item 1 of selection) to movie
end tell home video/movie/music video/TV show
どれに変えてもエラーにならなかった バージョンは? コンパイルしなおしたか? できるファイルもあるのか? 何かの tell ブロックに入れ子になってたりして用語衝突してないか? Mac OS X 10.9.5
AppleScript 2.3.2
iTunes 12.4.3.1
でした。
いくつかのファイルを試しましたが、やはりTV showへの変更しかできませんでした。
他はエラーが返ります。
「iTunesでエラーが起きました:パラメーターのエラーです」
入れ子ではなく、スクリプトエディタでそのまま実行してもエラーになります。 気になる話があった
http://dougscripts.com/410
Set Video Kind of Selected v5.2
WARNING: a possible bug in iTunes 12.4.1 and later prevents this script from working. Until Apple confirms and/or addresses this issue, I do not recommend using this script. 原因不明で回避方法もないということでしょうか。
残念。 os 10.11です
デフォルトプリンタとデフォルトの用紙の設定をアップルスクリプトから制御したいのですが、プリンター設定ユーティリティがなくなってしまい、以前使っていたスクリプトが動かなくなりました
System Eventsからorg.cups.PrintingPrefs.plistを直接いじればいけるかなと思ったのですが、エラーになって設定できません
何かいい方法はありませんでしょうか shell script でデフォルトのプリンターの変更ができるものを検索して見つけました
ですがデフォルト用紙は見つけられませんでした… defaults write org.cups.PrintingPrefs DefaultPaperID "iso-a4"
とかで行けるっぽいよ
参 http://themacadmin.com/mavericks-updatesetting-a-default-paper-size/
10.12でも行けた >>849
大変有益な情報ありがとうございました
シェルスクリプトは不慣れで検索の仕方もわからないレベルだったので助かりました 最近気付いたこと。
InDesignの変形でのabsoluteは実態はrelativeだったこと。
真っ青になってこっそり書き換え中。 質問です
コトノコという辞書アプリで「単語」という言葉を調べたいとき、
tell application "kotonoko"
activate
set searchword to "単語"
end tell
ではうまくいかないです
set searchword to ""
じゃなくて、なにか別なのあるのでしょうか?
わかるかたいたら教えてください >>855
そもそもどうしてその文でいけると思ったのかわからない
俺の知ってるコトノコ.appはスクリプト対応してない気がするが
きっと俺の知らないバージョンか同名アプリなんだろうな〜 頭悪すぎるよなw
俺も知らないバージョンか同名アプリなんだろうw GUI scriptingくらいヒントとして教えてやれよ。 ふと思い出したけどQuickeysってどうなってる? AppleScriptをJavascriptに変換するソフトはありますか?
100%変換しなくても80%程度変換してもらえれば
後の手作業が楽になるので。 助言を下さい。
10.11まで動かせていたgui script applicationを、10.12に対応させられず苦労しています。
developerIDは持ってないので、自分環境専用です。調べた範囲ではこれ以上は見つかりませんでした。
これまで試したこと
1.
xattr -cr guiスクリプト名.app
2.
chmod a-w guiスクリプト名.app/Contents/Resources/Scripts/main.scpt
3.
codesign -s - -i com.apple.ScriptEditor.id.guiスクリプト名 -f guiスクリプト名.app
4.
セキュリティとプライバシー/プライバシー/アクセシビリティにて、guiスクリプト名.appを追加
これで、実行すると
System Eventsでエラーが起きました:guiスクリプト名には補助アクセスは許可されません。(-1719)
となります。 1.〜3.って必要なの?
アプリで保存して4.だけでいけるけど
実行専用で保存しても4.だけ >>865
*まず、これまでとは異なるアプリケーションと認識されるように新規書類作成⇒ソースコピペで別名の.appを作成します
*次に1〜4の操作は*せずに*.appを起動します。「許可されません」ダイアログが出るでしょう
*その結果シス環アクセシビリティのリストにチェックが外れた状態で新しい.appが載ったはず
*そのチェックを入れてシス環を閉じ、もう一度.appを起動
これでどうかな? >866-867
動きました。ありがとうございました。
以前のOSXの時にこの手のcodesign関連手順を踏まないと動かないと記憶していたんですが、自分で使う分にはいらなかったんですね。
大体OSアップグレードのたびにこの手の試行錯誤してたのがバカみたい... どうやってみんなはAppleScript覚えたの? テキストエディタのマクロを改造することから始めて、
ファイルドロップでファイル名を変える、とかの
Finder操作系に徐々に手を広げていった感じ
もうネットがある時代だったから、
文法とかはググって覚えた
最近は、AppleScriptの処理の遅さや
機能の貧弱さが気になりだして、
ダイアログなんかのインターフェースだけ
AppleScriptで作って、中身はだいたいRubyに投げるように
なってきちゃった ネットのない時代は大変だった。
AppleScript道入門という本にAppleScript日本語版がバンドルされていて、それを自分で組み込んで使って勉強した。
インターネットはまだ日本に上陸していなかった。
ひたすらトライアンドエラーだった。 TAO of AppleScript、原書で買ったなあ
ミニミニリファレンスは開きすぎて分解しちゃった 月刊MAC POWERだったかな。AppleScript講座の連載やってたな。 すげーーなおっさん達
マジそうゆうとこ見習わないと
楽に取得する方法なんてなかった…1から勉強します 俺はまだおっさんじゃないけど
>>1に挙がってる日本語サイトだけでもそこそこ組めるようになるよ
基本がわかったら後はやりたいことをどうやって実現するか
目的ごとに地道に調べるだけでしょ。その過程で英語情報の使い方も自ずとわかってくる >>874
AppleScriptって、頑張って勉強して覚えるタイプの
言語じゃない気がする
「毎回やってるこの処理、自動化できたら楽なのに!」
って状況があって、その処理がAppleScriptでできないかググる
→それっぽいサンプルが見つかる
大抵、サンプルは自分のやりたいこととちょっと違うので、
いくつかのサンプルの使えそうな部分を組み合わせて動くまで頑張る
「できたっ! なにこれ、超便利! じゃあ、あの処理も自動化できるかも!」
って、なにもわざわざAppleScriptでやらなくても…という細かい処理まで
スクリプトを組んでやるようになる
→気がつくと基本的な文法を覚えてて、簡単な処理なら自分で書けるように
自分はこんな感じだった
うまく動かなくて試行錯誤してる間はそれなりにつらいけれども、
やりたいことができた時の喜びで吹っ飛ぶので、苦労した記憶は残らない そうだよね。有名言語は言語を知ってること自体に価値があるけどASはそうじゃない
もっと身近で、対症療法的に使いながら覚えていくものだよね むかしは、AppleScript対応アプリケーションが多かったからマウス操作の自動記録でスラスラとScriptが自動生成されてたから、それでファインダ操作やアプリケーション内の操作のサンプルが取れて
スクリプトの最適化とか改造で覚えやすかったんだけどね
Excel立ち上げて、セル操作して数式入力
それらをAppleScriptでやれたから楽だった
それが今では自動記録がうまく動いてくれない
Autometerも中身はAppleScriptみたいなものなんでしょ? 今も自動記録は使える気がするが、具体的に何ができなくなってる? >>879
むむむ
ファイダー操作がちゃんと記録されてる・・
QuickTimeは未対応なのか 初めまして。クリップボードを拡張するソフトを作りたいと考えました。
今の所これでキーを打てるのはわかりました。
tell application "System Events"
keystroke down command
keystroke up command
end tell
が、押されている装飾キーを取得するにはどうすればいいのでしょうか?
お助けください。 >押されている修飾キーを取得
https://discussionsjapan.apple.com/thread/10151030
修飾キーを押した状態で何か入力したいのなら
keystroke “c” using command down
でコピーとか
keystroke “ac” using command down
で全てを選択してコピーとか
keystroke じゃなくて key codeってのも使える。
key code(8) using command down
key codeは文字以外のキーも使える。
コード番号はmac key codeとかでググれば出てくるよ。
修飾キーが複数組み合わさる場合は
using {command down, shift down}
のようにすればOK
(keystrokeは大文字で書いてshiftキー押した状態の入力にすることも可能)
詳しくありがとうございます!
ですが教えてもらったurlのrubyが動かずで・・
具体的にはcapsロックがオンのとき、
数字キーでペースト、command+数字キーでコピーするソフトを考えていたのですがAppleScriptで作るのは難しいでしょうか・・?
親切に漬け込んでいてすみません サンプルのコードとかでhogeってのを見るけど何故にhoge使うの?⚪︎とか△ではあかんの?
アホな質問でごめん 色々初めてっぽそうなのにそんなあっさり出来たら苦労しないよ
じっくり漬け込まないと、時間かけて >>885
ものごとをホゲホゲと表現するのがカッコいいと思ったダセークソオタクが始めやがって
無反省にそれを受け入れ、さらに広めたバカなクソオタクどもがうじゃうじゃ居たからなんだぜ
初めて見るやつにとっては、ホゲとかフーバーとか意味不明だしバカジャネーノ?の一言だよな
ひねりもなにもないけど、変数123とか定数ABCとか名付ければ、第三者にも分かりやすいのにな
あんさんの言うとおり、マルでもサンカクでも良いんだぜ!
今もそうなのかはわからんけど、昔のアンク氏のHTML辞典などではそういう表現をしていて、私としては好感が持てたな へぇーそういう歴史があったのか
hogeってなにかの頭文字かと思ってたけど
1人が言い始めたのが流行っただけだったんやww >>884
待機していて任意のキーで発動するのはApplescriptでは難しいな。 appkitで装飾キーは取れたけど数字キーが取れない・・
>>888
こうゆうのは何で書かれているんですか? >>887 そんなのが前提なく出てくる本とかあるもんな。 俺もhogeやfoobar嫌い
無駄に業界用語とかビジネス用語多用する人と同じ方向性を感じる 業界用語なんて大げさな
それ使っておけばいいというのが楽だから皆使ってるんじゃないの >>896
あー、私もホニャララ大嫌い
世界一受けたい授業というテレビ番組を観ていると、ホニャララが多すぎてげんなりする
不明確、不特定なものごとをどのように表現すべきかは悩ましいところだよな
「なにがし」以外にも分かりやすい言葉があれば良いな ほにゃららって、〜を読んでいるだけだよね。
目くじら立てるほどのことかなあ?
AppleScriptでは使わないけどね。
hogeとかは予約語とかぶる心配がないから都合が良いんだろう。
文字数が多いので多用すると面倒そう。 >>898
まぁ言われてみれば、そこまで嫌うほどのものでなもなかったね
ごめんね(*´・ω・)(・ω・`*)
私としてはhogeよりもpiyoのほうが可愛くて好きだけど、右手の小指と中指を伸ばして入力するのがめんどくさいのが難点かな レス数が900を超えています。1000を超えると表示できなくなるよ。