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/

151 :名称未設定:2014/02/08(土) 18:07:01.62 ID:jmpl7yBh0.net
Finderで選択したファイル/フォルダに対してなら、Automatorでサービスもなかなか便利。実行そのものはAppleScriptだけど

フォルダ/ファイルの区別がつく(ファイルの種類もちょっとはつく)、コンテキストメニューを選んだ時点で操作対象が決定しているのでスクリプトが終わるのを待つ必要が無い
(スクリプト全てがでなく>>147でいうと set thePATH to selection as alias が実行されるのをだけど)

152 :146:2014/02/08(土) 18:21:39.04 ID:nsDgn/AA0.net
みなさん早速ありがとうございます。
147のやり方でできました。
148は自分にはまだ難しすぎです。勉強します。

シェルスクリプトで複数の画像を一発で変換できるので、
勉強がてらApplescriptで実行出来ないかなと色々やってみてるところです。
複数のファイルにたいしてもシェルスクリプトを実行させることは可能なのでしょうか?
あればヒントでも教えてもらえると嬉しいです。

153 :名称未設定:2014/02/08(土) 18:29:58.97 ID:jmpl7yBh0.net
普通に引数とか << _END 方式で。do shell script はシェルスクリプトの文字列でしかないので、AppleScriptで長いシェルスクリプトを構築するか、do shell scriptをファイル単位でするかかな
quoted form は便利だから理解した方がいいよ

AutomatorだとAppleScriptを介さずにシェルスクリプトだけでイケるんだが、スレチか

154 :名称未設定:2014/02/08(土) 20:05:48.20 ID:3lSTg7G/0.net
>>149
そうだっけ?w
んじゃGetFileInfoの部分を
fileとかhexdumpとかdirnameとか好きなのに変えて下しあ
ファイル選択にchooseなんか使わないだろうけど、一応フォルダ選びたい時はchoose folderね。
>>152
あら結構丁寧に書いたつもりだったorz
参考までにどこら辺が難しかったか教えてください。
ちなみにどんなシェルスクリプトで画像変換してるの?

一応複数の画像を変換するやつ作ってみた、 D&Dされた複数ファイルをJPEGだけ処理するサンプルです。
これをアプリケーションで保存して複数のファイルをドラッグ&ドロップするとJPEGのみ、同じフォルダにリネームして幅30ピクセルのJPEGに変換して書き出されます。

on open dropItems --ドラッグ&ドロップされた時の処理とエイリアスリスト
repeat with Q in dropItems --入力ファイル数分リピート処理してJPEG イメージのみ変換
tell application "Finder"
set itemkind to get kind of Q
end tell
if itemkind is "JPEG イメージ" then
set DropPOSIX to POSIX path of Q
set pngOutPath to DropPOSIX & "幅30.jpg"
set comd to "sips --resampleWidth 30 " & quoted form of DropPOSIX & " --out " & quoted form of pngOutPath --コマンド作成
do shell script comd --コマンド実行
else
--jpegイメージ以外はパス
end if
end repeat
end open
--作って思ったけどドラッグ&ドロップはデバッグしづらくて作るの面倒いね

155 :名称未設定:2014/02/08(土) 20:09:51.56 ID:3lSTg7G/0.net
>>154
あ、pngOutPathになってるけど気にしないでね
最初jpgをpngに変化するやつ作ったんだけど分かりづらいから、サイズ変換にした名残です、、、

156 :名称未設定:2014/02/08(土) 21:00:15.65 ID:RuZJBi5i0.net
>>154
>--作って思ったけどドラッグ&ドロップはデバッグしづらくて作るの面倒いね

処理本体は別のハンドラにしておいて、
デバッグする時はrunハンドラから適当なエイリアスのリストを渡すようにすれば、
スクリプトエディタでも動作確認できるぜ
ざっくりやるならchoose file/folderの結果がそのまま使える

157 :名称未設定:2014/02/08(土) 22:26:25.46 ID:tRhLBcwSP.net
>>154
素朴な疑問ですみませんが、なんで変数にQなんてとるの?
見たことないんだけど意味あるの?
やっぱりrepeat with とくれが i t s くらいで、そのあと小文字でp q r
あたり使うのが普通だと思うんだけど。
大文字でQってなんかすごく自己主張が激しいというかw
それに普通の変数に1文字変数とかあとで面倒でしょ。

とか思いました。固有名詞にaとかtheとかつけた変数の付け方
考えた人はえらいなあと思う。AppleScriptだと定冠詞つけてるみたいで
本当に英語みたいだよね。
Xcodeよく使うのでコード補完使ってると変数長くなりまくりだけどね。

158 :名称未設定:2014/02/08(土) 22:28:24.72 ID:tRhLBcwSP.net
あ、変数にQって使ったことあったな。ダイアログの質問項目を変数にしたとき、QuestionのQとして
Q1、Q2、Q3とか質問項目作ったことあったなあ、、、、、、。

159 :146:2014/02/08(土) 22:40:30.76 ID:nsDgn/AA0.net
>>154
[$ GetFileInfo ]って書いてあったので
ビビっただけでよくよく見ると分かりやすかったです。
すいません。

画像を大量に人に渡すときにターミナルで
cd でフォルダに移動して
sips -s format jpeg *.tif
sips -Z 2000 *.tif
for nm in *.tif; do
mv $nm ${nm%.tif}.jpg;
done
アプリを使うよりも全然早いのでよく使います。
教えてもらった奴で似たことができそうですね。
いろいろいじくって試してみます。
ありがとうございました。

160 :名称未設定:2014/02/08(土) 23:13:29.55 ID:3lSTg7G/0.net
>>156
そっかそっかなるほどね ありがと!
実際似たような事して作ってたんだけど、エイリアスのリスト作るのとか
そもそもon open の中身がどうなってるかってところで一瞬躓いてたわwww
>>157
なんでと言われても、、、普通とかあるのか独学すぎてそういうルーティン的なのしらんのよ ごめん
シフト+Qって押しやすいし目立つから、特に理由ないよ、英語力無いしスペルミス怖いからテスト時の使い捨て変数にqqqとかzzzとかも使う
最終的には辞書見て直すけどさorz

副産物置いとくね エイリアスリストをつくるハンドラ2つ
set aliaslist1 to AliasListGen("/Users/xxx/Desktop/test/")
set aliaslist2 to choosefile("jpgとpngだけ", {"jpg", "png"}, true, false)
--########################
on AliasListGen(Directory) --入力されたDirectory(POSIXパス)にあるすべてのファイルをaliasリストにするハンドラ
set aliaslist to {}
set filelist to list folder Directory
repeat with Q in filelist
set tmppath to Directory & Q
set tmpalias to POSIX file tmppath as alias
set end of aliaslist to tmpalias
end repeat
return aliaslist
end AliasListGen
--########################
on choosefile(prom, seltype, multSel, inv) --(ダイアログに表示される文字列,選択できるファイルタイプリスト,複数選択できるか(Bool),不可視ファイルの表示(Bool))
set deskpath to path to desktop --初期フォルダ設定
choose file with prompt prom of type seltype default location deskpath multiple selections allowed multSel invisibles inv
end choosefile

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

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