AppleScript アップルスクリプト 質問、発表 3 944 :
名称未設定 :2009/10/11(日) 21:55:18 ID:wBFwomFd0
なんだかSnow Leopardでは苦労している方々も多いようで...
945 :
名称未設定 :2009/10/13(火) 02:55:48 ID:Pc4UImqk0
Snow Leopardに対応しているリストのソートを行うためのScripting Additionsって ないでしょうか。 自前でソートプログラムを組んでみたものの,日本語のことを考えて作ろうとすると とたんに難しくなってしまうので,Scripting Additionsで代用しようと思っています。
946 :
名称未設定 :2009/10/13(火) 23:31:00 ID:Pc4UImqk0
945のレスはスルーして下さい。あきらめることにします。
947 :
名称未設定 :2009/10/15(木) 20:10:58 ID:7B1FElCm0
Illustrator CS3、MacOS X 10.5.8です。 埋め込み画像を選択してグレースケールに変換するスクリプトを 書こうとしているのですが、変換は do script でアクションを指定してやるとして レイヤーがロックされていた場合にエラーになります。 あるアイテムの親のレイヤーのロックをはずす処理はどう書けばよいでしょうか?
948 :
名称未設定 :2009/10/15(木) 22:09:52 ID:mPxrVekl0
document とかはテキトーに調節して下さい tell application "Adobe Illustrator" tell document 1 if locked of layer "レイヤー 1" is true then set locked of layer "レイヤー 1" to false end if end tell end tell
949 :
947 :2009/10/15(木) 22:55:32 ID:7B1FElCm0
>>948 ありがとうございます、でもそうじゃないんです
tell application "Adobe Illustrator"
tell document 1
tell raster item 1
set selected to true
do script "convertGray" from "mySet" without dialogs
delay 1
end tell
end tell
end tell
という感じのをファイル拾ってループ回そうとしてたんですが
raster item 1 の乗っているレイヤーにロックがかかっていてエラーになるので
乗っているレイヤーを指定する方法(名前を知る方法)?が知りたかったんです
950 :
名称未設定 :2009/10/15(木) 23:11:23 ID:mPxrVekl0
layer of xxx で分かるはずですが…。
951 :
947 :2009/10/16(金) 01:31:19 ID:2+Wbf0t/0
>>950 できた!動いた!これで勝つる!
ありがとうございます!
952 :
名称未設定 :2009/10/16(金) 01:50:52 ID:ER7xwyai0
そんなあなたに魔法のスクリプト。 ドキュメント上で何かを選択した後で、 get properties of selection 取得できる全ての属性を一覧できる。
953 :
名称未設定 :2009/10/16(金) 12:51:43 ID:Pb3J39Vs0
>>951 set locked of every layer to false
ではじめに一括で解除してはダメなのでしょうか?
954 :
名称未設定 :2009/10/16(金) 20:38:48 ID:1g+K/xUZ0
Illustratorの埋め込み画像を抽出するスクリプトを描いたよ。 会社の知的財産だからここには出せないけど (新規ドキュメントにペースト) (画像の解像度を調節する) (書き出しコマンド) こんなヤツです。
955 :
名称未設定 :2009/10/16(金) 20:41:56 ID:QZcFjrHn0
だったら書くなよw
956 :
名称未設定 :2009/10/16(金) 23:32:00 ID:1g+K/xUZ0
出し惜しみもアレなんで今度ゴニョゴニョしてここに出しますw サーセン
957 :
名称未設定 :2009/10/16(金) 23:46:36 ID:/Vccu3Qz0
フリーのプラグインあるじゃん>埋め込み抽出
958 :
947 :2009/10/17(土) 00:46:08 ID:neKQRchY0
jsだったらたけうちとおる氏が公開してるし…>埋め込み抽出
959 :
947 :2009/10/17(土) 00:52:41 ID:neKQRchY0
しまった名前取るの忘れた
>>953 そういう処理思いつかなかったです
コピペ野郎だからどっちにしろ書けなかったし…
960 :
名称未設定 :2009/10/17(土) 18:14:39 ID:Mg6+AD3A0
>>959 ということは埋め込み画像はそのままにグレースケールにしたかったということか。
961 :
名称未設定 :2009/10/18(日) 00:33:09 ID:AuXydGcw0
プログラムの知識が無いので助言頂きたく。 「あるサイトからURLを抽出して一定の文字列を削除してtextファイルに保存」 というのをやりたいです。 前半と後半はAutomatorにまかせるとして、文字列の編集が出来ないようなので、 AppleScriptを勉強しようとおもいましたが全く分かりません。 下記はAutomatorで自動的に挿入される文です on run {input, parameters} (←これで前のアクションの結果を受け取っているのでしょうか?) hogehoge (←参考になるサイト教えて下さい) return input end run 宜しくお願いします
962 :
名称未設定 :2009/10/18(日) 00:42:14 ID:u8zvA7ej0
963 :
名称未設定 :2009/10/18(日) 06:50:32 ID:skbFfy910
一定の文字列を削除するならAppleScriptよりshell scriptの方が手っ取り早いんじゃあ? sed 's/対象の文字列//g' とか 対象の文字列に記号があったりすると / を他のに変えとくとかエスケープするとか必要になるけど
964 :
名称未設定 :2009/10/18(日) 08:27:04 ID:xH+fTvgb0
>>961 プログラムの知識が全くないなら、プログラムを勉強してください、という助言以外ない
ここにいる人たちには、助言を求めているのではなく、丸投げしているようにしか見えないよ
965 :
名称未設定 :2009/10/18(日) 10:28:55 ID:KI6xb+aF0
>>961 >>963 sedとcurlでやると良いよね
Perl, Python, RubyなどのLLでもいいけど
966 :
名称未設定 :2009/10/18(日) 11:26:58 ID:fNLBCNOY0
>>963 sed とかは単独のプログラムで shell scripst とはまた別な… ま、いいか。
967 :
名称未設定 :2009/10/18(日) 11:45:57 ID:zggL/kKR0
968 :
963 :2009/10/18(日) 12:31:00 ID:CPgOggp30
>>966 AutomatorのAction名に使われてたんでな
scripstと書いた覚えはないが
969 :
名称未設定 :2009/10/18(日) 14:55:43 ID:fNLBCNOY0
>>968 あっ、そゆこと。重箱のスミつつきしてしまったか。
暇だな俺。
970 :
名称未設定 :2009/10/18(日) 16:38:27 ID:JLr0Acuq0
>961 わかりにくいところだし,ぐぐるキーワードもわかりにくい。 イベントによるデータのやり取りやパイプ的な処理は,多くのAppleScriptの定型処理的なスクリプトと 比較して,多少なりとも発想の転換が必要になると思う。 それをすべて本人の努力で,というのは酷かもしれない。
971 :
名称未設定 :2009/10/19(月) 23:55:44 ID:YbfIruDg0
972 :
961 :2009/10/19(月) 23:56:54 ID:aZIuS5EW0
色々助言ありがとうございます。 抽出して置換…程度に思っていたのですがそう簡単に行かないみたいですね 色々試してみます。
973 :
名称未設定 :2009/10/20(火) 09:30:30 ID:2GnlbUpf0
>>972 --少し質問が漠然としてるみたい。文字列の検索置換をASだけでやりたいのかな?URLをいじるのが主?
--たとえばURLのクエリーを省いた文字列が欲しい。で、ASだけで書きたいならこんな感じ。
set myStrings to "
http://www.google.co.jp/search?q=applescript "
set splitChara to "?"
set findPos to offset of splitChara in myStrings
set retString to characters 1 thru (findPos - 1) of myStrings as Unicode text
log retString
--文字列の検索置換のASオンリーなら昔はこんなのを使ってた。今は外部で正規使うけど。
--myStringsのクエスチョンマークを文字に
replaceString(myStrings, splitChara, "QUESTION")
log result
--- Search and replase
on replaceString(myStrings, findStr, replaceStr)
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to findStr
set theList to every text item of myStrings
set AppleScript's text item delimiters to replaceStr
set myStrings to theList as string
set AppleScript's text item delimiters to tmp
return myStrings
end replaceString
--参考になれば嬉しい。
974 :
名称未設定 :2009/10/20(火) 13:36:32 ID:ZfIbwzZ10
他ので書いた方が楽だ...
975 :
名称未設定 :2009/10/20(火) 14:40:14 ID:R3HQI4zQP
AppleScript で文字列の検索、置換、変換をするなら TextCommands 入れればいいのに。
976 :
名称未設定 :2009/10/21(水) 01:49:04 ID:Lo5P01LD0
俺ならPerlか何かを呼び出すかJeditなどのエディタを操作して行なう
977 :
名称未設定 :2009/10/21(水) 03:52:50 ID:eOQuYF9o0
ASオンリーでやっても効率が悪いだけなのは同意だが、 今まさにASを学ぼうとしてる961にとっては、 973を読み解くのもためになると思うよ
978 :
973 :2009/10/21(水) 07:53:04 ID:d0yLUJa50
>>961 さん、どこかいっちゃったのかな?
AS批判のみなさま。確かに私もいまは外でやるのが普通になってしまったけど、
でも、基本覚えておいて損はないし、てか、offset of 系とかは絶対に他言語でもつかうじゃん。
マッチしたレコードを表示するしないに正規つかう?indexOf使うでしょ?圧倒的に早いじゃん。
delimiters系もASの使い方はちと特殊すぎるけどこれも必須だよ。
>>973 に書いたの(textとcharactersの変換さりげなくやってるのも見逃さないで)と
reverse(後ろからはないもんね)を覚えて応用すればテキスト処理のほとんどがASのみでできるよ。
--reverse sample
set myStrings to "
http://www.google.co.jp/search?q=applescript "
set myListStr to characters of myStrings -->リストにする
set tempStr to reverse of myListStr as Unicode text -->ひっくり返す
set findPos to offset of "/" in tempStr --> offset of は最初に見っけたところだけ。
set retString to characters findPos thru (length of tempStr) of tempStr
set retString to reverse of retString as Unicode text -->ひっくり返してテキストに
朝っぱらから何をしておる?会社いかなきゃ、かなり下がってるからあげとくね。
979 :
名称未設定 :2009/10/21(水) 08:14:53 ID:X2P6RHEq0
変数に格納している文字列をアプリケーションのキャレット位置に入力するにはどうすれば良いのでしょうか? 例えば変数STRに格納している文字列をTextEditに入力する時 tell "TextEdit" tell window 1 keystroke STR end tell end tell ではいけないのでしょうか? 上記だと「&1を取り出すことができません」とエラーが出ます。 基本的な質問ですみません。
980 :
名称未設定 :2009/10/21(水) 09:09:18 ID:EpoV8NWa0
>>979 set STR to "applescript"
set the clipboard to STR
tell application "TextEdit"
activate
tell application "System Events"
keystroke "v" using {command down}
end tell
end tell
とか書くのだけど、まずはリファレンス本を買ってみましょう、ググってみましょう。
でないと、一生書けないよ?
981 :
名称未設定 :2009/10/21(水) 14:56:21 ID:ijC2VJEn0
ASのリファレンス本ってまだ売っているんだっけ?
982 :
名称未設定 :2009/10/21(水) 15:15:07 ID:l6nJD7fz0
>>979 /Applications/AppleScript/Example Scripts/UI Element Scripts/Key Down-Up.applescript
/Library/Scripts/UI Element Scripts/Key Down-Up.applescript
見るといいよ
983 :
名称未設定 :2009/10/21(水) 15:22:21 ID:l6nJD7fz0
↑ うち10.4なんで10.5以降で構成が変わってたらスマン
984 :
名称未設定 :2009/10/21(水) 21:13:02 ID:uUZ2pM5W0
985 :
名称未設定 :2009/10/21(水) 21:38:37 ID:6o3eLBOJ0
reverse ? 初めて見た。 いつからこんなのあった?
986 :
961 :2009/10/21(水) 22:14:30 ID:+kuh7YED0
>>973 さん
1行ずつ解読中です。
凄く勉強になります。
調べて理解は出来ても書くのは難しいですね。
987 :
名称未設定 :2009/10/22(木) 00:11:39 ID:m2rL1+bb0
>>979 うまくいかない時は1行ずつバラして確認する
これ基本中の基本
ただし tell 〜 end tell は間違ってても文法的なエラー以外は出ないので、
まずは tell を抜いた状態で確認する
988 :
名称未設定 :2009/10/22(木) 00:52:42 ID:zYrS/AZb0
989 :
名称未設定 :2009/10/22(木) 01:50:20 ID:oPeAWYAb0
みんなすげーなー
990 :
名称未設定 :2009/10/22(木) 13:31:34 ID:OtVFtJe20
991 :
名称未設定 :2009/10/22(木) 20:58:13 ID:QFOz7M3O0
乙
992 :
名称未設定 :2009/10/23(金) 17:54:30 ID:zaZ2Ikhi0
>>980 >>979 ではありませぬが、テキストエディットってpasteコマンドがないのですね。
なんのこっちゃ
あと、念のため「tell document 1」も入れた方がいいかも。
993 :
名称未設定 :
2009/10/23(金) 21:35:24 ID:thf9MbZW0 >>992 実際は application "System Events" を application "TextEdit" で囲んでも全く意味ないので、
document 1 で囲む必要も別にありません
もし keystroke を使わずにやるのなら、
document 1 の text や insertion point を駆使する事になるけど