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/
0748名称未設定
垢版 |
2016/06/10(金) 09:43:34.69ID:zdYeUK5r0
最初はとっつきにくいだろうけど、
ASで文字列処理するならrubyなりperlなり使った方が圧倒的にラクだよ。

set rubySc to "
#encoding: utf-8
$KCODE='u'
str=ARGV[0]
puts str.gsub(/[\\r\\n]/, \"\")
"
set c to the clipboard
set c to quoted form of c
set rubySc to quoted form of rubySc
set myresult to do shell script "ruby -Ku -e " & rubySc & " " & c

エラーが出る場合(ruby1.9以降)は$KCODE='u'の頭に#つけて。(コメントアウト)
0749名称未設定
垢版 |
2016/06/10(金) 10:39:21.65ID:+RUCD7ZN0
>>748
クリップボードに加工したいデータがあるのなら、pbpaste コマンドで ruby スクリプトの標準入力にデータを渡すべき。引数にはデータ容量の制限があるので、大きなデータの場合はエラーになる。
程度問題だけど、プロセス起動のオーバーヘッドは馬鹿にならないので、ほとんどの場合(とくに処理するデータが少ない場合)は外部コマンドを起動するよりAppleScript で閉じたほうが速い。
0751名称未設定
垢版 |
2016/06/10(金) 11:09:32.87ID:XlL7naR70
>>749
pbpasteなんて知らんかった。ありがとうございます。

>>750
js使える環境ならそれでもいーですね。

一応pbpaste使った場合。>>

set rubySc to "
#encoding: utf-8
$KCODE='u'
str=`pbpaste`
puts str.gsub(/[\\r\\n]/, \"\")
"
set rubySc to quoted form of rubySc
set myresult to do shell script "ruby -Ku -e " & rubySc
0752名称未設定
垢版 |
2016/06/12(日) 19:21:52.55ID:VfsjxDNU0
>>747
あざっす!!!
改行はreturnなんですね。ひょっとして…とおもったら
タブはtabでした!おかげさまで色々はかどりそうです!
0753名称未設定
垢版 |
2016/06/16(木) 22:26:54.48ID:oXUR4BNt0
予約語を変数名にしたら悲惨な事になるで
0754名称未設定
垢版 |
2016/06/19(日) 12:15:13.80ID:I4OKLVqd0
(alfredとかでホットキーを登録して、)
日時をテキストで挿入できるようにしたいのですが、

set the clipboard to (do shell script "date '+%Y-%m-%d %H:%M:%S'")

ここからどうすればいいでしょう?
これをやって、
さらにコマンドV、と2段階押さないといけない。
それを一回で済ませたい
なにかいい方法があれば教えてください。
(テキストを扱うどのアプリでもできるようにしたいです)
0755名称未設定
垢版 |
2016/06/19(日) 13:10:18.50ID:pah9kP3e0
AlfredでペーストするとこまでWorkflow組めるんじゃないの
続きは↓で
【コマンドラインランチャー】Alfredに惚れ込むスレ
http://potato.2ch.net/test/read.cgi/mac/1423312726/

AppleScriptでやるなら
tell application "System Events"
keystroke "v" using command down
end
とかでいけるけど
0756名称未設定
垢版 |
2016/06/19(日) 14:20:31.68ID:I4OKLVqd0
>>755
それでできるんですが
ホットキー自体がコマンドとかシフトとかと組みあわせないといけないので、
おしたら、さっと指を離すようにしないと「ペースト(コマンド+v)」にならないですね・・・

とりあえずありがとうございます
スレ違いすみませんでした
0757名称未設定
垢版 |
2016/06/26(日) 15:07:27.61ID:150GcjU60
Macの起動項目で、アプリケーション形式にしたscriptを立ち上げているのですが

他の起動項目の一般アプリケーションより、そのスクリプトを前面に出したくて悩んだ結果、ソースの先頭に

tell application "そのスクリプト"
activate
end tell

で、前面にさせてるのですが

これだとスクリプト編集プログラムでデバッグしてるときと、アプリケーション形式に書き出したときとで
"スクリプト編集プログラム"を"そのスクリプト"に書き直さなければいけません

自分自身のことを指すmeみたいな名前で一本化できれば良いと思って探してるのですが
何か良案がありましたら、教えてください
0758名称未設定
垢版 |
2016/06/26(日) 15:08:34.88ID:150GcjU60
757の環境は10.9Mavericksです
0759名称未設定
垢版 |
2016/06/26(日) 15:24:21.85ID:icb4+j3C0
tell me
if not frontmost then
-- ここに757の3行入れる
end if
end tell

とか?
0760名称未設定
垢版 |
2016/06/26(日) 16:17:59.11ID:MDzRPSme0
tell me to activate じゃあかんのか
0761名称未設定
垢版 |
2016/06/27(月) 00:15:21.98ID:bxICCxF00
アプリケーション形式ならactivateだけでも手前になるよ。

あと、スクリプト編集プログラムのツールバーに「アプリケーションを実行」ボタンが増えてる。
ただMavericksは無かったかも。
0762757
垢版 |
2016/06/27(月) 22:15:44.94ID:/fW9xSmu0
>>759-761
レスありがとうございます。meで行けるんですね
0763名称未設定
垢版 |
2016/07/28(木) 08:35:37.06ID:pp5916vT0
ネットワークのフォルダのファイルを指定して開くようにしているけど、
別々の環境(自宅と職場)で50個のファイルがあるフォルダと、1000個の
ファイルがあるフォルダで表示にかかる時間がまったく違う。

これはファイルを探す時間がかかるって事?
0764名称未設定
垢版 |
2016/07/28(木) 10:28:44.62ID:CZMUn6I+0
状況が曖昧。条件がごっちゃになってる。
単に50個と1000個の時間差の話なら、自宅と職場はどういう関係があるの?
職場では50個も1000個も差がなくて、自宅では50個と1000個に差があるって話?
どういう事にせよ、フルパス指定なら時間差なんてないような気がするが。
0765名称未設定
垢版 |
2016/07/28(木) 12:54:51.82ID:pp5916vT0
すまん どちらも環境的にはレガシーなんだけど。

職場では導入間もないので50個、画像サーバ C2D Win7 画像フォルダはシステムと同じボリューム
クライアント MDD OSX10.4
自宅では1000個 画像サーバ CD VIsta 画像フォルダはシステムと別パーテーション
クライアント C2D OSX10.6

職場では瞬時に表示されるが、自宅では6秒以上かかる。
時間ができたら職場に1000個のUSBでも挿してテストしてみる。
0766名称未設定
垢版 |
2016/07/28(木) 13:13:33.21ID:CZMUn6I+0
それだけ色々違う状況じゃ全く比較にならんと思うが。
ボードやHDDの速度も違えばネットワーク速度、OSの処理速度どれもちがうだろ。
とりあえず自宅で50個のフォルダを試した方が早いんじゃないか?
それで遅けりゃファイル数の問題じゃないって事だろ。
0767名称未設定
垢版 |
2016/07/28(木) 23:29:55.74ID:spKpeHA60
1000個を捨てて、50個100個150個としてみた。
快速に表示された。
異常のあるファイルが混在していたのかもしれない。
検査するユーティリティでも探してみる。
スマソ。
0768名称未設定
垢版 |
2016/08/15(月) 15:55:08.48ID:Z+tLenng0
超自己満スクリプト
do shell script "..." with administrator privileges でパスワード入れるのが面倒になってきた、
といってスクリプトにもろ書きして目に触れるのもなんか嫌だ

・キーチェーンアクセスでパスワード項目を作成
 アカウント/パスワード: applescript/パスワード
 アクセス制御: securityコマンドに常に許可(コマンド実行時の初回のダイアログででも)
・スクリプト
set |password| to do shell script "security find-generic-password -a applescript -w"
do shell script "killall -HUP mDNSResponder" password |password| with administrator privileges
0769名称未設定
垢版 |
2016/08/15(月) 19:56:52.87ID:NvXN/2Mn0
>>768
これはおもしろい。毎回思考停止してパス入れてたからその発想がなかった
たいへん参考になりました
0770名称未設定
垢版 |
2016/08/22(月) 05:48:20.56ID:Tz21TGij0
スクリプトエディタのフォーマット設定が時々デフォルトに戻っちゃんだけど、この設定ってどこに保存してあるんでしょうね?
手作業で戻すのは面倒なのでファイル差し替えで戻せると良いんだけど
0771名称未設定
垢版 |
2016/08/22(月) 06:01:31.95ID:Tz21TGij0
自己解決
$HOME/Library/Preferences/com.apple.applescript.plist
のようでした
0772名称未設定
垢版 |
2016/08/23(火) 09:37:34.26ID:xJQwUjZc0
tell application "Image Events"
set theImage to open theDropItem as alias
tell theImage
set theDimensionsList to dimensions
end tell
close theImage
end tell

set imageHeight to item 2 of theDimensionsList
set imageWidth to item 1 of theDimensionsList
set padImageHeight to imageHeight + 50
set padImageWidth to imageWidth + 50
set scriptCommand to "sips " & (quoted form of theDropItemPOSIXPath) & " -s formatOptions 100% -p " & padImageHeight & " " & padImageWidth & " --padColor 555555 "
ここからさらに#999余白6pxを付加する記述を教えてください。
現在50px付加jpgをさらに6px付加スクリプトに投げてます。
0773名称未設定
垢版 |
2016/08/23(火) 11:09:57.92ID:0A/9/lIK0
間違ってるかもしれないが、2回処理(一旦保存)しないと無理なんじゃないかな?
連続して実行しても2番目の処理しか行われないっぽい。

あと、質問するときはそのままで動く物を載せた方がいい。
0774名称未設定
垢版 |
2016/08/23(火) 12:46:18.96ID:6f9IVph50
on open dropObjects
tell application "Image Events" to launch

repeat with theDropItem in dropObjects
set theDropItemPOSIXPath to POSIX path of theDropItem

tell application "Finder"
set theDropItemName to name of theDropItem
end tell

tell application "Image Events"
set theImage to open theDropItem as alias
tell theImage
set theDimensionsList to dimensions
end tell
close theImage
end tell
0775名称未設定
垢版 |
2016/08/23(火) 12:49:20.77ID:6f9IVph50
774の続き。
set imageHeight to item 2 of theDimensionsList
set imageWidth to item 1 of theDimensionsList

set padImageHeight to imageHeight + 50
set padImageWidth to imageWidth + 50

set scriptCommand to "sips " & (quoted form of theDropItemPOSIXPath)
& " -s formatOptions 100% -p " & padImageHeight & " " & padImageWidth
& " --padColor 555555 " & " --out " & "~/Desktop/" & (quoted form of ("pad" & theDropItemName))

do shell script scriptCommand
end repeat

end open
ここからさらに#999余白6pxを付加する記述を教えてください。
現在50px付加jpgをさらに6px付加スクリプトに投げてます。
0776774
垢版 |
2016/08/23(火) 12:53:52.23ID:6f9IVph50
もし二つのスクリプトが必要な場合、一つ目のスクリプトの最後に「保存後6px.app」に投げるを書き、
6px.appの処理の最後に「JPEGで上書き保存」を各方法を教えて頂けないでしょうか。
それも不可な場合、一つ目のスクリプトはこのままで、2つめのスクリプトの最後に「上書き保存」の記述を教えてください。。
0777名称未設定
垢版 |
2016/08/23(火) 13:03:51.80ID:0A/9/lIK0
丸投げのつもりなら >>1参照
多少なりとも理解しているなら、2回繰り返すだけ。
0778774
垢版 |
2016/08/23(火) 13:10:30.12ID:6f9IVph50
一回目のend repeatの直後に
tell application "Image Events" to launch..と続けてみましたが二回目の色指定余白しか付加できません。
なにが間違ってるんでしょうか。。
0779774
垢版 |
2016/08/23(火) 13:10:30.46ID:6f9IVph50
一回目のend repeatの直後に
tell application "Image Events" to launch..と続けてみましたが二回目の色指定余白しか付加できません。
なにが間違ってるんでしょうか。。
0780名称未設定
垢版 |
2016/08/23(火) 13:26:32.34ID:rviZjxD00
所望のオプション付けた sips を一つ追加、実行すればいいんじゃないの?
0781名称未設定
垢版 |
2016/08/23(火) 13:37:02.69ID:0A/9/lIK0
>>779
元の画像に対して違う処理をしているだけだから。
一旦保存した画像に対してもう一度処理しないと。
0782774
垢版 |
2016/08/23(火) 14:43:56.00ID:6f9IVph50
1度目の処理でデスクトップに保存すると2度目の処理が最初のドロップアイテムに対して行ってしまったため
一度目は上書き保存、二度目でデスクトップに書き出しをしました。
出来れば一度目と二度目の後にデスクトップに書き出しできるドロップファイルをいじらずに済んで嬉しいんですが・・
set scriptCommand to "sips " & (quoted form of theDropItemPOSIXPath) & " -s formatOptions 100% -p " & padImageHeight & " " & padImageWidth & " --padColor FFFFFF "
do shell script scriptCommand

tell application "Image Events"←二度目処理・・
0783名称未設定
垢版 |
2016/08/23(火) 16:13:23.56ID:w5kLaLoU0
色は判りづらいので変えてる。
ちなみにquoted formは要らんよ。
set padImageHeight to padImageHeight + 6
set padImageWidth to padImageWidth + 6
do shell script "sips " & "~/Desktop/pad" & theDropItemName & " -p " & padImageHeight & " " & padImageWidth & " --padColor FF0000"
0784774
垢版 |
2016/08/23(火) 16:38:58.45ID:6f9IVph50
>>783
ありがとうございます!30余白が従来通りデスクトップ保存、二度目に教えたいただいた物を貼り付けましたが上手く動かず。。
「デスクトップに"padファイル名.jpg"がない」?とか言われます。。
0785名称未設定
垢版 |
2016/08/23(火) 17:16:48.56ID:w5kLaLoU0
>>784
そりゃ入れる場所間違ってるんじゃない?
やってること理解すればどこでエラーが起きてるのかわかる。
0786774
垢版 |
2016/08/23(火) 17:28:39.87ID:6f9IVph50
以下にて原画→枠線1追加→枠線2追加→上書き保存で妥協しました。
できれば原画→枠線1追加→枠線2追加→同名でデスクトップに新規保存、がしたかった。。
on open dropObjects
tell application "Image Events" to launch

repeat with theDropItem in dropObjects
set theDropItemPOSIXPath to POSIX path of theDropItem

tell application "Finder"
set theDropItemName to name of theDropItem
end tell

tell application "Image Events"
set theImage to open theDropItem as alias
tell theImage
set theDimensionsList to dimensions
end tell
close theImage
end tell

set imageHeight to item 2 of theDimensionsList
set imageWidth to item 1 of theDimensionsList

set padImageHeight to imageHeight + 50
set padImageWidth to imageWidth + 50
0787名称未設定
垢版 |
2016/08/23(火) 17:29:22.88ID:6f9IVph50
続き・・
set scriptCommand to "sips " & (quoted form of theDropItemPOSIXPath)
& " -s formatOptions 100% -p " & padImageHeight & " " & padImageWidth & " --padColor
55555 "
do shell script scriptCommand

tell application "Image Events"
set theImage to open theDropItem as alias
tell theImage
set theDimensionsList to dimensions
end tell
close theImage
end tell

set imageHeight to item 2 of theDimensionsList
set imageWidth to item 1 of theDimensionsList

set padImageHeight to imageHeight + 5
set padImageWidth to imageWidth + 5

set scriptCommand to "sips " & (quoted form of theDropItemPOSIXPath)
& " -s formatOptions 100% -p " & padImageHeight & " " & padImageWidth & " --padColor
888888 "
do shell script scriptCommand

end repeat
end open
0788名称未設定
垢版 |
2016/08/23(火) 17:44:26.75ID:w5kLaLoU0
自分でアップしたものを、ちょこちょこ変更するから動かなくなる。
俺の書いた部分と自分の書いた部分の差異もわからないなら変に触らないほうがいいよ。
0789名称未設定
垢版 |
2016/08/23(火) 17:47:21.30ID:NoSsmXKJ0
高さと幅に奇数を加えるのがモニョモニョする
0790名称未設定
垢版 |
2016/08/23(火) 23:44:36.69ID:iI3N2afK0
全部 Image Events でやっちゃダメ?

on open drop_objects
repeat with drop_object in drop_objects
set drop_object to drop_object as string
tell application "Image Events"
repeat with item_modify_data in {{pad_margin:50, pad_color:{85 * 257, 85 * 257, 85 * 257}}, {pad_margin:6, pad_color:{153 * 257, 153 * 257, 153 * 257}}}
set this_image to open file drop_object
set the_dimensions to dimensions of this_image
pad this_image to dimensions {(item 1 of the_dimensions) + (pad_margin of item_modify_data), (item 2 of the_dimensions) + (pad_margin of item_modify_data)} with pad color pad_color of item_modify_data
save this_image
close this_image
end repeat
end tell
end repeat
end open

上書きしちゃうので元とっておきたいときは画像複製してからやってね
0791774
垢版 |
2016/08/24(水) 12:20:13.50ID:Eu4tDqDr0
>>788
ありがとうございます、教えて頂いた一行を入れて動かせるようにトライします。
>>789
確かに偶数じゃないと気持ちが悪いですね、直します。。
>>790
ありがとうございます、こんなに短い命令文で書けるんですか。。
ここの最後に「デスクトップに同名ファイル名・形式で保存」ができるようにトライしてみます。
0792名称未設定
垢版 |
2016/08/24(水) 12:23:44.02ID:KUHn3SeV0
先にコピーしてから処理すればいいんじゃないの
0793名称未設定
垢版 |
2016/08/29(月) 14:51:09.10ID:hh1Ww9bW0
ファイル名をコピー後に「A」を「B」に置換してからテキストを開いて貼り付け。
複数ファイルの場合は改行ではなくスペース区切りで貼り付けしてくれるスクリプト知ってたら教えてください!
0794名称未設定
垢版 |
2016/08/29(月) 15:26:57.61ID:an6yXUEQ0
ls -1 | perl -lne 's/A/B/; push @l, $_; END { print join
0795名称未設定
垢版 |
2016/08/29(月) 15:29:36.14ID:an6yXUEQ0
↑ 後ろ切れちゃった

ls -1 | perl -lne 's/A/B/; push @l, $_; END { print join " ", @l }' | open -f
0796名称未設定
垢版 |
2016/08/29(月) 16:16:40.84ID:hh1Ww9bW0
>>795
ありがとうございます!!ただ言い忘れましたがapplescriptで教えてください!
ファイルをスクリプトアプリに入れるとそのファイル名から拡張子を除きAという文字をBに置換後に
テキスト(自分JEditです・・)が開いてそこにペーストされるという感じです!
0798名称未設定
垢版 |
2016/08/30(火) 09:14:23.39ID:XbvJ0yp10
JEdit持ってないからTextEditで
複数ファイル渡すと別々に分かれることがある(理由不明)
on open someItems
set outNames to {}
repeat with anItem in someItems
tell application "Finder"
set aName to name of anItem
set anExte to name extension of anItem
if anExte is not "" then
set aName to text 1 thru ((length of aName) - (length of anExte) - 1) of aName
set anExte to "." & anExte
end if
considering case
if aName contains "A" then
set aName to do shell script "echo " & quoted form of aName & " | sed 's/A/B/'"
end if
end considering
set end of outNames to aName & anExte
end tell
end repeat
set oldASTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to {" "}
set outNames to outNames as text
set AppleScript's text item delimiters to oldASTID
set outNames to outNames & linefeed
tell application "TextEdit"
launch
set aDoc to make new document
set text of aDoc to outNames
activate
end tell
end open
0799名称未設定
垢版 |
2016/08/30(火) 09:28:21.06ID:AdsaidQG0
>>798
スクリプトの神様有難うございます!
お陰様でJEditにスペース区切りでペーストされました、が!
拡張子までペーストされてしまいます!
0800名称未設定
垢版 |
2016/08/30(火) 09:37:45.71ID:+h0eq0WK0
ちょっとは自分で工夫しろよ
0801名称未設定
垢版 |
2016/08/30(火) 10:32:40.56ID:XbvJ0yp10
>>796
>拡張子を除きAという文字をBに置換後に

どっちなんだろな〜と思いつつ、拡張子にあるAは置換しないと解釈することにして
拡張子はわざと残した
あとは適当にやってちょ〜よ
0802名称未設定
垢版 |
2016/08/30(火) 16:22:49.96ID:cgL2/WZD0
ここまでおんぶにだっこで「されてしまいます!」じゃねえよ…
0803名称未設定
垢版 |
2016/08/30(火) 18:05:45.33ID:CY0X5lu10
どう見ても丸投げなんだから自分でどうこうできるわけがない
0805名称未設定
垢版 |
2016/08/30(火) 19:28:50.83ID:AdsaidQG0
>>801
まずは拡張子を外してから痴漢、最後に拡張子を戻してテキストにペーストしてたんですね!
この部分を削除して希望の通りのフォーマットでコピペされました!
神様有難うございます!!
0806名称未設定
垢版 |
2016/08/30(火) 19:31:40.88ID:PFtNseYe0
こーゆーのを、厚顔無恥っていうのか?
0807名称未設定
垢版 |
2016/08/30(火) 19:38:21.79ID:+sIhfrvl0
可愛い子には旅をさせよ
0808名称未設定
垢版 |
2016/09/06(火) 23:07:59.42ID:AbjjUDuP0
文字列をパースしてdateオブジェクトに変換したいのだけど、システム設定に非依存でやる方法を教えてください。

set theDateString to
0809名称未設定
垢版 |
2016/09/06(火) 23:09:51.36ID:AbjjUDuP0
文字列をパースしてdateオブジェクトに変換したいのだけど、システム設定に非依存でやる方法を教えてください

set theDateString to "2016/9/6"
set theDate to date theDateString

の時、システム設定が和暦になってると theDateは "平成2016"になってしまいます
かといって、set theDateString to "H28/9/6"とすると、システム設定が西暦の場合エラーになります

システム設定のフォーマットに依存せず、テキストから正しく日付オブジェクトに変換する方法が思いつきません。 よろしくお願いします。
0810名称未設定
垢版 |
2016/09/07(水) 00:12:26.20ID:3MTRzdxL0
和暦と西暦の変換処理を自分で書いちゃうのはダメなの?

まず、dateオブジェクト内は西暦で統一しておく

dateオブジェクトに入れる前の文字列に
昭和とか平成、Hの文字が入っていないかチェックする処理
→入っていなくて年の部分が4文字なら西暦と見なしてdateオブジェクト化
→入っていた時は和暦→西暦変換の処理をしたあとdateオブジェクト化

で、dateオブジェクトから日時を取り出して使う際に、
西暦のまま取り出すか、和暦に変換して取り出すか、
フラグでも立てて分岐する処理を書いておく

江戸時代とか、それより前の日付も対象になるなら、
その分チェック対象のリスト(配列)も用意しないとダメで
面倒そうだけども…
0811名称未設定
垢版 |
2016/09/07(水) 00:30:52.68ID:3MTRzdxL0
ちなみに自分の場合、

set theDate to current date
set (year of theDate) to 1999

こんな感じで、current date でdateオブジェクトをまず作っちゃって、
そのあと必要に応じて年月日を変更する形でやってて、
西暦しか使えないと思ってました…

>>809みたいな書き方すると、"2016/9/6" を直接
dateオブジェクト化したりできたんですね…
0812名称未設定
垢版 |
2016/09/07(水) 02:10:58.49ID:GDz+ptgZ0
>>809
かんたんかんたん

set theCommand to "date +%Y/%m/%d"
set theDateString to do shell script theCommand
set theDate to date theDateString
0813名称未設定
垢版 |
2016/09/07(水) 02:17:43.35ID:GDz+ptgZ0
あ、上のは検証してないんで一応補足しておくけど、もし年/月/日の並びがだめぽな
環境があるなら>>811のような定番の方法を使ってそれぞれ別個に定義してやればよい

e.g.
set theDate to current date
set theYearString to do shell script "date +%Y"
set (year of theDate) to theYearString
...
0814名称未設定
垢版 |
2016/09/07(水) 04:47:46.77ID:3MTRzdxL0
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
0815名称未設定
垢版 |
2016/09/07(水) 08:09:40.71ID:3MTRzdxL0
>>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年)に上書きできますた
0816名称未設定
垢版 |
2016/09/07(水) 11:05:58.56ID:FhgBYBLX0
平成やHの文字が出てくると決めつけてるとすぐ使えなくなる可能性が…
0817名称未設定
垢版 |
2016/09/07(水) 11:31:39.64ID:ngYUIGtT0
>>809
結局最終的に何が得たいの? 日付を西暦にした文字列? 日付同士の計算がしたい?

どちらにせよ一旦和暦を西暦に変換しないとできないっぽいので、
正規表現の使えないASのみではちょいと面倒だと思う。

ちなみに10.6.8だと>>809のは和暦にすると動かないんだが。
0818名称未設定
垢版 |
2016/09/07(水) 11:41:37.76ID:CoRxCYwF0
新年号なんだろうな?
0819名称未設定
垢版 |
2016/09/17(土) 05:04:41.42ID:WAphUahl0
入力時点で表記を統一させるか、例外な表記は統一する関数でも書けよ
0820名称未設定
垢版 |
2016/09/18(日) 17:17:15.66ID:P6TC9ipg0
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
0821名称未設定
垢版 |
2016/09/18(日) 18:54:18.94ID:ZyunKvGT0
pictは扱えなさそうな感じ
代わりにsipsコマンドでやると Error: Unsupported output format com.apple.pict
0822名称未設定
垢版 |
2016/09/18(日) 22:05:15.44ID:RKOguUii0
標準のコマンドがダメなら brew install imagemagick して
convert コマンドを使う手もある
ImageMagick は PICT 形式に対応してるよ

ちなみに今時 PICT って何に使うんだい
0823名称未設定
垢版 |
2016/09/19(月) 22:57:57.88ID:9rn6DICs0
過去スレでiTunesのアートワークとして画像を差し込む方法が載っていたのでその通りにやってみました.
そこでは一度,画像データをpictに変換し,data of artwork に入れていました.
0824名称未設定
垢版 |
2016/09/19(月) 23:29:01.85ID:9rn6DICs0
お騒がせしましたiTunes10.2から仕様が変わっていたのですね,,,
tell application "iTunes" to set data of artwork 1 of theTrack to (read (file targetImageFile) as picture)
これでできそうですね.
0825名称未設定
垢版 |
2016/09/20(火) 01:57:42.90ID:0AeGId/70
そういうのは最初からやりたいことを全部言ったほうがいい
質問がズレてると回答もズレちまってお互い時間の無駄だ
0826名称未設定
垢版 |
2016/11/08(火) 18:08:26.81ID:iTLgand+0
automatorで、上のメニューバーにはあるけどショートカットコマンドが与えられてない項目のショートカットを作りたいのですが、
自動記録したものを走らせてもエラーが出て動きません。
どのようなApple script を書けばいいか教えてください。
(例えばChromeの「ズーム」をショートカットにしたい場合)
0827名称未設定
垢版 |
2016/11/08(火) 18:09:54.47ID:iTLgand+0
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

記録したものはこんな感じです。
0829名称未設定
垢版 |
2016/11/08(火) 18:59:43.47ID:BsKEIaRN0
>>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
0831名称未設定
垢版 |
2016/11/18(金) 11:49:53.23ID:0sQ3zW0a0
いつの間にかiTunesでdisplay dialogとdisplay alertのcancel buttonが効かなくなってる
0832名称未設定
垢版 |
2016/11/18(金) 15:06:19.50ID:FWfCUeTi0
>>830
やべぇよやべぇよ……
ほんこれ >Another nail in the coffin of macOS being a tool for professionals.
0833名称未設定
垢版 |
2016/11/18(金) 21:18:06.86ID:GUceBYRw0
Rhapsody発表時にAppleScriptも廃止する予定とジョブズが言ったとたん
じゃぁもうMac使ってる意味ねーよ安いAT機買うからとプロ業界から総スカンをくらい
なんと思い直したというMac自動化の歴史も、彼なき後、遂に終焉を迎えるわけですな
0834名称未設定
垢版 |
2016/11/21(月) 20:23:02.65ID:7ymhH/7S0
Swiftインタプリタでなんとかしてくれるの?
0836名称未設定
垢版 |
2016/11/22(火) 23:21:03.30ID:ICQ6tb5N0
相談です。
最近、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
0837名称未設定
垢版 |
2016/11/23(水) 03:04:10.30ID:enXikOrW0
home video/‌movie/‌music video/‌TV show

どれに変えてもエラーにならなかった
0838名称未設定
垢版 |
2016/11/23(水) 12:49:43.28ID:WM8UhP380
ありがとうございます。
環境依存っぽいですね。
0839名称未設定
垢版 |
2016/11/23(水) 13:51:26.26ID:tAdkg8UK0
バージョンは? コンパイルしなおしたか? できるファイルもあるのか? 何かの tell ブロックに入れ子になってたりして用語衝突してないか?
0840名称未設定
垢版 |
2016/11/23(水) 17:09:26.13ID:sz1Dt2/Q0
Mac OS X 10.9.5
AppleScript 2.3.2
iTunes 12.4.3.1
でした。
いくつかのファイルを試しましたが、やはりTV showへの変更しかできませんでした。
他はエラーが返ります。
「iTunesでエラーが起きました:パラメーターのエラーです」
入れ子ではなく、スクリプトエディタでそのまま実行してもエラーになります。
0841名称未設定
垢版 |
2016/11/23(水) 18:37:33.33ID:60Z7tgsL0
iTunes上で直接変更はできるの?
0842名称未設定
垢版 |
2016/11/23(水) 20:59:45.08ID:sz1Dt2/Q0
はい、可能です。
今は手動でやってます。
0843名称未設定
垢版 |
2016/11/24(木) 04:46:23.72ID:QhkCG5JO0
気になる話があった
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.
0844名称未設定
垢版 |
2016/11/24(木) 15:10:30.69ID:ZN/5pbPK0
Doug氏がそう言うんならそうなんだろうな
0845名称未設定
垢版 |
2016/11/24(木) 16:39:48.30ID:5Qm7ZEkl0
原因不明で回避方法もないということでしょうか。
残念。
0846名称未設定
垢版 |
2016/11/24(木) 17:14:49.09ID:ZN/5pbPK0
不明というか、iTunes側のバグって話かと
0847名称未設定
垢版 |
2016/11/25(金) 14:24:33.44ID:muoB3U8+0
os 10.11です
デフォルトプリンタとデフォルトの用紙の設定をアップルスクリプトから制御したいのですが、プリンター設定ユーティリティがなくなってしまい、以前使っていたスクリプトが動かなくなりました
System Eventsからorg.cups.PrintingPrefs.plistを直接いじればいけるかなと思ったのですが、エラーになって設定できません
何かいい方法はありませんでしょうか
■ このスレッドは過去ログ倉庫に格納されています

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