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

このエントリーをはてなブックマークに追加
1名称未設定
質問、発表どっちでもスレ。

■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
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/
2名称未設定:2013/12/22(日) 05:43:56.73 ID:5PKBbx/h0
('仄')パイパイ
3名称未設定:2013/12/22(日) 22:55:07.58 ID:+aPbluVJ0
ここ数年まったく書いてないなAS
4名称未設定:2013/12/27(金) 19:35:53.59 ID:9xzAYkXqi
マベにてosascriptをセキュリティープライバシーに登録するのはどうやるのでしょう?

MLではできるkeystroke呼び出しが、マベでは動かないです。
5名称未設定:2013/12/27(金) 20:51:21.16 ID:HgE/UmENi
>>4
一度試行すると実行するアプリが勝手にリストに出現するので、
そのチェックを入れる感じだったと思うが

ターミナルだったらまんまターミナルだし、
スクリプトメニューだとSystemUIServer

たまに何故かosascriptそのものが出てくることもあったがよくわからん
6名称未設定:2013/12/30(月) 22:59:41.07 ID:9WnN6qsy0
イベントログの履歴をテキストファイルに書き出すコマンドって存在しますか。

とある事情で完全にスクリプトを流したというエビデンスにしたいのです。
7名称未設定:2013/12/31(火) 03:05:43.24 ID:A6/iRGot0
イベントログってdo shell scriptとかしか表示されないよね
エビデンスが欲しいなら
動作ごとに各成功フラグを追加して最後にそれをテキストに書き出せば
8名称未設定:2013/12/31(火) 10:06:45.81 ID:w3RedxCD0
>>7
レスありがとう。

質問の仕方が悪かったのだが、実行するスクリプトは、とある文字列をユーザに入力させる。

その入力された文字列が履歴に残っているようなので、丸ごとテキストで書き出すことが出来ればと考えた。
9名称未設定:2014/01/02(木) 08:33:24.40 ID:yEVH1Y6SP
osascriptで動かすとき、標準出力に文字出力するにはどうするのでしょうか?
10名称未設定:2014/01/02(木) 09:51:11.72 ID:lE+LzJk20
実行ステータスとしてなら return (reutrn無しでまんまでもだけど)
実行中に逐一ならdo shell scriptでかなあ
11名称未設定:2014/01/02(木) 09:56:49.83 ID:lE+LzJk20
/dev/stdoutをファイルとして開いてそれに書き込むってのもあるな
12名称未設定:2014/01/02(木) 10:31:11.84 ID:sFgAgMLA0
script初めだ

display dialg "Happy New Year!!!"

今年もAppleScriptにとって良い年でありますように。
13名称未設定:2014/01/02(木) 10:33:47.47 ID:sFgAgMLA0
× dialg
○ dialog

なんてこったorz デバッグ初めもやっちまった。
14名称未設定:2014/01/02(木) 12:10:19.86 ID:ipDSuQZK0
直前のスペースも全角だから注意w
15名称未設定:2014/01/06(月) 19:04:31.61 ID:7CI/xVnp0
今年もよろしくお願いします。
applescriptでillustratorの行間を変更しようと試みていますが
以下たけうちさんのを参考にと思いillustratorライブラリをみていますがなかなか難しいですね。
ちなみにscriptは
tell application "Adobe Illustrator"
tell document 1
tell text frame 1
tell paragraph 1
set justification to full justify last line left

--right以外にも下記の種類がある
--center/full justify/full justify last line center/
--full justify last line left/full justify last line right
--/left/right
end tell
end tell
end tell
end tell

これって行間の解説をみてみるとleadingというのに当てはまるようですがleadingに
leading (real) : the amount of space between two lines of text (in points)
とあります
(行間をつめたいけどできない)でやりたいのだがどなたかご教授ください。
16名称未設定:2014/01/06(月) 23:03:17.53 ID:OUsnDFhy0
>>15
tell application "Adobe Illustrator"
tell document 1
tell text frame 1
tell paragraph 1
set auto leading to false
set leading to 10 --単位はpt
end tell
end tell
end tell
end tell

とかになるよ。
数値適用する前に改行の自動をオフにしないとダメ。
paragraphを対象にしていると最終行が改行で終わっているとleadingに数値適用するとエラーとなるので
text frame全体に適用するにはevery paragraph(paragraphs)ではなくevery line(lines)で

tell text frame 1
set auto leading of lines to false
set leading of lines to 10
end tell

↑tell text frame外省略
17名称未設定:2014/01/06(月) 23:49:20.98 ID:7CI/xVnp0
>>16
どうもありがとうございました。m(_ _)m
set auto leading of lines to false
set leading of lines to 10

この辺りのやり方(文法みたいのがどこかにあると思いますが)がどうもわかりません。
leading (real) : the amount of space between two lines of text (in points)

から
auto leading こういう風な lines to false とか どう学べばそういう答えがでるのか不思議です。
applescriptは中学英語なみとかいわれているけどライブラリをみる限りチンプンカンプンですね。

set leading of lines to 10 なんか どうひねっても浮かんできませんね。(^^;)

でも行間の操作ができましたのでとても助かりました。本当にありがとうございました。感謝です!
18名称未設定:2014/01/07(火) 00:25:10.25 ID:WILu6W1O0
>>17
>>16の最後の部分は
tell text frame 1
tell lines
set auto leading to false
set leading to 10
end tell
end tell
これと同じ。
ちょっと値代入するだけなのにtellでくくるのはめんどくさいので
set auto leading of lines to false
set leading of lines to 10
とした。
set leading of lines to 10
は優先される部分をあえてカッコでくくると
set (leading of lines) to 10
カッコ内の△△ of □□ってのは「□□の△△」って意味なので
lines(全ての行)のleading(行間)を10にするってこと。
実は↓これでもOK
set lines's leading to 10

auto leading
は最初スクリプト組んで実行してみたら行間変わらなかったので、
Illustratorの書類見たら改行が自動のままだった。
それから解説のlinesとかparagraphの項目みたら
PROPERTIESにauto leadingって項目があったからfalseにしてみたらうまくいったよ。

用語解説の
(real)は実数
(boolean)はtrueかfalse
他にも色々あるけどそれぞれのプロパティの値は形式が決まっているから代入出来る値もそれに合わせないといけない。
r/oって書いてあるのはread onlyの略で値を見ることは出来るけどスクリプト側で設定することは出来ないって事だよ。
19名称未設定:2014/01/07(火) 03:56:23.30 ID:A9XxL9bQ0
あけましておめでとうございます。
早速質問なんですが。
変数名を出力する事は可能でしょうか?

例えばこうすると、
property test1 : {"x", "y", "z"}
property testItem : {{test1}, {2}, {3}}

set tmp1 to item 1 of item 1 of testItem
set tmp2 to item 2 of item 1 of item 1 of testItem

log tmp1 & "_" & tmp2 as text

出力は、
xyz_y
となりますが。
これを
test1_y
としたいです。

以下のようにリストの中に"test1"を追加する以外に方法はありますか?
property test1 : {"x", "y", "z"}
property testItem : {{test1, "test1"}, {2}, {3}}

set tmp1 to item 2 of item 1 of testItem
set tmp2 to item 2 of item 1 of item 1 of testItem

log tmp1 & "_" & tmp2 as text
20名称未設定:2014/01/07(火) 04:19:36.79 ID:A9XxL9bQ0
失礼 アンパサンドの文字参照がダメなようで全角で
log tmp1 & "_" & tmp2 as text

log tmp1 & "_" & tmp2 as text
&を全角にしてます
21名称未設定:2014/01/07(火) 12:17:10.13 ID:pSl4+Q4s0
それってtestItemにtest1そのものではなくtest1の値を代入してるだけなんで、
変数名どーこー以前の問題ですわ
22名称未設定:2014/01/07(火) 12:37:03.68 ID:EjQxpbCu0
>>18
>用語解説の
>(real)は実数
>(boolean)はtrueかfalse
>他にも色々あるけどそれぞれのプロパティの値は形式が決まっているから代入出来る値もそれに合わせないといけない。
>r/oって書いてあるのはread onlyの略で値を見ることは出来るけどスクリプト側で設定することは出来ないって事だよ。


解説ありがとうございます。m(_ _)m
なるほどそういうことですか。

どころで全体の文章で行間を変えるには別な記述でしょうか?
現況の
>set auto leading of lines to false
>set leading of lines to 10
では
行間変更では改行がある前は行間ポイントが変更できますが
それ以降の行間は変更がなされないのは他に書き方があるのでしょうか?
>every line(lines)
と変更しても改行後の文には行間は及ぼしません。

どのような記述がよろしいでしょうか?
23名称未設定:2014/01/07(火) 12:38:02.99 ID:EjQxpbCu0
>>18
>用語解説の
>(real)は実数
>(boolean)はtrueかfalse
>他にも色々あるけどそれぞれのプロパティの値は形式が決まっているから代入出来る値もそれに合わせないといけない。
>r/oって書いてあるのはread onlyの略で値を見ることは出来るけどスクリプト側で設定することは出来ないって事だよ。


解説ありがとうございます。m(_ _)m
なるほどそういうことですか。

どころで全体の文章で行間を変えるには別な記述でしょうか?
現況の
>set auto leading of lines to false
>set leading of lines to 10
では
行間変更では改行がある前は行間ポイントが変更できますが
それ以降の行間は変更がなされないのは他に書き方があるのでしょうか?
>every line(lines)
と変更しても改行後の文には行間は及ぼしません。

どのような記述がよろしいでしょうか?
24名称未設定:2014/01/07(火) 13:21:10.16 ID:EjQxpbCu0
>23
自己解決しました。すみません m(_ _)m

>text frame全体に適用するにはevery paragraph(paragraphs)ではなくevery line(lines)で

text frame ←これの意味が分かりました。

ありがとうございました。
25名称未設定:2014/01/07(火) 18:27:44.74 ID:DaJojQA60
>>21
いやそれは、分かってるんです
変数の名前を取得する方法があれば教えてほしいのです。
分からなかったので、変数名と同じ名前をテキストでリストに入れて呼び出してたのですが、
それをしないでも、変数名が取得できれば楽だと思ったので、
無いのですかね?
26名称未設定:2014/01/08(水) 20:23:55.36 ID:99yykXTN0
>>25
変数には名前はないよ。
27名称未設定:2014/01/10(金) 19:08:15.63 ID:+KoAXPC/0
Illustratorのオーバーフローの検出をしたいのですがネットで色々探ってみると

IllustratorのテキストフレームにはIndesignのようにoverflowプロパティがありません。
...paragraphとlineのキャラクタ数を比較すると表示されていないキャラクタの数を把握できる...
らしいのです。
で、たけうちとおるさんの「オーバーフローを調べる」を元に行間を自由に変更できないかと思い
色々模索しておりますがどうも詰まってしまいました。下記URL参照...頭にhを入れてください
ttp://www.adg7.com/takenote_b/2009/03/12.html

最初の行に
property i : 24   とりあえずトップに挿入する。行間24ptで固定
....
....
....display dialog "オーバーフロー:" のところに下記スクリプトを挿入した
....
tell application "Adobe Illustrator"
tell document 1
tell every text frame
tell every line
set auto leading of lines to false
repeat with i from 20 to i
set leading of lines to i
end repeat
end tell
end tell
end tell

のような感じに行間をテキストボックス内で自動的に収まるようにしたのだが思うようにいきません。

テキストボックスは固定してテキストが少なくても全体が均一になるよう自動行間、自動調整できないかと思案しています。
どなたかご教授よろしくお願いします。
28名称未設定:2014/01/11(土) 01:25:24.03 ID:bFFRZv4H0
repeat with i from 20 to i
普通こんな記述はしない。
行間の初期値は該当するtext frameから読み取った方が良いし
目的のtext frameがtext frame 1で全行同じ行間であれば
tell document 1の後に
set defLeading to leading of character 1 of text frame 1
1文字目の行間を取得で十分
オーバーフローしてるテキストボックスをの行間を詰めるにしても
行間を少しずつ(例えば0.1ptずつとか)「減らす」記述にしないとダメ。
repeat with i from defLeading to 0 by -0.1
減らす毎に文字がオーバーフローしていないかチェックして
文字が収まったらexit repeatっていう処理が必要
tell every text frame
の辺りも全部のテキストフレームに一括で同じ処理する場合のみ使う。


というかあなたにそのスクリプトはちょっと難しすぎる。このまま進むのは危ない。
ハンドラ(サブルーチン・関数)の使い方も分からないでしょ?
on overflow(tFrame)

end overflow
の部分

まずAppleScriptの基本というか
スクリプトそのものの基本から(Web用のJavascriptでも良いので)勉強した方が良い。
どうしてもApplescriptでって事なら入門書をどうにかして入手して
最初から本の通りにスクリプト入力して実行してはちょっといじって確認して…
みたいなことを繰り返しながら全部通しでやるのが良い。
29名称未設定:2014/01/11(土) 10:18:55.69 ID:kmKDcWFPP
初心者にイラレほかアドビの主戦級ってけっこう厳しいと思うですの。本当に必要性があれば書くけれど、
私の戦場ではいまだにその需要がない。たぶんイラレで自由自在にスクリプト書ければ黒帯でしょう。

松の内明けちゃいましたが、今年もともに戦いましょう。
30名称未設定:2014/01/11(土) 11:54:53.96 ID:QDclpEY40
>28
ご教授ありがとうございました。m(_ _)m
>ハンドラ(サブルーチン・関数)の使い方も分からないでしょ?
おっしゃる通りです。使い方がわかりません。
でもillustratorでの行間を自由に変更できないかを模索しています。
勉強不足はわかっているつもりですがAppleScriptをネットなどで調べたりしています。
また、こばやしゆたかさんのAppleScriptリファレンスを持っていますが今のillustrator対応ではありません。
勉強するしか方法はないのでしょうがその方法が多分的外れであるのは承知しています。
それでプロの方からみるとチンプンカンプンだというのも承知の上で恥をしのいで投稿させてもらっています。

仕事上同じ繰り返しなどが多く変更もいちいち手で修正がありすぎてなんとか自動化できるところは自動化したい
そういう思いです。
31名称未設定:2014/01/11(土) 17:47:10.22 ID:kmKDcWFPP
>>30
ハンドラ

パラメーターは違うけど似たような処理を何度もすることがプログラムにはよくある。
そういうとき、毎回コードを書いてもいいけど、コードがぐちゃぐちゃになる。
だからそういう部分をサブルーチンとしてくくり出して何度も再利用する。これがハンドラ。
そうやってハンドラを部品として沢山作って組み合わせる、というのが基本です。

いきなり核兵器作ろうと思っても作れないの。石つぶての投げ方、ナイフ、弓、銃、ロケット、原子力。
、、、、、いろいろ分かってやっと目的のものが作れるのね。ハンドラはそう、黒曜石で作った
弓矢のやじりくらいではないかと。たぶんあなたが作りたいのは銃くらいのレベルでしょう。
一生懸命やって2か月コースかな。あたしゃそこまでいくのに2年くらいかかってる気がする。

一歩ずつ進むには問題の切り分けが大切。
なにを言ってるかわかんねーと思いますが、ご武運を祈ります。
初心者が一発書きでコードが動いたら、その人すごすぎるよ。
お金払うからいろいろコード書いて欲しいです。
32名称未設定:2014/01/11(土) 19:29:50.94 ID:QDclpEY40
>31
励ましていただき感謝です。

>一歩ずつ進むには問題の切り分けが大切。

今いろいろなスクリプトを見ています。
その中の働きを自分ながら勉強しています。
的外れ的な質問も多々あるかもしれません
そうのような私に救いの手を差し伸べてくださる皆様には感謝いたしております。m(_ _)m
33名称未設定:2014/01/11(土) 23:12:54.53 ID:QDclpEY40
なんとか本文を自動行間にする事はできました。皆様ありがとうございました。m(_ _)m

たけうちとおるさんのハンドラを利用してオーバーフローしたテキストに行間を計算させて
必要なテキストボックスのオーバーフローの分を自動計算させる事にこぎ着けました。
まだ改善の余地はありますがなんとか思惑通りになりほっとしています。
今のところ別textframeの行間も一緒に動いているようなので指定したtext frameだけの行間を調整できるようにしたいと思います。
アドバイスありがとうございました。引き続きご教授賜りますようお願いいたします。
34名称未設定:2014/01/11(土) 23:13:33.10 ID:QDclpEY40
tell application "Adobe Illustrator"
tell document 1 -- ← every document にすると全体のテキストにスクリプトが動くのであえてDocument1にしています
--set defLeading to leading of character 1 of text frame 1
set defLeading to "20" -- ←本文の行間を固定しています。ここは書類に応じて変更したりします。
repeat with tFrame in every text frame
if kind of tFrame is {area text} then
if my overflow(tFrame) then
--display dialog "オーバーフロー:" & contents of tFrame ←ここでオーバーフローしたテキストが抽出されますのでこれを利用しました。
tell every text frame
tell every line
repeat with i from defLeading to 0 by -1 ←ここで行間を縮めています
set auto leading of lines to false
set leading of lines to defLeading
end repeat
end tell
end tell
end if
end if
end repeat
end tell
end tell
35名称未設定:2014/01/11(土) 23:14:36.55 ID:QDclpEY40
ハンドラはたけうちとおるさんのを参照しています
on overflow(tFrame)
set OriginalDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to ""
tell application "Adobe Illustrator"
set myLastP to (contents of every paragraph of tFrame) as string
set myLastL to (contents of every line of tFrame) as string
set AppleScript's text item delimiters to OriginalDelimiters
if myLastP is not myLastL then
set AppleScript's text item delimiters to OriginalDelimiters
return true
else
set AppleScript's text item delimiters to OriginalDelimiters
return false
end if
end tell
end overflow
36名称未設定:2014/01/11(土) 23:27:23.61 ID:bFFRZv4H0
とりあえずユーザー定義ハンドラの使い方の例

set theText to "あいうえお"
set startCount to 1
set endCount to 2
my textMask(theText, startCount, endCount)

set aaa to "かきくけこ"
set bbb to 2
set ccc to 4
my textMask(aaa, bbb, ccc)

my textMask("さしすせそたちつてと", 5, -1)


on textMask(theText, startCount, endCount)
set resultText to text startCount thru endCount of theText
set startCountText to my minusCheck(startCount)
set endCountText to my minusCheck(endCount)
display dialog "テキスト「" & theText & "」の" & startCountText & "文字目〜" & endCountText & "文字目までは「" & resultText & "」です"
end textMask

on minusCheck(theCount)
if theCount < 0 then
return "最後から" & (-theCount as Unicode text)
else
return theCount as Unicode text
end if
end minusCheck

あー何か勉強し始めた頃を思い出したよ。
最初ハンドラ内の変数名と呼び出し側の変数名が違って大丈夫なの?とか思ってた。
37名称未設定:2014/01/11(土) 23:30:57.28 ID:bFFRZv4H0
>>34
>if my overflow(tFrame) then
の後の
>tell every text frame

>tell tFrame
で良いよ
38名称未設定:2014/01/11(土) 23:33:03.24 ID:QDclpEY40
追伸
tell text frame 1~18ぐらいの範囲でtext frameが指定できるようです。

ありがとうございます。m(_ _)m
39名称未設定:2014/01/11(土) 23:34:54.02 ID:QDclpEY40
>34
>>tell tFrame
>で良いよ

ありがとうございます。m(_ _)m
40名称未設定:2014/01/11(土) 23:37:42.10 ID:QDclpEY40
>36
>ユーザー定義ハンドラの使い方の例
ありがとうございます。m(__)m

参考にさせていただきます。
41名称未設定:2014/01/11(土) 23:39:53.28 ID:bFFRZv4H0
>>34
>set defLeading to "20"
set defLeading to 20
にしないと数値として扱えないんじゃないかな?

>repeat with i from defLeading to 0 by -1 ←ここで行間を縮めています
>set auto leading of lines to false
>set leading of lines to defLeading
>end repeat
これだと行間0になるまで止まらない気がするよ。(実際は0になったとこでIllustrator側でエラー返すと思うけど)

repeat with i from defLeading to 0 by -1 ←ここで行間を縮めています
set auto leading of lines to false
set leading of lines to defLeading
if not my overflow(tFrame) then
exit repeat
end if
end repeat
42名称未設定:2014/01/11(土) 23:54:58.99 ID:QDclpEY40
>41
ありがとうございます。m(_ _)m

>数値として扱えないんじゃないかな?

なんとなく動いているようです。(^^;)

>これだと行間0になるまで止まらない気がするよ。(実際は0になったとこでIllustrator側でエラー返すと思うけど)

------返された値
計算が続いて......
set auto leading of every line of every line of every text frame of document 1 to false
set leading of every line of every line of every text frame of document 1 to "22"
get kind of item 7 of every text frame of document 1
--> {point text}
計算が続いて......
get kind of item 18 of every text frame of document 1
--> {point text}
end tell

で、終了してます。エラーは出ていません。
43名称未設定:2014/01/11(土) 23:59:00.58 ID:QDclpEY40
ちなみに環境は
osx 10.9.1
Applescript 2.6
illustrator CC
です
44名称未設定:2014/01/12(日) 00:04:37.80 ID:4upz722c0
>41

>repeat with i from defLeading to 0 by -1 ←ここで行間を縮めています
>set auto leading of lines to false
>set leading of lines to defLeading
>if not my overflow(tFrame) then
>exit repeat
>end if
>end repeat

これだと以下の部分がなくなりました
ーーーーーーー返された値
set auto leading of every line of every line of every text frame of document 1 to false
set leading of every line of every line of every text frame of document 1 to "22"
get kind of item 7 of every text frame of document 1
--> {point text}

------------------返された値  この部分が残りました
get kind of item 18 of every text frame of document 1
--> {point text}
end tell
45名称未設定:2014/01/12(日) 00:23:03.89 ID:yPrbZhDQ0
>>44
>>37の部分は修正してる?
18番目のテキストフレームの種類が{point text}(エリアテキストではなく普通に打ち込んだテキスト)って事だけど

あと
set auto leading of lines to false
は1回実行すれば大丈夫なのでrepeatの外でOKだったのと
さらに一つ見逃してた。
repeatでiを変動させて行間変えないと行けないのにdefLeading設定しちゃってる。
>set leading of lines to defLeading

set leading of lines to i


set auto leading of lines to false
repeat with i from defLeading to 0 by -1 ←ここで行間を縮めています
set leading of lines to i
if not my overflow(tFrame) then
exit repeat
end if
end repeat
46名称未設定:2014/01/12(日) 01:14:51.44 ID:yPrbZhDQ0
あー何度もごめん。
set leading of lines to i
だとエリアに収まってる部分しか行間変えてくれないから
paragraph指定するしかないのか。
set auto leading to falseとか
最後が改行で終わってるとエラーになるからIllustratorの書類側で気を使わないといけないかも。
最初から自動行間になっていない事前提なのと最後が改行で終わっていないというのが条件

tell tFrame
tell every paragraph
repeat with i from defLeading to 0 by -1
set leading to i
if not my overflow(tFrame) then
exit repeat
end if
end repeat
end tell
end tell
47名称未設定:2014/01/12(日) 01:20:17.06 ID:yPrbZhDQ0
あ、やっぱダメだ…
エリア外のparagraphに対してleadingの設定ができなさそう。
48名称未設定:2014/01/12(日) 10:47:12.63 ID:od5l1ettP
ウザすぎ。ここは手取り足取り教える場所じゃねーんだよ。よそでやれ。
49名称未設定:2014/01/12(日) 10:49:19.47 ID:od5l1ettP
書き忘れた。やるならここ見てるいろんな人に還元しながらやれ。それなら歓迎。
50名称未設定:2014/01/12(日) 22:23:31.18 ID:4upz722c0
>46さん
いろいろありがとうございます。m(_ _)m

結局下記のような記述で自動行間を整える事にしました。
ご指摘の
>set leading of lines to i
に変更して起動したところとりあえずエラーもなくできています。


>48さん
ご立腹されているようで申し訳ありませんね。気にお障りならお詫びいたします。m(_ _)m
それから
>やるならここ見てるいろんな人に還元しながらやれ。

おっしゃる通りです。皆様とともに学びを通してapplescriptでの可能性を見てみたいと思っています。今後ともよろしくお願いします。
51名称未設定:2014/01/12(日) 22:26:26.36 ID:4upz722c0
行間を自動にてつめるスクリプトですが改良の余地がまだたくさんあるようです。
個人的にはこのスクリプトで自分が自分が目指していたのができとても喜んでいます。
下記に教えてくださった皆様のscriptを元に利用しているapplescriptです。
tell application "Adobe Illustrator"
tell document 1 -- ← every document にすると全体のテキストにかかるようであえてDocument1にします
--set defLeading to leading of character 1 of text frame 1
set defLeading to "24" -- ←本文の行間を固定しています
repeat with tFrame in every text frame
if kind of tFrame is {area text} then
if my overflow(tFrame) then
--display dialog "オーバーフロー:" & contents of tFrame
tell text frame 6
tell every line
repeat with i from defLeading to 0 by -1
set auto leading of lines to false
set leading of lines to i
if not my overflow(tFrame) then
exit repeat
end if
end repeat
end tell
end tell
end if
end if
end repeat
end tell
end tell
52名称未設定:2014/01/12(日) 22:27:20.26 ID:4upz722c0
たけうちとおるさんのハンドラをそのまま利用しています。
on overflow(tFrame)
set OriginalDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to ""
tell application "Adobe Illustrator"
set myLastP to (contents of every paragraph of tFrame) as string
set myLastL to (contents of every line of tFrame) as string
set AppleScript's text item delimiters to OriginalDelimiters
if myLastP is not myLastL then
set AppleScript's text item delimiters to OriginalDelimiters
return true
else
set AppleScript's text item delimiters to OriginalDelimiters
return false
end if
end tell
end overflow
53名称未設定:2014/01/13(月) 03:11:37.98 ID:Sx62P48w0
do shell scriptを何度も繰り返しているのだけど、shellコマンドを入力する度に別のターミナルが開いてしまう。

tell application "Terminal"
do script with command "hoge"
do script with command "hoge2"
end tell

hogeとhoge2のコマンドを一つのターミナルウィンドウで処理させる事ってできますか?
54名称未設定:2014/01/13(月) 03:29:47.81 ID:XwnsQAAS0
コピペで動くんじゃないか
55名称未設定:2014/01/13(月) 04:10:03.05 ID:VPcx8yeO0
>>53
--ただ続けて実行したいだけなら
tell application "Terminal"
do script "hoge; hoge2"
end tell

--do scriptの戻りが実行されたtabなのでそれを使うパターン
tell application "Terminal"
do script "hoge"
do script "hoge2" in result
end tell

とりあえずdo shell scriptとTerminalのdo scriptが別物ってのは覚えとけ
ちなみに前者はdo shell scriptでも使える方法
56名称未設定:2014/01/13(月) 08:43:43.11 ID:Wpl4bEnlP
>>53
どういう理屈でアプリケーションを操作する仕組みか考えるといい。
Terminalはshellコマンドを実行するアプリではなく、PCをターミナルウインドウで
操作するアプリ。だからillustratorでパスとかオブジェクトを操作するのと同様、
操作する対象を「tell」などで明確にして実行することが大切。
その例だとアプリ本体に実行を指示しているだけなのでそんな結果になる。
過去にもその話、あったよ。
57名称未設定:2014/01/14(火) 16:18:00.69 ID:VipRDOQb0
Illustratorのテキスト書体変更でエラーがでました。
どなたかご教授ください。

tell application "Adobe Illustrator"
tell document 1
tell text frame 1
set properties of every paragraph of text frame 1 in document 1 to {text font:"Osaka"}
end tell
end tell
end tell
58名称未設定:2014/01/14(火) 21:10:07.61 ID:ZXykgTnJ0
>>57
ここで散々質問してきた人?
だとしたら成長の跡が見られない。
tellとはなんぞやからやり直した方が良い。
59名称未設定:2014/01/14(火) 22:03:45.56 ID:VipRDOQb0
>58
これでいいの?
set setStr to "サンプルテキスト"
set X to 10
set Y to 10
set setStr to setStr as string
set X to X as real
set Y to Y as real
set pt to 2.83
set X to X * pt
set Y to Y * pt
tell application "Adobe Illustrator"
set placedRef to make new text frame in document 1 with properties {contents:setStr, position:{X, Y}}
set properties of every paragraph of text frame 1 in document 1 to {size:8.5, fill color:{class:CMYK color info, black:100, cyan:0, magenta:0, yellow:0}, text font:"ShinGo-Bold-83pv-RKSJ-H"}
end tell
60名称未設定:2014/01/14(火) 22:57:38.60 ID:VipRDOQb0
>58
それともこれかな?
tell application "Adobe Illustrator"
set docRef to make new document with properties {color space:CMYK}
set romanText to "日本語書体変換"
set newText to romanText
set textRef to make new text frame in docRef with properties {position:{100, 200}, contents:newText}
set charStyle to make new character style in docRef with properties {name:"ヒラギノ明朝 Pro-W3"}
set kerning method of charStyle to metricsromanonly
set properties of every paragraph of text frame 1 in document 1 to {size:48}
set cmykColor to {cyan:50, magenta:20, yellow:10, black:5}
set fill color of charStyle to cmykColor
apply character style charStyle to text of textRef
end tell
61名称未設定:2014/01/14(火) 23:30:19.11 ID:VipRDOQb0
>58
>だとしたら成長の跡が見られない。

あんたはどれだけえらい人なんだね。はじめはみんな素人ではないの?
ほんとはプログラムも大してくめないのではないの? ちょっとだけプログラムが組めるっていう人は鼻が偉〜い高くなるのさ。
本当のプログラマーは相手に教えるだけの力量と親切丁寧に教える人をさすんだ。

そういう玉の小さい人からは教えを請いたいとは思わなんだ。あとで偉い請求書まわされてしまうからね。(笑
馬鹿にするのは大概にしなさい。あ〜出し惜しみかいな。そうだね肝っ玉の小ささに笑ってしまいますね。
もっとおおらかに教える事はできないのですか? まぁあなたの勝手ですけどね。

素人が玄人に追いつくのに何年という時間をかけるのは昔の話だよ
今頃
>tellとはなんぞやからやり直した方が良い。
とは時代遅れの考え方だね。
AppleScriptで何ができてどういう使い方ができるか。ただ単にパソコンの前で自己満足するのが自慢なようだな58さん。
もっと大きく物事はみないとな。アリが這いつくばって餌を集めるより鳥になって自由に飛ぶ事を教え合うのがいいってものよ。(笑
62名称未設定:2014/01/15(水) 00:17:20.17 ID:BLw1nVYH0
凄いね
63名称未設定:2014/01/15(水) 00:25:21.78 ID:a7YA5/rX0
なんだかよくわからないなあw
64名称未設定:2014/01/15(水) 11:16:06.94 ID:/LtsrHqK0
技術があってもリストラされ能力はあっていも生かしきれない。
そこは貧乏人の集まるところ。
お互い牽制し合って生きているところ。
あ〜さもしい生き方に疲れていませんか。
ドングリの背比べで自分が大将だと思っている。
出る杭は今のうちに叩きのめそう。
村社会を保持しよう。
時代遅れを感じていない。
なんだかよくわからないと宣う輩。
あなたの未来はモグラの生き方。一生日の目を見ない。う〜ん 残念。
65名称未設定:2014/01/15(水) 11:35:17.84 ID:/LtsrHqK0
人工頭脳をApplescriptで作れるなら認めてあげよう。
ゲーマーがゲームを作った人に俺が偉いんだよという人に似ている。
所詮、AppleScriptは日本人が作ってはいないが日本人は「おれはあんたよりうまくプログラムが組めるよ」という
ならAppleScriptでつくった自動ロボットを作った方がよい。マックではそれができるんだよ。Windowsでのだきるさ
だがマックの環境はwinよりもっと簡単に仕上がる。

君らの頭脳で受付から製品製造までAppleScriptで組めるか? むりだろうな。
Illustratorで版下を作成できるか? 無理だろう。仕事の内容を理解してないからな。
できた版下を相手にPDFで校正する機能を作れるか? 手動ならできるような。だが全て自動化では無理だね。
作業効率を重視した流れを作れるか? 仕事が何なのかわからんから無理だね。
最後に納品書を自動で書き出せるか それは経理がわからんから無理だね。
業務の流れを全て把握しているのか それは社長のする仕事だからわからんでもいいと云うかもね.


一つだけしかできないようなプログラマーなんて社会では必要性がないいんだよ。
66名称未設定:2014/01/15(水) 11:52:18.37 ID:/LtsrHqK0
世の中には親切にする人もいる。そういう人は多くの恵みを受ける。
それはこの世界が多く与えたものは多く得ると云われる世界だからだ。相対理論なのさ。陰陽の世界観。朱に染まれば赤くなる。類は類を呼ぶ。
相手をけなす人は自分で自分をけなしているのと同じ。韓国の仕様と中国の仕様が一緒だと日本人は感じているのと同じ。

人の可能性を育てるのもこの世界だ。なんらかの縁でここに来ているならそれこそ大事にしなさいな。
わからん人には何倍でも説明したら説明するほど自分の理解度が増していく。それはあらゆるところから情報を
得ようと自分が勉強することになるからね。
それが社会勉強なんだよ。プログラムを訪ねにここへ来る人はそれが本来の目的ではないと思う。
最終的に誰かにきちんと説明だできるまでになるようになるための勉強でもあるんだよ。
だから人が困っているなら自分が勉強したのが役立つときなのだ。
58さんわかったかね。
67名称未設定:2014/01/15(水) 11:54:31.85 ID:UeMn6f2J0
見えないレス多すぎ
68名称未設定:2014/01/15(水) 12:03:57.04 ID:/LtsrHqK0
あたまのわるいやつおおすぎ
69名称未設定:2014/01/15(水) 12:43:41.67 ID:/LtsrHqK0
tell application "Adobe Illustrator"
set docRef to make new document with properties {color space:CMYK}
set romanText to "日本語書体変換"
set newText to romanText
set textRef to make new text frame in docRef with properties {position:{100, 200}, contents:newText}
set charStyle to make new character style in docRef with properties {name:"ヒラギノ明朝 Pro-W3"}
set kerning method of charStyle to metricsromanonly
set properties of every paragraph of text frame 1 in document 1 to {size:48}
set cmykColor to {cyan:50, magenta:20, yellow:10, black:5}
set fill color of charStyle to cmykColor
apply character style charStyle to text of textRef
end tell


書体変換ができないのだが
set charStyle to make new character style in docRef with properties {name:"ヒラギノ明朝 Pro-W3"}
これってどうだろうか
70名称未設定:2014/01/15(水) 12:56:37.57 ID:rX7GSZ3z0
58もしょーもないけどあんたもぶちまけ過ぎ
71名称未設定:2014/01/15(水) 13:32:40.20 ID:NM6x1RRT0
だな。てか、やっぱり教えてほしい方が教えてくれる人を定義しているのか?
だったらダメダメだなあ。連投で超ダメダメ具合を晒して病んでるなと思うな。黙って質問だけしてりゃいいのに
72名称未設定:2014/01/15(水) 14:38:35.33 ID:/LtsrHqK0
>70
>71
>あんたもぶちまけ過ぎ
本音で語らないといけないと教わっているもんでね。
>やっぱり教えてほしい方が教えてくれる人を定義しているのか?
定義も何もしてないし、ごく普通の感覚だよ。
技術者の前に人であってほしいという思いだけです。
>連投で超ダメダメ具合を晒して病んでるなと思うな。
連投ではだめですか?
枯れ木も山のにぎわいというではないかね。
盛り上げたいだけですよ。(笑
>黙って質問だけしてりゃいいのに
何かを恐れながら聞き出しているって感じだね。
牽制しながら質問しているようだが....お互い成長期ですかね。幼少期か。
すごいプログラム例えば自動化をしている人がいますか?
印刷業界で第一人者、デジタルでばりばりapplescriptを利用していますか?
それも自動化にして楽してお仕事してますか?
applescriptで日本を代表する人がここにいますか?
applescriptの執筆活動家はいますか?
もしそういう人がここにいたなら日本のapplescriptのベースを引き上げてほしいな。
まぁ諸先輩方の考え方はよく知らないけどこの程度でだめだしならしょうがないね。
もう少し太っ腹かと期待したが無理だったということか。
まあせいぜい牽制しながらぼちぼちやりなよ。(笑
また質問などさせてもらうけどね。
73名称未設定:2014/01/15(水) 14:58:13.51 ID:NM6x1RRT0
>本音で語らないといけないと教わっているもんでね
教わっているなら、>>58のもそのままとればいい。自分が語るのだけ?他人が語るのは許さないの?
全くAppleScriptと関係無いのにうんざりだぜ

あんたが教える立場であってもあんたのような態度ではあんたは教えないだろ?それは、あんたの>>58の異常な反応から明らかだと思うのだが
まあ、見物だなあ。質問する時も現在の態度でどうかよろしくw
74名称未設定:2014/01/15(水) 15:05:27.12 ID:/LtsrHqK0
>73
>まあ、見物だなあ。質問する時も現在の態度でどうかよろしくw
よろしくねw
まぁせいぜい腕を磨いて貢献してねw
どんどん質問するからねw
75名称未設定:2014/01/15(水) 15:07:18.04 ID:NM6x1RRT0
本気で言っているの?それ。他人を自分の都合の良い人としか見てないってことだよ?
76名称未設定:2014/01/15(水) 15:14:28.03 ID:/LtsrHqK0
>75
冗談さ
77名称未設定:2014/01/15(水) 15:17:00.22 ID:NM6x1RRT0
冗談では済まない。済まないので「すみません」という言うべきだなw
あんだけ饒舌であーだこーだ言うのだからそのくらいは言うべきだろう
78名称未設定:2014/01/15(水) 15:21:21.85 ID:/LtsrHqK0
>77
>冗談では済まない。済まないので「すみません」という言うべきだなw
すみませんw
79名称未設定:2014/01/15(水) 15:25:42.76 ID:NM6x1RRT0
なぜ、w をつける。言っている事とやっている事が乖離しているぞ
まあ、なんかまムカついている、また、変なプライドwだけはすごいというのは既知のことなので、それで許してやろう、俺はw
全くAppleScriptと関係無いのにうんざりだぜなのにいw長くなったがおしまい
80名称未設定:2014/01/15(水) 16:16:23.79 ID:/LtsrHqK0
>全くAppleScriptと関係無いのにうんざりだぜなのにいw
じゃあさ。
書体変換ができないのだが
set charStyle to make new character style in docRef with properties {name:"ヒラギノ明朝 Pro-W3"}
これってどうだろうかね知っている?
変換ができないんだよ。
Marvericksでさ、Illustrator CC 使ってんだ。
だが書体変更がきかんのだよそちらならすぐ解けるんでしょ。ちょっと難しいかな?
81名称未設定:2014/01/15(水) 17:01:36.69 ID:NM6x1RRT0
その調子でいいよw
「ちょっと難しいかな?」と煽ってる(&できれば答えが欲しい)のだろうが、わからないお前が何を言うー、ってことだけにしかならないに
まあ、飽きれたけど考えてみればば調子が変わっていないのでよろしいw
82名称未設定:2014/01/15(水) 17:14:15.46 ID:/LtsrHqK0
まぁ知らない人にきいちゃだめ!ってことだよ。w
幼児期な人には解答できないのはわかっているさw
ただ君の力量がどれだけあるか試しただけさ。w
83名称未設定:2014/01/15(水) 17:35:06.21 ID:/LtsrHqK0
>81
知らないお前に教えてあげるよw
ヒントはここにw
tell application "Adobe Illustrator"
tell document 1
tell text frame 1
tell character 2
get properties
end tell
end tell
end tell
end tell
84名称未設定:2014/01/15(水) 18:20:21.61 ID:NM6x1RRT0
笑った。なに続いてレスしてんの

んな、試しているのはわかってるっての、そういうのをわかってないって、とことんめんどくせーやつだなーということで

Adobe Illustrator なんてちょっとしか触った事が無いぼくちんがデモ版をインストールしてやってみたよ
https://www.dropbox.com/s/9f565hvd5fxcyso/ScreenFlow.mov
なんで、こんなことを ID:/LtsrHqK0 が必死に続けているのかわからないなw

いじょーっ!
85名称未設定:2014/01/15(水) 20:40:15.79 ID:/LtsrHqK0
ご足労なこった。そらそうでしょw
どうしてバックを見せないんだw
10.8なら動くんだよw 10.9.1にしてみなw
今までのappleScriptが動かなくなるよw
Mavericksでは動かんよw
怖くてバージョンアップができんかもなwww

もう一回動画を取り直せ ガンバレ!!  www
86名称未設定:2014/01/15(水) 21:17:59.97 ID:/LtsrHqK0
ちなみにテキスト全体への書体変更は下記のようです。書体ポイント変更はsizeで変更。
Marvericksでも動きます。
tell application "Adobe Illustrator"
set atype to every text frame of document 1
set myatype to count of every text frame of document 1
repeat with i in atype
set the text font of text of i to text font "ShinseiKaiPro-CBSK1"
end repeat
repeat with n from 1 to myatype
tell document 1
tell text frame n
tell text range
tell every line
set size to 40
end tell
end tell
end tell
end tell
end repeat
end tell
87名称未設定:2014/01/15(水) 21:21:26.30 ID:/LtsrHqK0
まとめしたのは。
tell application "Adobe Illustrator"
set atype to every text frame of document 1
set myatype to count of every text frame of document 1
repeat with i in atype
set the text font of text of i to text font "ShinseiKaiPro-CBSK1"
end repeat
repeat with n from 1 to myatype
tell every line of text range of text frame n of document 1
set size to 40
end tell
end repeat
end tell
88名称未設定:2014/01/15(水) 21:29:51.48 ID:NM6x1RRT0
そのうにゃうにゃしているのを、シンプル(余計なものを削っているだけ)にしているだけなのだがな
やっとわかってよかったねw
89名称未設定:2014/01/15(水) 21:32:17.24 ID:rKJergxG0
うざ
90名称未設定:2014/01/15(水) 21:48:55.51 ID:/LtsrHqK0
幼稚園児w
91名称未設定:2014/01/15(水) 21:49:44.11 ID:NM6x1RRT0
>>85
>どうしてバックを見せないんだw
そりゃ素直に教えるわけがないからに決まっているだろう。んなこと最初から言っているのに

わかったようだから、あの2行はねえ、
-- get text font of text of text frame 1 of document 1
set text font of text of text frame 1 of document 1 to text font gFontName
だよ。Adobe Illustrator も スクリプトファイルも消したので、ちょっとは間違っているかもしれないけど

Mavericksでは動かかないのか。へーw
92名称未設定:2014/01/15(水) 21:56:38.02 ID:/LtsrHqK0
>88
教え方をもっと研究した方がええかもな。
マスク入りとは恐れ入ったよw
だれがもわかるようなscriptを目隠しまでしてw 馬鹿丸出しw
どんだけ上からの目線かねw
93名称未設定:2014/01/15(水) 22:00:10.29 ID:NM6x1RRT0
すげーなー、これだ自己中も珍しい。珍しいもの発見できただけでもよしとしようw
94名称未設定:2014/01/15(水) 22:03:38.31 ID:IW429DUw0
お前が育ててんじゃねーか
95名称未設定:2014/01/15(水) 22:07:00.00 ID:NM6x1RRT0
うっ
いやあ>>81でわかったかなあと思ったんだけど、変わらないので育てたんではなくて、あぶり出したと言っていただきたいっw
いや、ごめんちゃい、もとい、ごめんなさい
96名称未設定:2014/01/16(木) 10:27:42.18 ID:8b6e8W/P0
二人でよそいってやってくれ
前にも出てたAdobe関係禁止はやっぱり必要みたいだな
Adobe使わない人にとってまったく参考にならない話を延々やられてもうざいし
97名称未設定:2014/01/22(水) 22:59:09.72 ID:eRTOmbtnP
昔作った子供が水浴びしてるDVDをisoイメージにしたんだけど、
面倒なく視聴できるソフトってないのね。
今年初めてのAppleScriptはこれだった。
Automatorで開くファイルを自作アプリに関連付けてやったら
ダブルクリックで視聴できるようになった。
98名称未設定:2014/01/22(水) 23:06:55.85 ID:Lh31v/xG0
>>97
VLCでISOマウントしてみれるけど、、、
99名称未設定:2014/01/22(水) 23:27:39.24 ID:LlN2JipJ0
DVDプレーヤーで普通に見られるけど
100名称未設定:2014/01/23(木) 09:11:56.66 ID:iJWTvZ5CP
>>98
本当に「面倒なく」視聴できてるの? ちゃんとチャプター再生もばっちり?
そもそもマウントするとウインドウが開きません? うちが変なのかもしれんが。
DVDのディスクをスロットに挿入すると自動再生するのと同じように
isoをダブルクリックするだけで普通のDVDと同じように再生できます?
世の中にはすごい人がいて、アイコンをダブルクリック以上のことが「難しい」人
もいるんです(田舎のじーちゃんとかね)。そういう人たちでも簡単にできる?
101名称未設定:2014/01/23(木) 10:29:51.06 ID:hsNSWAQS0
このスレで何も情報も無く「面倒なく」なら、そんなユーザは想定しないだろう
後付けで長々となに語っているんだか
102名称未設定:2014/01/23(木) 10:44:23.27 ID:3KX4Dz8y0
AppleScriptと関係ないじゃん
無理矢理このスレに書くなよ
103名称未設定:2014/01/23(木) 10:59:09.90 ID:EF80bs4x0
てか自作アプリ作ってんのに、なんでAutomatorで関連づけしてんのか意味分かんないwww
104名称未設定:2014/01/23(木) 16:55:33.79 ID:aE6WVZdy0
発表スレなのに、発表すらしない。チラウラにでも書いとけ。
105名称未設定:2014/01/23(木) 18:10:48.75 ID:/HGXohKZ0
>>98
ディスクイメージマウンターでマウントしないからウィンドウでません
ISOの、このアプリケーションで開くをディスクイメージマウンターからVLCに変えれば、ダブルクリックで見れるよ
メニューも使える

多分君が作ったよくわからん自作アプリより田舎のじーちゃんには分かりやすいんじゃないかな?
106名称未設定:2014/01/23(木) 18:23:43.93 ID:chQ4kKQs0
>>105
横から、スマンよ
こんな手があったなんて、初めてしったわ。

d
10797:2014/01/23(木) 22:17:46.59 ID:iJWTvZ5CP
まずすみません。
話題もないみたいだったので、ちょっと賑やかしのために書き込んでみました。
難しいものでもなんでもないけど、スクリプトは下記。

on open dorp_Items
tell application "Finder"
set aISO to selection as alias
end tell
set b to do shell script "hdiutil mount " & (quoted form of POSIX path of aISO)
tell application "Finder"
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to tab
set fileName to last text item of (b as string)
set fileName to (POSIX file fileName) as alias
end tell
tell application "VLC"
activate
open fileName
end tell
end open
10897:2014/01/23(木) 22:28:42.30 ID:iJWTvZ5CP
続きですが
みなさんの指摘どおり、普通にISOをマウントするとフォルダウインドウが開いたり
マウントしたディスクを再度再生アプリで開いたりといろいろ面倒で試行錯誤した次第。

ところで>>105さんの指摘するファイルの関連付けを直接再生アプリ(VLC)
にするのってうまくいきますか? うちでは再生は始まるけれど、メニューに戻ったり
特定のチャプターからの再生などができません。同様にVLCのプレイリストにISO
を登録しても再生しっぱなし、しかできません。
(正確にはISOではなくディスクユーティリティで作った.cdrのデータなので挙動違うかも)

「ウインドウを開かずにマウントする」ならdo shell script hdutil mount
結果はタブ区切りの3番目がマウントしたディスクのPOSIX pathだそうで。
ISOをマウントしたディスクをVLCで開けばチャプター再生などメニュー操作できます。

こんなところを皆様にご活用いただければと。
しかしマウントするとウインドウが開くのとISOをVLCにドラッグアンドドロップすると
コントロール不能の再生になるのが謎。
本日いろいろ活用してみましたが、とりあえず目的の挙動はしていてひと安心です。
10997:2014/01/23(木) 22:40:56.89 ID:iJWTvZ5CP
Automatorの件いいわすれたorz

ファイルの関連付けは「情報を見る」から開くアプリを変えればいいけど、100、200となると
それも面倒。automatorで設定してやれば一発。初めてautomator便利だと思ったよ。
ASでも簡単にできるかな?
110名称未設定:2014/01/23(木) 23:08:22.18 ID:98ELkxSY0
で、>>99はなぜスルー?
11197:2014/01/23(木) 23:14:33.95 ID:iJWTvZ5CP
>>110
それも一緒だと思いましたがVLCとの相違点ってあります?
ISOから直接開けない分だめかなあ、と。
インターフェイスのリモコンパネルは分かりやすいですけど
プレイリストもないですし。簡単な方法があればぜひ。
112名称未設定:2014/01/24(金) 00:23:30.19 ID:n2bhRx060
なんだ結局VLC使うのか、自作アプリとか言うのに期待したのに

だったらその大量の.CDRをDVDimageに変換するスクリプト書いてダブルクリックでVLCで見れるようにした方がよくね?

automatorで設定してやればって
100、200あるisoファイルの「このアプリケーションで開く」を変更してんのか?
113名称未設定:2014/01/24(金) 00:49:36.83 ID:fFagYQQQ0
>>109
スクリプト関係ない話なんだけど、大量のファイルの関連づけを変えるのはFinderでも簡単にできるよ
具体的に言うとファイルを選択した後、右クリックし、オプションを押しながらコンテクストメニューのインスペクタを表示をクリックし、
出てきたメニューから開きたいアプリケーションを選択すればいい。
114名称未設定:2014/01/24(金) 12:16:54.30 ID:9KMDdAgK0
>スクリプト関係ない話なんだけど、

なら書くなよ
115名称未設定:2014/01/24(金) 13:10:36.93 ID:DUlBWNd20
っていうオレかっこいいっw
116名称未設定:2014/01/24(金) 14:05:11.89 ID:pr+p7JhP0
このスレ面白い!
117名称未設定:2014/01/24(金) 14:06:16.14 ID:pr+p7JhP0
誤爆しました
118名称未設定:2014/01/24(金) 15:35:18.89 ID:sYNd//sx0
スクリプトなしでできるものをわざわざスクリプトでやってたらそりゃ指摘もしたくなるだろ
だからって別にスレチじゃないんじゃないの
119名称未設定:2014/01/24(金) 20:22:01.30 ID:2pddWbcv0
つーかインスペクタにしても情報を見るにしてもアプリ選んでから「すべてを変更…」を押す流れは変わらんわけで、
種類の違うファイルならともかくisoだけとかなら1個やりゃ済む話なんでは
まさか100種類の違う形式のファイルって事もあるまいに
120名称未設定:2014/01/24(金) 20:51:33.47 ID:/Vqh8AiQ0
このスレで続ける話じゃねーだろが
121名称未設定:2014/01/25(土) 20:41:18.12 ID:kAuE/WAS0
全く進まないとか無駄な1行レス繰り返すよりはいいんじゃない?
122名称未設定:2014/01/28(火) 13:20:57.62 ID:diN/bixn0
相変わらず牽制しあってるなぁw
凄腕スクリプターがここにいるんかいw
123名称未設定:2014/01/28(火) 13:30:27.29 ID:PsLXEu1h0
っていう俺が凄腕スクリプターってか?
124名称未設定:2014/01/28(火) 16:56:05.43 ID:YtFiVtks0
本当に凄腕なら世話好き以外こんなとこ来る必要ないからな
125名称未設定:2014/01/28(火) 19:17:18.21 ID:diN/bixn0
それもそうだw
ドングリの背比べだぁw
要するにお互い小学生というこっちゃねw
126名称未設定:2014/01/28(火) 22:30:45.45 ID:dF9LzVWf0
ワシも若い頃は人工衛星を制御するAppleScriptを書いてたもんじゃよ
127名称未設定:2014/01/28(火) 22:46:11.92 ID:PsLXEu1h0
なんだ教えてくんか
なんで彼は分をわきまえるとかいう日本語を知らないのだろうか
128名称未設定:2014/01/28(火) 23:24:20.61 ID:diN/bixn0
これ知っているか?
set the justification of paragraph 1 of areaText to full justify
129名称未設定:2014/01/28(火) 23:32:26.32 ID:gnuIluL20
Safariの「環境設定>詳細>アクセシビリティ>これより小さいフォントサイズを使わない」
をアップルスクリプトで制御したいんですが可能でしょうか?
あるサイトで表示メニュー>拡大or縮小が効かないページがあって、
上記の環境設定でしかフォントサイズが変わらないため、スクリプトメニューから切り替えたいと思いまして。。。
出来ればGUIスクリプティングではない方法でやりたいんですが。。
130名称未設定:2014/01/29(水) 09:56:54.72 ID:XgMuODYo0
もしそのページが -webkit-text-size-adjust:none; 指定してて拡大縮小できなくなってるならJavaScriptで変更できるから、スレ的には do JavaScript で行けんじゃないの
ページ見ないとわからんけど
131名称未設定:2014/01/29(水) 16:47:23.09 ID:lxXBhmLk0
ブックマークレットでなんとかなるのでは
ページ見ないとわからんけど
132名称未設定:2014/01/29(水) 16:51:43.34 ID:tctlnn+e0
そのページの右上あたりに文字サイズの拡大縮小ボタンがあるのでは?
ページ見ないとわからんけど
133名称未設定:2014/01/29(水) 18:35:31.88 ID:t0Z341jw0
みなさんありがとう。
そのサイトはstrava.comというランニングやサイクリングのログを共有するサイトで、
登録してログをアップするか、誰かをフォローしないとそのページは見れないんです。
文字サイズの拡大縮小ボタンはないです。
Java scriptでなんとかできるんですかね。。
134名称未設定:2014/01/29(水) 20:41:14.84 ID:yPBhJ8sPP
すみません。どうしても分かりません。
MySQLを使って簡単なデータベースを作ったのですが、
これを他のマシンから操作するAppleScriptってどう書けばいいんでしょう。
サーバーになっているマシンでAppleScriptで操作することはできます。
どなたかヒントいただければ。
135名称未設定:2014/01/29(水) 20:48:00.78 ID:doOQC9kw0 BE:999599235-2BP(0)

PHPを使った方がよいのでは?
136名称未設定:2014/01/29(水) 20:53:10.82 ID:yPBhJ8sPP
>>135
そんなスレチな回答認めないよっっっっっ!!
137名称未設定:2014/01/29(水) 21:03:20.03 ID:9ZdU+vJPP
ほかのマシンから mysqlコマンドでつなげられるのかい。
138名称未設定:2014/01/30(木) 03:36:15.92 ID:7sYynt8F0
リモート AppleEventとdo shell scriptでなんとかなるのでは?
ページ見ないとわからんけど
139名称未設定:2014/01/30(木) 08:49:07.29 ID:zzqchskQP
>>138
それなのか? 今回の研究テーマは。ページ? 意味が分からないが関係ないのでは?
分からないなりに
・リモートAppleEventでサーバーに接続
・リモートからサーバーにAppleScriptでのMySQLでの操作Eventを送信
・サーバーからリモートに結果を返す
とか? まったく未知の世界。curlとGET
140名称未設定:2014/01/30(木) 18:23:44.81 ID:8CyfsSwe0
あなたがMySQLをどのように運用してるか分からんけど
例えば
サーバー側でAppleScriptで操作できるなら
そのスクリプトをスクリプタブルなASOCにして起動しといて
リモートAppleEventでtellで呼び出すのが簡単なんじゃないかな?

結果の取得は、ログを出力するようにしといてweb鯖があるならそこに置いてcurlでデータを取得すればいいとおもう
ログは公開したくないとかだったらDigest認証とか適当につけときゃ良いけど
ローカルのみで確認する用途なら
上で作ったアプリケーションにログ用にSimpleHTTPServerとかの簡易web鯖を、解放してないポート指定して起動するようにしといて、そこに出力すれば良いとおもう
元々データを公開してるならそこから取得すれば良いけど、PHPとか他の言語使ってないって言う事は、公開はしてないぽいか
141名称未設定:2014/01/30(木) 23:46:23.42 ID:zzqchskQP
>>140
なるほど。AppleEvent送信するにも受け手側が必要か。
で引数渡してそいつを操作すればなんでもできるのかな。

いや実際にはPHPで普通に公開してて全部できるんだけどね。

ネットちょっとさまよってたら、サーバー側に受け手としてPHPを
ひとつ仕込んでおき、そこにGETのcurlでアクセス、それを
do shell scriptで拾うのがあったよ。ただ、SQLインジェクションとか
URLエンコードがどーなるのかは不明。でも、できるらしいね。
142名称未設定:2014/01/31(金) 02:06:43.01 ID:q4ztzmWK0
>>141
どの程度の操作をしたいのか分からんけど、データの入力とか展開ならPHP使えるなら適当にapiつくって、curlで操作するのが一番簡単じゃないかな?
てか運用してるなら入力とか抽出のapiはもうあるんじゃない? それ使えば良いと思う
SQLインジェクションはweb上のフォームとかがちゃんと作ってあるなら問題ないでそ
データ入力はcurlで値をポストすれば良いし
URLエンコードはcurlのポストのオプションでやってくれるけど
日本語のデータ入力の場合applescript内の文字コードがutf8だから、
それ以外の文字コードの場合、curlでポストする前にワンラインで文字コード変換しないとUTF8でエンコードしちゃうから
自前で文字コード変換とURLエンコードのハンドラ作っとくのがいいと思う
143名称未設定:2014/01/31(金) 03:58:54.92 ID:q4ztzmWK0
>>141
ごめ
試しにapplescriptだけでリモートやってみたら超簡単だったからサンプル置いとくわ

サーバー側
property cmdlist : {"curl 'http://ip.ossus.ch'", "ifconfig", "sw_vers"}
on cmd(Q)
  set out to do shell script item Q of cmdlist
  return out
end cmd

これを実行後終了しないにチェック入れてremotestって名前でアプリケーションで保存してサーバー側で起動しとく

クライアント側
tell application "remotest" of machine "eppc://user:pass@サーバー側Domain or IP"
  return cmd(3)
end tell

これをクライアント側で実行するとサーバー側のスクリプトが動作してサーバーのOSバージョンがクライアント側に表示される
ちなみに
  return cmd(1) だとサーバー側からグローバルIP返すwebサービスにcurlでアクセスしてサーバーのグローバルIPが表示される
  return cmd(2) だとifconfigね サーバーのローカルのIPアドレスとか、ネットワーク情報が表示される

mysqlはdo shell script で操作してるだろうからdo shell scriptのコマンドリストって形にしてみたけど
細かい命令書き直せば普通に使えるんじゃねリモート
環境設定の共有でリモートアップルイベントオンにしてユーザー登録しといてね。
ちなみにタブを全角スペースにしてるからコピペ注意してね
144名称未設定:2014/01/31(金) 08:18:18.27 ID:uWeNXE6JP
>>143
その実行力感服します。このスレの神は有言実行だった。
PHPで適当にapiつくってcurlのところにGETでSQLぶちこみゃいいのね。
リモートのAppleEventのことも分かりやすいなあ。
これでファイルメーカーバージョンアップしなくてもいいね。
すばらしいの一言。セキュリティのことはまた勉強しないとね。
145名称未設定:2014/01/31(金) 08:26:54.35 ID:uWeNXE6JP
>>143
あ、書き忘れた。ありがとう!!!!
146名称未設定:2014/02/08(土) 15:58:08.45 ID:nsDgn/AA0
なんかここの人たちレベルが高いですね。
質問です。
シェルスクリプトを選択したファイルやフォルダに対して実行する方法ってありますか?
147名称未設定:2014/02/08(土) 16:08:10.74 ID:tRhLBcwSP
>>146
そういう慇懃無礼なのやめようよ。ホメ殺しというか。

do shell scriptで。パスはPOSIX pathで受け渡ししてね。

tell application "Finder"
set thePATH to selection as alias
set thePATH to POSIX path of thePATH
endt tell
set theAnswer to do shell script "ls -a " & quoted form of POSIX path of thePATH
displaydialog theAnswer as Unicode text

とかなんとか。windwosで書いてるので結果どうなるかは知らない。
148名称未設定:2014/02/08(土) 16:48:59.19 ID:3lSTg7G/0
>>146
んじゃ[$ GetFileInfo ]って言う指定したファイルの情報を出力するコマンドを使う例で書くね。

set Q to choose file --ファイルの場所を取得(Macintosh HD:Users:xxx:Desktop:11.jpg)
set Q to POSIX path of Q --POSIX path に変換(/Users/xxx/Desktop/11.jpg)
set cmd to "GetFileInfo " & quoted form of Q --コマンドを作成(ここでdo shell scriptでも良いけど、こっちの方がデバッグしやすい)
set info to do shell script cmd --コマンドを実行
display dialog "Result" default answer info --結果をダイアログに表示
(*結果はこんな感じ
file: "/Users/xxx/Desktop/11.jpg"
type: "\0\0\0\0"
creator: "\0\0\0\0"
attributes: avbstclinmedz
created: 02/08/2014 16:20:16
modified: 02/08/2014 16:21:43
*)


>>147
endt tell になってる
displaydialogにスペースがない
149名称未設定:2014/02/08(土) 17:40:10.80 ID:cWG4pfK10
GetFileInfo ってXcode、の追加のCLIツール、入れないと無いんじゃないの
150名称未設定:2014/02/08(土) 18:05:51.02 ID:iewnsadv0
例だろ
151名称未設定:2014/02/08(土) 18:07:01.62 ID:jmpl7yBh0
Finderで選択したファイル/フォルダに対してなら、Automatorでサービスもなかなか便利。実行そのものはAppleScriptだけど

フォルダ/ファイルの区別がつく(ファイルの種類もちょっとはつく)、コンテキストメニューを選んだ時点で操作対象が決定しているのでスクリプトが終わるのを待つ必要が無い
(スクリプト全てがでなく>>147でいうと set thePATH to selection as alias が実行されるのをだけど)
152146:2014/02/08(土) 18:21:39.04 ID:nsDgn/AA0
みなさん早速ありがとうございます。
147のやり方でできました。
148は自分にはまだ難しすぎです。勉強します。

シェルスクリプトで複数の画像を一発で変換できるので、
勉強がてらApplescriptで実行出来ないかなと色々やってみてるところです。
複数のファイルにたいしてもシェルスクリプトを実行させることは可能なのでしょうか?
あればヒントでも教えてもらえると嬉しいです。
153名称未設定:2014/02/08(土) 18:29:58.97 ID:jmpl7yBh0
普通に引数とか << _END 方式で。do shell script はシェルスクリプトの文字列でしかないので、AppleScriptで長いシェルスクリプトを構築するか、do shell scriptをファイル単位でするかかな
quoted form は便利だから理解した方がいいよ

AutomatorだとAppleScriptを介さずにシェルスクリプトだけでイケるんだが、スレチか
154名称未設定:2014/02/08(土) 20:05:48.20 ID:3lSTg7G/0
>>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
>>154
あ、pngOutPathになってるけど気にしないでね
最初jpgをpngに変化するやつ作ったんだけど分かりづらいから、サイズ変換にした名残です、、、
156名称未設定:2014/02/08(土) 21:00:15.65 ID:RuZJBi5i0
>>154
>--作って思ったけどドラッグ&ドロップはデバッグしづらくて作るの面倒いね

処理本体は別のハンドラにしておいて、
デバッグする時はrunハンドラから適当なエイリアスのリストを渡すようにすれば、
スクリプトエディタでも動作確認できるぜ
ざっくりやるならchoose file/folderの結果がそのまま使える
157名称未設定:2014/02/08(土) 22:26:25.46 ID:tRhLBcwSP
>>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
あ、変数にQって使ったことあったな。ダイアログの質問項目を変数にしたとき、QuestionのQとして
Q1、Q2、Q3とか質問項目作ったことあったなあ、、、、、、。
159146:2014/02/08(土) 22:40:30.76 ID:nsDgn/AA0
>>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
>>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
161名称未設定:2014/02/09(日) 05:17:21.79 ID:G4uzaK290
>>159
画像変換スクリプト作ってみたよ!>>160のAliasListGenハンドラ使ってるから追加してください。
set Convfolderpath to POSIX path of (choose folder with prompt "choose folder")
repeat
display dialog Convfolderpath & "
Please input width" default answer "2000" buttons {"Cancel", "TIFF", "JPEG"} default button 3 with title "Image Conversion"
copy the result as list to {intext, selbutton}
try
if (intext as number) > 0 then exit repeat
end try
end repeat
set OutPath to Convfolderpath
set aliaslist1 to AliasListGen(Convfolderpath)
if selbutton is "JPEG" then
ConvProcess("JPEG", intext, ".jpg", aliaslist1, OutPath)
else if selbutton is "TIFF" then
ConvProcess("TIFF", intext, ".tif", aliaslist1, OutPath)
end if
on ConvProcess(format, inWidth, Extension, itemlist, outpathPOSIX)
set tmpnum to 0
repeat with initem in itemlist --JPEG, PNG, TIFFのみ変換 (日本語環境のみ)
tell application "Finder" to set itemkind to get kind of initem
if itemkind is "JPEG イメージ" or itemkind is "PNG イメージ" or itemkind is "TIFF イメージ" then
set tmpnum to tmpnum + 1
tell application "Finder" to set itemname to get name of initem
set ConvitemPOSIX to POSIX path of initem
set itemname to do shell script "echo " & quoted form of itemname & " |sed -e 's/.[^.]*$//g'"
set outitemPOSIX to outpathPOSIX & "[" & tmpnum & "]" & itemname & Extension
do shell script "sips -s format " & format & " --resampleWidth " & inWidth & " " & quoted form of ConvitemPOSIX & " --out " & quoted form of outitemPOSIX
end if
end repeat
end ConvProcess
162名称未設定:2014/02/09(日) 05:38:49.19 ID:G4uzaK290
文字数制限厳しくて変な英語に変えたりコメントとかエラー処理とか色々端折ってますorz
入力値の全角半角とか処理とか追加すると良いかも

てかぶっちゃけリピート処理だとシェルスクリプトだけの方が処理は早いと思う
フォルダのパスを取得して
cdしてパイプでつないでsips -s format jpeg -Z 2000 *.tif
でまとめて変換した方が速いんじゃないかな。

そえば
tell application "Finder" to set itemkind to get kind of initem と set itemkind to kind of (info for initem)
ってどっちが速いんだろ何回かmsecで時間計ってみたら、後者の方が速い気もしたんだけど、logの表示がうざったいからtellにしました。
あとget kindとかの英語以外での環境での英語表示とかどうやるんだっけ?
これだと環境依存で気持ち悪いなー
163名称未設定:2014/02/09(日) 07:12:57.69 ID:Eetg+bKV0
UTIを使いましょう。

>>154
"JPEG イメージ"は移植性が無い。
>tell application "Finder"
>set itemkind to get kind of Q
>end tell
>if itemkind is "JPEG イメージ" then
if (type identifier of (info for Q) = "public.jpeg") then

>>160
これだと拡張子無しや".jpeg"は拾えない。
>set aliaslist2 to choosefile("jpgとpngだけ", {"jpg", "png"}, true, false)
set aliaslist2 to choosefile("jpgとpngだけ", {"public.jpeg", "public.png"}, true, false)
164名称未設定:2014/02/09(日) 08:47:41.45 ID:G4uzaK290
>>163
choose fileのタイプにtype identifier指定できたんだ なるほどいいね!

そうなのよ、そこ雑で悩んだの環境依存、type identifierで選別はいい感じだね!
指定フォルダの中身全部処理する時はtryで逃げとけば、中にフォルダが入ってる場合とかtype identifier無いからエラーでパスできる
大容量のフォルダにinfo forするとサイズ計算に時間掛かるみたいだから、一石二鳥だね。
うんスバラッ
てかkindをわざわざ英語出力にとか遠回り過ぎた、まぁちょっと英語出力の仕方も知りたいところだけど、グッジョブありがとう!

てことで>>163さんのアドバイスどおり
>>161
tell application "Finder" to set itemkind to get kind of initem
if itemkind is "JPEG イメージ" or itemkind is "PNG イメージ" or itemkind is "TIFF イメージ" then



try
set itemkind to type identifier of (info for initem)
on error
set itemkind to ""
end try
if itemkind is "public.jpeg" or itemkind is "public.png" or itemkind is "public.tiff" then
に変更します。

あと
set OutPath to Convfolderpath
で無駄に変数増やしちゃってるけど、文字数制限で処理を徐々に消していった名残なので適当に名前変えて消してくださいorz
ありがとうございました!
165146:2014/02/09(日) 10:51:43.82 ID:ohdnntp30
>>162 >>163
うわ、すごいな。
まだ試せていないけど、取り急ぎ感謝です。
これをもとに色々勉強できそうです。
ありがとうございました。
166名称未設定:2014/02/15(土) 08:47:51.53 ID:mqfLIl2K0
復旧
167名称未設定:2014/02/19(水) 20:41:23.94 ID:85Ztrva8P
画像に悪用防止で透かしを入れた画像を作りたいのだが、ASでさくっといけないものだろうか。
168名称未設定:2014/02/19(水) 21:54:02.95 ID:Ieto0spB0
シェルスクリプト含ませれば早いだろう
ググって素案できたらまた来いや
169名称未設定:2014/02/21(金) 16:09:03.28 ID:9KWp105h0
前にmac探で質問して見つからなかったので、自分用にapplescriptでこんなの作ってみたから発表してみる。
ざっくり言うと設定した音量以上の入力で、登録したapplescriptを動作させたり
マウスクリックしたりするapplescriptのアプリケーション
α版だけどこんな感じ、右のボタン達はテスト用だから無いです
http://i.imgur.com/BimdMDV.jpg
キー入力するスクリプトを入れると、音でページスクロールできたりする
ちなみに色付きでスクリプトの確認できる
http://i.imgur.com/JyakDsm.jpg
長いコードの場合はスクロールして確認できる
http://i.imgur.com/EY2TIBZ.jpg
ここからセットしたスクリプトをエディターで開けるmenuついてるから、編集して保存すればすぐ適応される
リピート処理のミスとかでデバックでエディターがフリーズしたくない時のテスト稼働とかにも使えるかも
一応エラー表示できる
http://i.imgur.com/4PTrwkn.jpg
applescriptをなんとなく対応
まだaudio levelコマンドしかないけど
現在の音量数値出力できる、音のレベルを使ったスクリプトにつかえるかな?
http://i.imgur.com/pZ0ijkL.jpg

現状applescriptだからかマルチスレッド系の処理でmallocエラーログがでてなんか気持ち悪い、、、
解決策分かる方いますか?
具体的にはNSSound使って音が止まった時とかAVCaptureSessionのセッションを走らせたときとかにでるGC operationなんちゃらです
稼働には問題ないんだけど、logが出て気持ち悪いなと。。。
GCC_ENABLE_OBJC_GCを無くすと出ないんだけど、なんなんだろう?
なんかGCC外すとAutoreleasePoolが使えなかったり、
CFAbsoluteTimeGetCurrentとか一部のメソッドを使うと落ちたりするから不安定そうなんで入れてるけど
いまいちわからない
webkitのやつみたいにログだけ出る無害なバグなのかな?
170名称未設定:2014/02/21(金) 18:36:12.43 ID:Jl0LW+tB0
>>169
Garbage Collection(GC)は、もう使うなだったような
AutoreleasePoolが使えないってのはAutomatic Reference Counting(ARC)がオンになっているんんじゃね。GCとARCは共存できないハズだが共にオンだとGCだけが有効とかかな
GCもARCもオフにしてみるとか
171名称未設定:2014/02/21(金) 21:19:18.60 ID:9KWp105h0
>>170
そうそうGC必須にするとdeprecatedだがらARCに変えろってアラート出る
でもなぜか動作が安定する、GCエラーログ出るけど。。。
ARCはデフォルトで全体でオフになってて試しにONにしてもoffの時と動作は変わりませんでした。
GCオフだと勝手にオンになってのかと思って、個別にCompilerFlagでオフしてみたけど変わらず
CFAbsoluteTimeGetCurrent呼び出すと落ちる以外に
NSTaskでパイプに入ると落ちたり
NSThread使うと処理終了時に落ちる

NSThreadに関して言えばGCオンで動作はするものの、処理終了までメインがかなりの確率でロックされる、たまにロックされないんだけど、
一応NSThreadの isMainThreadで確認するとinitWithTargetで投げた処理は別スレッドになってるみたいなんだけどなんでだろ
ここら辺詳しい方教えてください
172名称未設定:2014/02/22(土) 04:27:05.52 ID:7VQSd7JC0
手持ちのプログラムでちょっと検証してみたら
AVCaptureSessionのstartRunningでGCのエラーログが出るんじゃなくて
SessionのinputsにAVMediaTypeAudioがセットされた状態でstartRunningすると出るみたい
試しにAVMediaTypeVideoでFaceTime CameraをセットしてstartRunningしたら出なかった
もちろんカメラは起動してる
NSSoundの件もあるし音関係を扱うと出る可能性があるかも
やっぱりGCのバグぽい?
それならと思ってaudiotoolboxで鳴らしてみようと適当に書いてみたら、
スタート後少し待ってfreeなんちゃらってでて鳴らなかった、適当だったから書き間違いかもだけど。。。
疲れたからとりまここまで、誰か解決策plz
Mt.lionやMarvでも同じ症状でるのかな  そもそもMt.lionからARC対応したからARCでいけるのか?
NSSoundで音が鳴り終わったらエラーが出るサンプル作ったから、試してみて下しあ
ボタン押すとシステムサウンドが鳴ってエラーがあった場合コンソールに表示されます。
173名称未設定:2014/02/22(土) 04:28:26.91 ID:7VQSd7JC0
property ca : current application
on run
set BK to ca's NSBackingStoreBuffered
tell ca's NSWindow's alloc()
initWithContentRect_styleMask_backing_defer_({{300, 300}, {200, 100}}, 3, BK, false)'s autorelease()
setTitle_("NSSoundTest")
set wind to it
end tell
tell current application's NSButton's alloc()
tell initWithFrame_({{0, 0}, {90, 24}})
setTitle_(" Play ")
setTarget_(me)
setBezelStyle_(1)
setAction_("Play:")
set button to it
setTranslatesAutoresizingMaskIntoConstraints_(false)
end tell
end tell
set conview to wind's contentView
conview's addSubview_(button)
set xx to current application's NSLayoutAttributeCenterX
set yy to current application's NSLayoutAttributeCenterY
set xx_con to current application's NSLayoutConstraint's constraintWithItem_attribute_relatedBy_toItem_attribute_multiplier_constant_(conview, xx, ca's NSLayoutRelationEqual, button, xx, 1, 0)'s autorelease()
set yy_con to current application's NSLayoutConstraint's constraintWithItem_attribute_relatedBy_toItem_attribute_multiplier_constant_(conview, yy, ca's NSLayoutRelationEqual, button, yy, 1, 0)'s autorelease()
conview's addConstraint_(xx_con)
conview's addConstraint_(yy_con)
wind's makeKeyAndOrderFront_(me)
end run
on Play_(sender)
ca's NSSound's soundNamed_("Submarine")'s play()
end Play_
174名称未設定:2014/02/25(火) 09:54:30.60 ID:sBemAXSz0
だ、だれも試してくれてない。。。
OS依存なのかだけでも知りたいな
マウンテンライオンかマベの方いたら、どうかお願いします。
動作反応見る感じAppleScriptエディタだと
標準でGCC_ENABLE_OBJC_GCがrequiredでコンパイルされるみたい。
CFAbsoluteTimeGetCurrent使えるし
エラー出るし、、、

windowとかをわざわざ作らないでchoose from list使って簡略化しました、再生される音も選べるようにしました。
CFAbsoluteTimeGetCurrent使ってタイトルに時間表示してます
ちなみにlionだと
選択したSEが再生され、音が鳴り終わるごとにコンソールにerrログが出力されます。
ログが出るかでないかだけでも教えてもらえれば幸いです

on run
repeat
set nowtime to (current application's CFAbsoluteTimeGetCurrent()) div 1
set SEList to {"Basso", "Blow", "Bottle", "Frog", "Funk", "Blow", "Glass", "Hero", "Morse", "Ping", "Pop", "Purr"}
set selSE to choose from list SEList with prompt "再生するSEを選択" OK button name "Play" with title nowtime
if selSE is false then
quit me
else
my play(item 1 of selSE)
end if
end repeat
end run
on play(SEName)
current application's NSSound's soundNamed_(SEName)'s play()
end play
175名称未設定:2014/02/25(火) 11:13:11.62 ID:PY34aknD0
AppleScriptObjCでGCだのARCだのっつうからXcodeでかと思ったらAppleScript Editorでかよっ、しかもなんかちょうちょっと古いOSかよっと思った
ID: 7VQSd7JC0 から ID: 9KWp105h0 へのかと思ったしな

とりあえず、Mountain Lionでは何も問題無く/出なく ブオン って鳴る>>173し、何も問題無く/出なく選んだのが鳴る>>174

古いOSのGC/ARCは
http://piyocast.com/as/archives/2283
らしいよ。Xcodeでの話しのようだけどな
176名称未設定:2014/02/26(水) 05:35:05.90 ID:6RYVbRxr0
>>175
ありがとー!
あ、そのふたつ私です;
AppleScript Editorでアプリ作るってなんか縛りプレイみたいで面白いですよね!

コンソールに
malloc: *** auto malloc[]: error: GC operation on unregistered thread. Thread registered implicitly. Break on auto_zone_thread_registration_error
でないですかやぱり
てことはwebkitと同じGCのバグなのか
しかも今の所lionでAppleScriptObjC.framework使って音関係のメソッド使ったときのみぽいのかな

メモリリークの前にGC必須にしないと即落ちするメソッドがあるので、それらがMountain Lionだとどんな感じになるのか気になる所
でも下位互換考えたらGC必須は外せないか、落ちたらだめだし
エラーログは、ただ表示されてるだけのバグってことで、無視で大丈夫そうかな 気持ち悪いけど。。。
ちなみにXcode上でrequiredでもsupportedでも動作は変わらない感じ
applescriptやってる人でマベにしてる方はいないかな?

そえばAppleScript Editorだけでもスクリプタブルなアプリ作れるってことに気づいた
177名称未設定:2014/02/28(金) 13:09:21.15 ID:/MfpeEpD0
NSSoundを使った、lionでエラーの出るapplescriptのソースで10.6バージョン作って試してみたら、エラーログ発生しませんでした。

それでもう少し細かい検証をしてみました。
CFAbsoluteTimeGetCurrentをapplescriptで直接書くとGCオフの場合クラッシュします。
そこでCFAbsoluteTimeGetCurrentをobjcで表記してapplescriptでそのコードを呼び出す方式にした場合、GCオフでもクラッシュせず機能しました。
これでGCオフで使えないと思われていたメソッドはカバーできそうです。(なぜクラッシュするかは、分かりません)

それと同じ事をNSSoundでも行って見て、気づいた事がありました、
なんとGCオンだとobjcで書いたコード(objcのみで書いたアプリ)でも同じエラーが出るようです。

用はGCをオンにすると、一部のメソッド(現状では音関係)を使うとapplescript関係なくエラーが表示されるようです。
このバグはマーベリックスでもあるみたいなんだけど、誰か検証してくれないかな?>>174あたりのコードをAppleScriptエディタにコピペしてもらえれば
lion以降でもAppleScriptエディタでのコンパイルはデフォでGCオンだと思う

applescriptobjcはGCをオンにしないとメモリがめちゃくちゃ消費されちゃうみたいだから、10.8以前は、GCをオンにするしかないと言われているけど、
ドラッグイベント関連でもGCオフで落ちる事があったから、もしARCでクラッシュが改善されてないならGCオンにするか、
ほとんどのコードをobjcで書かないと行けないことになり、だったら最初からobjcで書けよってことになっちゃう

試しにGCオンで
音を扱う部分のコードを分けてcompilerFlagを-fno-objc-gcにして見たけどGCエラー表示出ました。
GCは公式で使うなって言われてるだけあって、エラーが改善される事は、ないだろうな

ただこのエラー表示での実害は今の所ないのが救い
applescriptで開発してる方はあまりいないと思うけど、今後互換性確認で同様のエラーが出た時の、参考になれば、、、
GCエラーに関して言えば、もうapplescriptの範疇外なのでこれ以上検証しても仕方なさそう
むしろクラッシュの方が問題
Mt.lion機作ろうかな
178名称未設定:2014/03/26(水) 18:20:55.71 ID:8j8sFi4/0
display notification "sage" with title "Mavericks" sound name "beep"
179名称未設定:2014/03/29(土) 09:04:02.90 ID:NNl60dr90
MacOSX 10.8.5です。
FinderにてFinderウィンドウをリスト表示で使用しています。

スクリプトエディタで記録ボタンを押したのち、各リスト項目の幅を調整して記録したのですが、
追加日も名前も同じ「id name」と記録され、
実行してみると名前に二回実行されてしまいます。

当時10.6でも何かが同様だったのを思い出し
やってみたら、種類がid nameでした。
こちらは10.5の記録でkind nameと判明でき、10.6にも通用しましたが、
10.5には追加日なんてありません…。

Finderをスクリプトエディタにドロップし調べたところ
name (name column/以下追加日作成日サイズ種類ラベルバージョンコメント とありました。

これは完全に無理で終了なのでしょうか…。
私は難しい事はできませんが、これはいくらなんでも見捨てられ感を感じます。

Finderにてリスト表示の幅を調整するにはどうしたらいいのでしょうか?
アドバイスなどよろしくお願いします。
180名称未設定:2014/03/29(土) 16:08:35.33 ID:e5Jihre30
とりあえず動いた
property vwList : {{v:"name", w:300}, {v:"dateAdded", w:200}, {v:"label", w:150}}
-- vは{"name", "dateModified", "dateCreated", "dateLastOpened", "dateAdded", "size", "kind", "version", "comments", "label"}のどれか。下記(*1)を参照。
on getW(argV)
repeat with itemX in vwList
if v of itemX is argV then
return w of itemX
end if
end repeat
return 0
end getW
tell application "Finder"
set current view of front window to list view
end tell
tell application "System Events"
tell application process "Finder"
tell outline 1 of scroll area 2 of splitter group 1 of front window
--(*1) vに取りうる値は下記文にて表示。
--value of attribute "AXIdentifier" of every column
repeat with x from 1 to (count of column)
tell column x
set v to value of attribute "AXIdentifier"
set newW to my getW(v)
if newW is not 0 then
set {w, h} to size
set size to {newW, h}
end if
end tell
end repeat
end tell
end tell
end tell
181名称未設定:2014/04/01(火) 01:58:03.39 ID:ynLRXj0p0
>>180
ありがとうございます!バッチリでした!
でも、なぜ記載されていない項目をコントロール出来るのか、
後学のためにも概略でいいので解説いただけませんでしょうか。
ふしぎでしょうがないです。
182名称未設定:2014/04/15(火) 17:50:21.49 ID:SZkyhnNr0
OS X (10.9.2)のターミナルからosascriptで動かそうとしているんですが、
以下のパターン1と2では
execution error: CotEditor got an error: Can’t get contents of selection of document 1. (-1728)
というエラーがでてしまいます。
パターン3だと上手く動くのですが、
パターン1と2でエラーになってしまう理由はなんなのでしょうか?
最終的にはパターン1の形で動かそうとしています。


【パターン1:エラー】
#!/usr/bin/osascript
set activeApp to path to frontmost application as text
tell application activeApp
set note_text to contents of selection of front document
end tell
return note_text

【パターン2:エラー】
#!/usr/bin/osascript
set activeApp to "Macintosh HD:Applications:MustApp:CotEditor.app:"
tell application activeApp
set note_text to contents of selection of front document
end tell
return note_text

【パターン3:成功】
#!/usr/bin/osascript
tell application "Macintosh HD:Applications:MustApp:CotEditor.app:"
set note_text to contents of selection of front document
end tell
return note_text
183名称未設定:2014/04/15(火) 18:37:52.52 ID:fqFcyd/l0
>>182
文字列リテラルではない、
tell application アプリケーションバンドルへのpath
は、正式にはサポートしていないとしか見えないねえ

frontmost applicationにはなら
tell application "System Events" to set activeApp to name of application processes whose frontmost is true
tell application activeApp
でいいんじゃないの
184名称未設定:2014/04/15(火) 18:43:07.83 ID:fqFcyd/l0
>>183
×
tell application "System Events" to set activeApp to name of application processes whose frontmost is true

tell application "System Events" to set activeApp to item 1 of (get name of application processes whose frontmost is true)
185名称未設定:2014/04/15(火) 19:17:18.30 ID:SZkyhnNr0
>>184
早速ありがとうございます。
>>184でもダメでした。
set activeApp to "CotEditor"
もダメで、変数を使うと全てアウトのようです。
一応class of activeAppでパターン1と2の型を調べてみましたがtextでした。
186名称未設定:2014/04/15(火) 20:04:50.33 ID:fqFcyd/l0
>>185
ちなみにTerminalでやれば
tell application "System Events" to set activeApp to name of application processes whose frontmost is true
は、Terminalだよ。前のdelay入れて、その間にCotEditorを表にしてってしてるんだよね?
187名称未設定:2014/04/15(火) 20:07:12.17 ID:fqFcyd/l0
>>186
×前にdelay入れて
○前のdelay入れて

ああ、
set activeApp to "CotEditor"
もダメなのか。んー、そうだっけ
188名称未設定:2014/04/15(火) 20:12:34.56 ID:SZkyhnNr0
>>186
説明してませんでしたが、
TotalTerminalを使って
Terminalを呼び出してもactivateしないようにしています
189名称未設定:2014/04/15(火) 22:31:26.66 ID:fqFcyd/l0
>>188
どうもCotEditor側の問題のような
documentのプロパティのアクセスで、Text Suiteにはアクセスできるが、CotEditor suiteにはことごとく失敗する
なんで application リテラルと変数 で、CotEditor内の処理に関係するのかわからんけど

contents of selection は CotEditor 独自なんだよね?
telll application "CotEditor"
で、いいんでないの?
190名称未設定:2014/04/15(火) 23:01:57.14 ID:WdFslrQw0
この形でもよければ(うちは10.8.5だけど)

【パターン1、改】
#!/bin/sh
activeApp="`
osascript - <<EOS1
set activeApp to path to frontmost application as text
EOS1
`"
osascript - <<EOS2
tell application "$activeApp"
set note_text to contents of selection of front document
end tell
return note_text
EOS2

【パターン2、改】
#!/usr/bin/osascript
set activeApp to "CotEditor"
using terms from application "CotEditor"
tell application activeApp
set note_text to contents of selection of front document
end tell
return note_text
end using terms from
191名称未設定:2014/04/15(火) 23:48:23.27 ID:SZkyhnNr0
>>189
activeAppを使いたい理由はこんな形を想定していたからです。
tell application activeApp
if activeApp = "CotEditor" then
else if activeApp = "TextMate" then
else
end if
end tell

とりあえずは、ifを外側にもってくれば動きそうです。
if activeApp = "CotEditor" then
tell application "CotEditor"
end tell
else if activeApp = "TextMate" then
tell application "TextMate"
end tell
end if

>>190
ありがとうございます。
勉強になりました。
もう少し試行錯誤してみようと思います。
192名称未設定:2014/04/24(木) 21:02:35.85 ID:lnhClB9r0
iPhoneでエロ画像保存→フォトストリームでiPhotoライブラリに追加されたエロ画像を手動で外付HDDに移動させてるんだけど、移動させた後iPhotoライブラリのエロ画像+フォトストリームのエロ画像+iPhoneのエロ画像を消すのが地味に面倒くさい。
iPhoneは仕方ないとして、iPhotoで選択した画像を移動→選択した画像+フォトストリーム上の同一ファイルを削除させるようなスクリプトは可能です?
ちなみにautomatorだったり直接iPhotoライブラリフォルダ内の画像を移動させても、iPhoto上にサムネイルが残ってしまいます...
193名称未設定:2014/04/24(木) 23:10:53.17 ID:hXjbnSYt0
>>192
そんな面倒なことしなくてもiPhoneで保存→別Appで管理→フォトストリームから削除
じゃだめなのか?
外付けに移動させてるあたりファイル単位で管理したいようだし、それなら相応のApp使った方がいいのでは
194名称未設定:2014/04/24(木) 23:11:36.18 ID:hXjbnSYt0
補足、フォトストリームは外部Appから管理しづらいので収集から別Appでやったほうが効率的だ
195名称未設定:2014/04/26(土) 18:19:15.04 ID:HG5IzbCx0
>>191
変数を中身に置き換える前に辞書との付き合わせをやってるからだろうね
tell以下をrun scriptでやれば変数処理を先にできるけど、
TextMateとやらとその後の処理が違うのなら>>191みたく直書きで分けた方がスッキリするんじゃないの
196名称未設定:2014/04/26(土) 21:26:44.17 ID:vKs6oC1D0
最近書いてなかった。昨日ちょっと書いたけど、
なんかVBはおぼつかないけど、ASはすらすら書けた。
こんな便利な言語、Mac使う人はみんな使えばいいのにね。
なんでこんなに普及しないんだろ。
197名称未設定:2014/05/14(水) 22:03:09.50 ID:DYqCOVee0
名刺を黒い板の上でデジカメで撮影したのが1000枚くらいあるんだけど、
黒い部分がどうも気になるのでトリミングしたい。
しかし、適当に撮影したものなので位置は微妙にばらばら。
すべての画像から名刺部分だけをトリミングするスクリプトって
なんかアイデアある? WinだったらImageTrimmerってのでできるみたいだけど。
Photoshopでなぜかうまく自動で切り抜きができない。
198名称未設定:2014/05/14(水) 22:28:21.93 ID:UQ+SYzM/0
>>197
できないとは
199名称未設定:2014/05/15(木) 05:20:43.79 ID:zC936+D10
>>197
http://i.imgur.com/BojwvPN.jpg
四角の名刺しか無理だけど、画像の色の境目をスキャンして点a、bの座標を取得すれば
θ=atan(y/x)で角度から傾きを補正できる
あとは点a、cの座標で長方形に切り抜けばいいんじゃないかな。
そのままだと画像のサイズがバラバラになって気持ち悪いから、
縦か横の最大サイズ指定してそのサイズにリサイズするといいと思う。
200名称未設定:2014/05/15(木) 21:47:25.56 ID:60RgR0or0
>>198
なんかネットに書いてあるように
画像開く
メニューから「トリミング」
オプションを指定
、、、、、、で出来なかったけど、トリミングする前に余黒の部分意外を
選択せんといかんのかな? ちょっとすぐには試せないけど。

>>198
画像の色の境目をスキャンって意味がわかりません。
図のaとbの座標をどう検出する?
てか、基本GUIスクリプティングで傾き補正すればいいような気はするけど。

もうひとつ、黒い板が真っ黒でなくムラがちょっとあって、マジックワンドで
余黒部分を一括選択とかできない(ASで同様のことできるのかわからないけど)
ほぼ初めてPSでASやってみようと思ってるけど、やっぱ画像いじるような処理は
なかなか難しいわ。苦戦中
201名称未設定:2014/05/16(金) 08:37:55.51 ID:qCvHB/PF0
Xcode で、 AS で TableView にデータを追加する方法おしえてください。すごく単純な質問で
すみませんが、ググってもうまくいきません。
また、Xcodeでの使い方をまとめてあるサイトがあったら教えてください。
tell aTextView to setStringValue_(strVal)
を調べるのに丸一日かかったので、、
202名称未設定:2014/05/16(金) 09:05:53.87 ID:5Z546CfG0
>>201
海外にASOCの電子書籍あるよ! 買えばすぐに分かる。
やるつもりなら買ってね。3000円くらいだったかな?
買えば基礎がわかり、そうするとWEBにある情報が活用できる。
ぴよさんのところに情報があったような。
203名称未設定:2014/05/16(金) 09:34:00.84 ID:LWnNIW3E0
>>201
簡単な方法だと
xibでArray Controller追加して
Content Arrayにリスト型のpropertyをBinding
missing value の適当な変数(theArray)にArray Controllerを接続

Object ControllerにKey追加してTableViewのColumnのValueに
Bind to Array Controller で
Controller Key をarrangedObjectsにして
Model Key Path に追加したKeyを書き込む
これでxibの準備おk
新たにrowpartってクラス作ってそれのpropertyとKeyが連動する
例えば
set newobj to current application's rowpart's alloc's init()
theArray's addObject_(newobj)
他にkeyを変数名にしたレコードを追加するだけでも、列に追加できたと思う
でも違うクラスで管理した方が動的に管理しやすいからおすすめ
204名称未設定:2014/05/16(金) 21:56:27.55 ID:DGo5mYXH0
なんかASOCでsandboxできるようになってた。俺もMacAppデビューか?
205名称未設定:2014/05/17(土) 18:46:23.15 ID:iUPgYNrF0
IllustratorCS5なんですが、前面へペーストってAppleScript上でできないですかね?
ライブラリ見ても普通のpasteしかなかったもので・・・
206名称未設定:2014/05/18(日) 07:28:20.66 ID:SZDwTVIE0
GUIスクリプトでいけんじゃね?
207名称未設定:2014/05/18(日) 12:23:40.65 ID:1SamfBSc0
あ〜なるほど
そんなこともできるんですね
元座標を取得して〜とかややこしいこと考えてました
ありがとうございます
208名称未設定:2014/05/21(水) 08:25:30.47 ID:gZlbtxpxi
AppleScriptエディタの背景は変えれないのでしょうか?
黒にしたいんですけど
209名称未設定:2014/05/29(木) 19:59:33.42 ID:8Urv7sLM0
教えてください
先日10.8.5から10.9.3に上げたところ、10.8.5のAppleScript EditorのCocoa-AppleScript Appletテンプレから作ったアプリがクラッシュするようになってしまいました
アプリは単純で、通知センターに通知を出す、通知がクリックされたら再処理する(a)、スリープから復帰したら再処理する(b)、程度のものです
クラッシュログを見ると、(a)や(b)用に設定したデリゲート、オブザーバのメソッド呼び出しで、メソッドが見つからないと言っているようです
とりあえず10.9.3のAppleScript Editorで作り直してみましたが変わりません

前・現スレを追ったりググったり、この一件 https://discussionsjapan.apple.com/thread/10139456 は見つかりましたが、解決していないようです(クラッシュログが似ているので同様の原因と思います)
10.9ではこう直す必要があるなど、お分かりでしたら教えてください

(続く)
210名称未設定:2014/05/29(木) 20:00:20.21 ID:8Urv7sLM0
再現スクリプト
on run
my setWake()
my putNotification()
end run
on wake:aNotification
NSLog("%@", "wake_")
end wake:
on setWake()
tell my NSWorkspace's sharedWorkspace()'s notificationCenter()
addObserver_selector_name_object_(me, "wake:", "NSWorkspaceDidWakeNotification", missing value)
end tell
end setWake
on putNotification()
set uNotification to my NSUserNotification's alloc()'s init()
tell uNotification
setTitle_("Title")
setSubtitle_("Subtitle")
end tell
tell my NSUserNotificationCenter's defaultUserNotificationCenter()
setDelegate_(me)
deliverNotification_(uNotification)
end tell
end putNotification
on userNotificationCenter:aCenter didActivateNotification:aNotification
NSLog("%@", "activate")
end userNotificationCenter:didActivateNotification:

(続く)
211名称未設定:2014/05/29(木) 20:01:12.23 ID:8Urv7sLM0
(a)のクラッシュログの抜粋(クラッシュは通知が出てすぐ起きる)
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000018

Application Specific Information:
objc_msgSend() selector name: respondsToSelector:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff91b30097 objc_msgSend + 23
1 com.apple.Foundation 0x00007fff90465b1c -[_NSConcreteUserNotificationCenter _sendDelegateMessage:sendToAppDelegate:withNotificationFromMessage:] + 52
2 com.apple.Foundation 0x00007fff904665ca __54-[_NSConcreteUserNotificationCenter _serverConnection]_block_invoke_2 + 199

(b)のクラッシュログの抜粋((a)を設定しないようにし、スリープから復帰したとき)
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000018

Application Specific Information:
objc_msgSend() selector name: wake:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff91b30097 objc_msgSend + 23
1 com.apple.CoreFoundation 0x00007fff8d61fe0c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
2 com.apple.CoreFoundation 0x00007fff8d5138dd _CFXNotificationPost + 2893
3 com.apple.Foundation 0x00007fff9020c7ba -[NSNotificationCenter postNotificationName:object:userInfo:] + 68
4 com.apple.AppKit 0x00007fff94bb949c powerSubsystemCallback + 125

(以上)
212名称未設定:2014/05/30(金) 16:41:48.89 ID:w2GSLBfm0
上記で質問した者ですが、とりあえず解決できたっぽいです

参照ページ ttp://macscripter.net/viewtopic.php?id=42087
参照スクリプト ttp://macosxautomation.com/lion/applescript.html の Applet with Progress Window

再現スクリプトを下記のように分割し、修正します
main.scptの内容
on run
set mySubScpt to my subScpt's alloc()'s init()
tell mySubScpt
setWake()
putNotification()
end tell
end run
(続く)
213名称未設定:2014/05/30(金) 16:42:24.82 ID:w2GSLBfm0
sub.scptの内容(CocoaAppletAppDelegate.scptと同じ階層に置きます)
script subScpt
on wake:aNotification
NSLog("%@", "wake_")
end wake:
on setWake()
tell my NSWorkspace's sharedWorkspace()'s notificationCenter()
addObserver_selector_name_object_(me, "wake:", "NSWorkspaceDidWakeNotification", missing value)
end tell
end setWake
on putNotification()
set uNotification to my NSUserNotification's alloc()'s init()
tell uNotification
setTitle_("Title")
setSubtitle_("Subtitle")
end tell
tell my NSUserNotificationCenter's defaultUserNotificationCenter()
setDelegate_(me)
deliverNotification_(uNotification)
end tell
end putNotification
on userNotificationCenter:aCenter didActivateNotification:aNotification
NSLog("%@", "activate")
end userNotificationCenter:didActivateNotification:
on NSLog(fmg, msg)
do shell script "syslog -s -l Notice " & msg
end NSLog
end script

(以上)
214名称未設定:2014/06/07(土) 06:47:40.02 ID:K4QUfk3I0
なんかさ、お手製のASOCアプリで、テキストファイル(具体的にはHTMLファイル)を
動的に作成しているんだけど、おなじみのカタカナ濁点問題でsqliteからデータがヒット
しなかったため、do shell script iconvで文字コード変換する仕組みを試したら、
その後、そのマシンでは全部文字化け???????とかするようになってしまった。
元に戻したつもりだが、それでも文字化けしっぱなし。他のマシンで動かすと
普通に表示される。これ、何がおかしくなってしまったのだろう? 皆目検討がつかない。
215名称未設定:2014/06/07(土) 16:24:00.67 ID:zIxkH1WO0
>>214
>>そのマシンでは全部文字化け???????とかするようになってしまった。
なにが文字化けしたのか、テキストファイルなのか、ブラウザなのか、UIとかテキストが使われている所すべてなのか?

作成したHTMLの文字コードは、確認した?

カタカナ濁点はis inとか使って、どうにかしたような気がする
216名称未設定:2014/06/10(火) 14:31:45.38 ID:TLtyEFvp0
OSX 10.10にはJavaScriptのOSA componentが追加される。
JavaScript for Automation Release Notes
https://developer.apple.com/library/prerelease/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/index.html
これってScript Debuggerを出してるLate Night Softwareが以前配布してたJavaScript
OSAの焼き直しだね。Objective-C Bridge機能は新しいけど。
以前はAppleScript以外にもOSA componentはいくつもあったのに廃れてしまったけど、
これを機にまた色々出ると良いね。
217名称未設定:2014/06/11(水) 22:21:00.84 ID:WohYruh00
SwiftってASOCに影響あるんだろうか?
218名称未設定:2014/06/12(木) 22:47:56.02 ID:5DhLMxc40
全く無いと思うよ
219名称未設定:2014/06/13(金) 00:37:42.31 ID:5iWW/8Q60
影響は無いだろう。ただ、Swift Script Editorが提供されiOSで動く事に・・
220名称未設定:2014/06/13(金) 01:29:06.16 ID:BH+9QlRy0
個人的にはVB VCとかObj-Cとか扱えないからSwiftは助かるわ。
なんかビジュアル的にどうのこうのするのは苦手。

プログラムは手打ちだろjk
221名称未設定:2014/06/13(金) 23:16:46.98 ID:7WuVEZau0
質問です
OSは10.9で、実行環境はAutomatorによるサービス内の「AppleScriptを実行する」です。

以下のようなスクリプトで、選択したテキストをSafariで開いたページ(hoge)のテキストフィールドに入力しようとしています。
しかし、テキストに改行が含まれているとうまくいきません。解決法を教えてください。

on run {input, parameters}
tell application "Safari"
make new document with properties {URL:"hoge"}
(省略)
do JavaScript "document.getElementsByName('text')[0].value = '" & input & "'" in document 1
end tell
return input
222名称未設定:2014/06/14(土) 08:54:27.08 ID:BqgujY2d0
>>221
文字列が途中で分断(改行)されるから、JavaScript文法エラーになるんじゃね
改行毎の文字列に分けてJavascriptで結合するとか、URLエスケープとかで1行にしてJavascriptで戻すとかかなあ

set urlEncodedInput do shell script "/usr/bin/php -r 'echo trim(urlencode(" & "¥"" & quoted form of input & "" & "¥"));'"
do JavaScript "document.getElementsByName('text')[0].value = decodeURIComponent( '" & urlEncodedInput & "');" in document 1
なんて
223名称未設定:2014/06/14(土) 18:25:41.63 ID:6HYvVvD80
>>220
そういう意味合いではObj-Cと大差無いよーな?
224名称未設定:2014/06/14(土) 20:01:40.28 ID:ZFqWjo7C0
>>223
多分IBのbindingとかのこと言ってるんだろうけど、扱えないって言ってるから、そんな言えないけどさ
全部コードで出来るのにな。てかswiftもbindingって意味ならマウスでドラッグして線繋ぐ所は、同じなのに...
225名称未設定:2014/06/30(月) 00:54:26.49 ID:IeiIh5C50
特定のデスクトップを指定して、ウィンドウを再配置することは可能でしょうか?

デスクトップというのは、トラックパッドを3本指か4本指左右スワイプできりかえるものです。

Macbook Air を外部ディスプレイにつないだとき、
Air 本体のディスプレイのデスクトップ1 にクローム、
Air 本体のディスプレイのデスクトップ2にファインダー2つ、
外部ディスプレイのデスクトップ3 にテキストエディタ
という風に適切なウィンドウリサイズで再配置したいのです。
226名称未設定:2014/07/03(木) 11:46:09.68 ID:9XALmAAL0
何もしないアプリケーションをデスクトップの数だけ作って
Dockで各デスクトップに割り当てておき
それを実行した後で目的のアプリで新規ウィンドウを開けばいいんじゃないでしょうか
227名称未設定:2014/07/03(木) 12:57:14.43 ID:Aqyg/V0F0
デスクトップの切り替えを試行(キーボードショートカットで ^1 ^2 が定義されているとき)

tell application "System Events"
delay 1
key code 19 using control down -- switch to desktop 2
delay 1
key code 18 using control down -- switch to desktop 1
end tell
228名称未設定:2014/07/03(木) 16:31:10.31 ID:AqXSO5JN0
>>227
目からうろこです。
そのデスクトップ切り替えのショートカットあるの忘れてました。
スワイプでデスクトップ切り替えてたので、環境設定でこの切替ショートカットのチェックマーク外してました。
229名称未設定:2014/07/05(土) 12:12:19.68 ID:YyTe2e2J0
ASは幸せでいいなあ。スクリプト書いてて楽しいもの。
230名称未設定:2014/07/15(火) 03:19:28.79 ID:wYxshpyA0
選択範囲のテキストを (* *) で囲みたいのですがうまく行きません。

tell application "System Events"

set oriClip to the clipboard

keystroke "x" using {command down}
set the clipboard to "(*" & (the clipboard) & "*)"

log (the clipboard)

delay 0.5
keystroke "v" using {command down}

set the clipboard to oriClip

end tell
231名称未設定:2014/07/15(火) 04:13:55.22 ID:jjZPgGYM0
直接の答えじゃないが
AppleScriptエディタで右クリックで出てくるComment Tags
(実体は /Library/Scripts/Script Editor Scripts/Comment Tags.scpt )
で出来るよ
232名称未設定:2014/07/15(火) 05:17:17.81 ID:MpU9ZduJ0
--これでいいのかな? 実際にはペーストしたいアプリを最前面に出したりしないとダメだろうけど…

tell application "System Events"

set oriClip to the clipboard

keystroke "x" using {command down}

set copiedText to (the clipboard)
set the clipboard to "(*" &amp; copiedText &amp; "*)"

log (the clipboard)

delay 0.5
keystroke "v" using {command down}

set the clipboard to oriClip

end tell
233名称未設定:2014/07/15(火) 09:36:24.47 ID:GUZrA3CI0
Automatorでサービス、選択したテキストを入力にして

on run {input}
set input to {"(*" & input & "*)"} as text
return input
end run

こういうのを登録して使ってる。
234名称未設定:2014/07/15(火) 14:07:44.75 ID:gBz1a97Zi
何でか知らんが set the clipboard した後に keystroke でペーストすると更新前の内容
になっちまうけど、
run script か do shell script で迂回してやればいけそう
あと keystroke してから実際にカットorペーストされるまで多少タイムラグがあるみたいなんで、次の処理が早すぎると上手くいかない

なのでこんなんとか

set oriClip to the clipboard
tell application "System Events"
keystroke "c" using command down
do shell script "printf '(*%s*)' $(pbpaste) | pbcopy"
keystroke "v" using command down
end tell
delay 0.5
set the clipboard to oriClip

環境によっては do shell script の前にも delay 入れんとダメかも
カット"x"かコピー"c"かはお好みで
235名称未設定:2014/07/15(火) 14:24:08.42 ID:gBz1a97Zi
スクリプトエディタ限定ならこっちの方が早くて確実

tell application "AppleScript Editor"
tell selection of front document
set contents to "(*" & contents & "*)"
end tell
end tell
236名称未設定:2014/07/15(火) 21:26:11.16 ID:wYxshpyA0
/* >>230 です。
コメント、ありがとうございます。
こんなにいっぱいコメントつくとは思いませんでした。
*/
237名称未設定:2014/07/15(火) 21:36:14.73 ID:UTRb/ZIa0
--困ったらまた来んしゃい
238名称未設定:2014/07/16(水) 01:50:25.47 ID:dEYdlhmW0
(*
そえばapplescriptobjc用にそんなやつ作ったな
xcode上でまとめてコメントにしたり解除したりするのが面倒くて
最初はサービスでやってた気がする、テキスト選択して右クリックで
コメントだったらコメントタグ抜いて、違ったらコメントタグ挿入してたわ

スクリプトエディタなら標準で選択テキストをコメントにするやつ入ってたから、それ参考にした気がする
*)
239名称未設定:2014/08/16(土) 05:41:06.92 ID:998pTkUY0
スクリプト作れもしない奴に
「このスクリプト、壊れてるね」
と言われた。ちょっと処理に時間がかかるだけなんだけど、
それじゃあ手作業でやってくれ、とは言えず。
時間がかかる処理してるときに処理してるのをわかるように
するにはどうすりゃいいんだろう。
プログレスバーなんて出せるんだっけ?
240名称未設定:2014/08/16(土) 07:24:26.40 ID:k1f6Yzfu0
前々スレ
http://anago.2ch.net/test/read.cgi/mac/1256127156/
の937からsafariを利用してプログレスバー出す方法があるよ。
全体の処理数が把握できないと無理だけど
241名称未設定:2014/08/16(土) 08:19:41.01 ID:koeiqCLv0
>>240
へえーこんなのがあったんだ
試してみたがおもしろいw
ブラウザ常に立ち上げてない自分にとっては実用的じゃないけどいいね
>>239
自分の場合はよくgrowl通知を使ってる
ふだんは処理開始と処理終了でnotice入れる
時間かかるような処理なら上のプログレスバーの人と同じように
処理開始したファイル名などで通知している
最近まで10.6だったので通知センターへの移行はまだだが
たぶん通知センターでも同じことできるんじゃないかな
242名称未設定:2014/08/21(木) 10:29:09.55 ID:8GufB5J50
通知センターに/////な感じでバー作って無理やり表示してる。
ただ処理が早いと通知が出ないので、前回表示したときから一定時間経ってたら
表示する、みたいな処理入れてる。
243名称未設定:2014/08/21(木) 16:14:49.78 ID:qhPq6JfD0
全くわからないんで教えてほしいんですが、
画面解像度を変更するAppleScriptを教えてほしいのですが、どなたかコードを教えていただけませんか?

最終的に使い方はAutomatarのアプリケーションにして必要があればアプリをダブルクリックして瞬時に変更したいんです。
244名称未設定:2014/08/21(木) 16:19:28.01 ID:eHJIQPJB0
>>239
ProgressBar表示するappletとかOS9時代からあるけど、入れても結局ウザくて使わないな。
自分の用途ではscriptの終了や経過知りたい場合は音で十分。
do shell script "afplay /System/Library/Sounds/Hero.aiff"
を最後に置いたり、音声で知らせたりする。
repeat with i from 10 to 90 by 10
  say quote & i & "%" & quote
end repeat
say "done!"
245名称未設定:2014/08/21(木) 18:24:50.87 ID:/YoxOgpZ0
>>243
http://hints.macworld.com/article.php?story=20040908141042786
csreenがMavericksで動くのか試してないけど
246名称未設定:2014/08/21(木) 18:38:10.22 ID:87bgOWlk0
>>243
途中まで
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.displays"
end tell
tell application "System Events"
tell process "System Preferences"
tell window 1
tell tab group 1
click radio button "Display"
tell radio group 1
click radio button "Scaled"
end tell
tell scroll area 1
tell table 1
select row 2
end tell
end tell
end tell
end tell
end tell
end tell
247名称未設定:2014/08/21(木) 18:47:50.56 ID:DwsP4u890
お二人さんレスどうも。

結構大変なコードが必要なんですね。
自分には難しいですがリンク先とレスいただいたコードを参考に駆使してみます。
ありがとうございました。大変助かりました。
248名称未設定:2014/08/23(土) 11:48:55.71 ID:kTGtbK/30
>>246
GUIスクリプトでなんでもできる! と思う反面、けっこうげんなりするよなー。
特にボタン、タブグループ、などGUI部品を指定するのが面倒。
名前ついてないような部品もあるみたいだし。button 1 とか button 2とか
249名称未設定:2014/08/24(日) 00:54:03.50 ID:Unbsppbb0
そんなあなたに Accessibility Inspector
250名称未設定:2014/08/24(日) 09:47:45.49 ID:QnD6/8Qu0
>>249
そりゃ知ってるよ。でも使いにくくない? ただの戯言だけど。
見るとげんなりするんだよな。もっと簡単にできる手法とか
手順化されてるといいんだけどなー。
操作したいGUIにポインター合わせてF7でロックして確認、だっけ?
見てるとうんざりするんだよね。で、そのGUIをスクリプトの中で
指定するのも>>246のようになってしまう。というより、そのスクリプトは
とてもわかり易く書いてあるけどしっかりGUI部品の構造理解してないと
書けないよね。普通は 
上省略

tell process "System Preferences"
click button "Display" of tab group 1 of window 1
select row 2 of scroll area 1 of window 1
end tell

下省略
みたいなスパゲッティになっちゃってどのGUI指定が間違ってるのか
わからなくなっちゃうんだよね。
1つずつ上位のGUI指定が間違ってないか確認しつつスクリプティングする
やり方が知りたいわ。どうやってデバッグするんだ?

達人の教えを乞いたい。
251名称未設定:2014/08/24(日) 09:52:19.55 ID:QnD6/8Qu0
あ、それから、adobeのソフトでよく見られるけど、最終的に
GUIスクリプティングできないカスタムしてあるGUIみたいなのも
あって、普通のGUIスクリプティングでは操作できないという結論
に達するのに時間がかかるときもある。ああいうので1日とか費やすと
けっこう凹むよね。
252名称未設定:2014/08/24(日) 12:03:05.39 ID:oxxKgxDS0
UI Browser がいいよ
お高いけど

$20 くらいでバーゲンしないかな、しないよなw
253名称未設定:2014/08/25(月) 02:14:39.31 ID:IjrpGSwEi
一連の流れってんならともかくボタン1個程度なら、
できるかできないかの判断に10分もかからんが

手抜きでInspectorとかAutomator使う事もあるけどそれはそれである意味面倒なので、
ベタにofかtell連ねて書いてるけどそんなもん
254名称未設定:2014/08/25(月) 14:46:30.65 ID:2dIEFPEX0
tell application "Pages"
-- 1. point:{100,100} な item は取り出す。 こちらは問題無く動作する。
(iWork items where position = {100, 100}) of page 1 of document 1

-- 2. x座標が 100 より大きい item を取り出す (そして delete したい)
 --  結果: error "Pages でエラーが起きました:item 1 of position のタイプを specifier に変換できません。
(iWork items where (item 1 of position) > 100) of page 1 of document 1

-- 3. x座標が 100 より大きく、かつ y座標が 100より大きい item を取り出す (そして delete したい)
end tell

where/whose句によるフィルターについて教えてください。
2や3のような事を実現するにはどのように書けばいいのでしょうか?
グルグル回さずに済む方法が知りたいです。
255名称未設定:2014/08/26(火) 22:15:15.01 ID:mMnMi0CT0
すまん適当だし合ってるかどうかも知りませんが
iWork items (whose ((item 1 of position) as integer) of it > 100) of page 1 of document 1
item 1 of position とか参照が参照のままでダメだから、型を適当に明示して変換すると
けっこう行けたり行けなかったりしないかなあ?

ただよくわかんないけど、whoseフィルター便利なんだけど、処理に時間かかることが
多いような気がする。一時期うなされたようにwhose whoseしていたけど、最近はあまり
使わないなあ。

ところで。10.9になって、またなんか変わった?10.8で動いてたスクリプトが動かなかった。
たいそうなことはしてないが、プレビューで内容を確認したあと、ファイル名を変更するスクリプト。
なんか仕事忙しくてチェックしなかったけど。
256名称未設定:2014/08/30(土) 19:26:36.34 ID:qt0Pg4Pu0
>>255 遅くなりましたが、ありがとうございます。
それでもうまくいきませんでした...。 括弧の付け方かえたり色々試してはみたのですが。
257名称未設定:2014/09/08(月) 20:54:15.08 ID:Cgy98ADX0
>>254
試してみようと思ったら、最新版は10.9じゃないとインストールできないんだな。変なアプリ。
258名称未設定:2014/09/18(木) 17:16:48.30 ID:FQ6tm29Ti
身の回りの面倒な作業をスクリプトで実行したいのだけどなにから勉強したらいいですか?プログラミングに興味あります
上に書かれてるようなことを理解できるようになるためにはどの言語を勉強したらいいのかすらわからない素人です
259名称未設定:2014/09/18(木) 18:07:55.46 ID:MVYqhU7J0
素人でもググることはできるよね
260名称未設定:2014/09/18(木) 19:35:00.98 ID:VMVk5YEG0
>>258
基本文法はググればわかるからそれでいいとして…

AppleScriptを使う上での基本的な流れは以下のような感じ。

・作業で使うアプリがAppleScriptに対応しているかを確認
・AppleScriptに対応しているなら、そのアプリがどんなAppleScript命令に
 対応しているかを確認
・AppleScriptに対応していないアプリだったら、AppleScriptのSystemEventという仕組みを勉強して無理やり動かす

AppleScriptに対応しているアプリなら、大抵はそのアプリのマニュアルに
AppleScriptの説明がある。
また、アプリをスクリプトエディタにドラッグすれば、対応している命令が確認可能。

Apple純正アプリ以外では、一部のメジャーなアプリと
テキストエディタくらいしかAppleScriptに対応してないんで、
過度な期待はしないほうがいいかも。

ちなみにFinderでのファイル操作なら、AppleScriptでかなりのことができると思う。

SystemEventはわりと万能だけど、
「ここで0.2秒待ってからこの階層にあるこのメニューをクリック」
なんて感じの記述を延々続けていく形になる。

スクリプト実行中にマウスで変なところクリックしたりすると
エラーになることもあるから、
SystemEventは少々不安定なもの、と考えておきましょう。
261名称未設定:2014/09/18(木) 22:40:58.81 ID:FQ6tm29Ti
自分のやりたいことが果たしてスクリプトで出来るのか不安になってきしたがググってググって試行錯誤しながらトライしてみます
262名称未設定:2014/09/19(金) 05:28:54.19 ID:lf06pHbV0
>>258
自分は素人で周りに教えてくれる人もいなかったけど、
以下で1年半くらいかかった。

レベル1 display dialog "hello"
レベル2 diaplay dialogとか使って、四則計算的な対話的プログラム
ここまではすぐ。

レベル3 Finderでのファイル名変換、ファイル名操作(if、repeatほか一般的処理)
プログラムの素養がなく、ここでつまづいた。3ヶ月くらいかかっただろうか。
特にファイル名変換で特定の文字列を検索置換するようなことをしたかったので
ひどくそこで時間がかかった。Applescriptの特殊なところ。正規表現が標準装備
じゃないし、検索、置換も一筋縄では行かず。

レベル4 Applescript対応のアプリを使った処理、テキストファイルの入出力
ここは徐々にだけど、けっこう簡単にできるようになった。

レベル5 Applescript非対応のアプリをGUIスクリプトで操作(SystemEvent)
ここもつまづいた、というか、自分がやりたい処理をできるようになるのに3ヶ月くらいかかったような。

レベル6 do shell script を使った世界
ここまで来ると単発処理は何でもできるようになる。世界が広がる。

レベル7 Xcode(ApplescriptStudio)でGUIのついたアプリ作成
レベル8 Xcodeを使ってApplescriptObjCでGUIのついたアプリ作成
レベル6までで培った技術をGUIアプリとして落としこむのはちまちまと。とにかくサンプルを
見つけることが大事。海外のサイトをよく見るようになった。

たぶん、だけど、あなたの考えていることはレベル5だと思うけど、まだ無理。
実際のところ、レベル3ができるようになるとけっこういろいろ便利なんだけどね。
使い始めはそれがわからない。レベル6習得あたりになると、なんでも
スクリプトで処理したくなる。気合入れるときはレベル8で。
263名称未設定:2014/09/19(金) 14:13:26.59 ID:iMNEhwZB0
>>262
その例で言うレベル8になると、
Applescriptの貧弱さに普通にobjcで書くようになるよ。
特にApplescriptでobjc関数とか呼び始めると、
メモリの管理がしにくくて(勝手に解放されちゃってクラッシュとか)、複数スレッドの処理をまともに動かすのが大変になるから
264名称未設定:2014/09/19(金) 14:43:06.24 ID:VynAABOT0
C系がどうしても敷居が高いとAppleScript専門になるのもしょうがないかなと
Objective-Cでの方がOSがそれで書かれているのだから素直にいろいろとできるけどね
265名称未設定:2014/09/19(金) 17:46:57.37 ID:vSEjXiLJi
>>262
うぉーーー!
まさに知りたかったビジョンだ!
周りに教えてくれる人がいないので漠然とできたらいいなぁぐらいの気持ちだったのが1年半でレベル8まで習得したって姿がみえるとすごい歩きやすい道に見えてきた
ありがとうございます!
266名称未設定:2014/09/20(土) 00:37:50.41 ID:1d3efwqb0
>>263->>264
レベル8の上がObjective-Cかな。レベル9。iPhone用アプリのテキストはたくさんあるけど、
なかなかmac用のテキスト少ないんだよなー。今、仕事多忙で勉強できてないけど。
PHPとかCSSとかSQLとかそっち方面にいっちゃってる。
HTML5とかもやらなあかんのかねぇorz
267名称未設定:2014/09/20(土) 07:13:50.17 ID:J1L8Sc170
正規表現等に関しては Satimage osax
http://www.satimage.fr/software/en/downloads/downloads_companion_osaxen.html
って機能拡張をインストールするといいよ

set theList to (find text "[+-]?\\d+(\\.\\d+)?" in "数字を足してね♥︎ -1, 0.01, +1, 2,..,99 " with regexp, all occurrences and string result)
set total to 0
repeat with x in theList
  set total to (total + (atof (x)))
end repeat
set message to "(" & (join theList using ") + (") & ") = " & total

--> "(-1) + (0.01) + (+1) + (2) + (99) = 101.01"
こういう手品が使えるようになる。

find text: これがあると正規表現まわりで rubyその他に頼る必要がなくなる
atof: x as real と書いたのと同じになる (他にも sin, cos とかC言語ライクな数学関数が色々)
join: 定石の set AppleScript's text item delimiters to "," を使ったリスト連結よりもシンプル
マニュアル: http://www.satimage.fr/software/en/dictionaries/dict_satimage.html
268名称未設定:2014/09/20(土) 07:21:55.77 ID:J1L8Sc170
数値 + 数値文字列 = 数値
なので、この場合 atof は無くてもOKでした
269名称未設定:2014/09/20(土) 08:32:33.91 ID:1d3efwqb0
>>267
わかる人は使えばいいけど、正規表現、文字列の検索・置換などの取り扱いは
ASのデフォルトの考え方を理解してないと、あとでつまづくし、機能拡張を
インストールしないと使えないスクリプトは会社などで使うときとても面倒。
検索・置換程度の話なら避けたほうがいいと個人的には思う。
do shell scriptでrubyなりperlなりsedなりいろいろ使う契機にもなるし。
270名称未設定:2014/09/20(土) 08:35:19.68 ID:3i170VB80
>>269
同意
個人的にosaxは使わないようにしてる
いまはdo shell scriptがあるから、何か複雑なことしたかったら
パッケージにシェルスクリプト突っ込んだ方が早いし確実
271名称未設定:2014/09/20(土) 09:18:42.39 ID:1d3efwqb0
「ASやってます」と言うと笑われるけど、その実、中身はdo shel scriptで他のおいしいところを
使いまくり、というのはよくある話。グルー言語としてのASは非常に強力。
272名称未設定:2014/09/20(土) 16:27:57.17 ID:AqRjHw4B0
do shel scriptは便利だけど使い方間違えるとめちゃくちゃ遅くなるから、気をつけないとね。
たとえば大量に変換とかの場合は、do shel scriptを回すんじゃなくて
do shel scriptの中で回るようにとかね。
273名称未設定:2014/09/20(土) 23:11:29.75 ID:3i170VB80
>>272
君はコンパイラに頼りすぎ >shel
274名称未設定:2014/09/20(土) 23:55:25.38 ID:AqRjHw4B0
>>273
なんも考えずに上のコピペしただけだわ
275名称未設定:2014/10/25(土) 07:12:00.39 ID:5qSeWYWr0
けっこうびっくりしたけど、10.10からのJavaScriptもここでやるといいよね。
ほかでやるとこないし。ほぼなんでもできるのかな?
276名称未設定:2014/10/25(土) 09:21:10.13 ID:5qSeWYWr0
思いつきだけだけど、JavaScriptだけでGUIつきアプリとかできるの?
できるわけないか。
277名称未設定:2014/10/25(土) 14:50:07.62 ID:LnSjrQfx0
Macでプログラミング{10}
http://anago.2ch.net/test/read.cgi/mac/1248682344/
278名称未設定:2014/10/25(土) 17:55:17.74 ID:N9eHGFRP0
質問です。OS Mavericks
アップルスクリプトでもう少しGUIのいいものを作ろうとして
Xcode6.1をつかってcocoa-applescriptのアプリケーションを触ってみようと思いました。
具体的にはGUIのdatePickerを配置して
AppDelegate.applescriptのファイルで
ユーザーがdatePickerで設定した日付を取得しようとしたのです。
下にコメントアウトしてるところがdatePickerとつながっており取得できていない箇所です。

on workSchedulRecorder_(sender)

set Client to name_Client's stringValue() as string
-- set the_Date to int_date's dateValue()

end workSchedulRecorder_

上のはCombo BoxとつながっておりstringValue() as stringで取得できました。
問題の箇所は調べて見つかったのに下のようなエラーがでました

2014-10-25 17:52:08.866 DPC Client Scheduler[2711:303] *** -[AppDelegate workSchedulRecorder:]: Can’t make &amp;#171;class ocid&amp;#187; id &amp;#171;data optr000000000D0000007491B841&amp;#187; into type Unicode text. (error -1700)

dateValue()ではなく違う言葉なのでしょうか・・・
どなたかお力になってくださいませんでしょうか
279名称未設定:2014/10/25(土) 18:45:32.40 ID:Y7ywkFMP0
>>278
set the_Date to int_date's dateValue()
これでそのエラーになる?出ないけどなあ
set the_Date to int_date's dateValue() as string
だと、文字列に変換できないオブジェクト(この場合NSDate)を文字列に変換しようとすると(全く)同じエラーが出るけど

Cocoaの日付周りはちょっと優しくないのでえ。ちょっとだけだけど
280質問者 278:2014/10/25(土) 19:08:00.49 ID:N9eHGFRP0
早速お答えいただきありがとうございます!
そして、すいません。私の早とちりでした。
display dialog に、だそうとしてそのエラーになりました。
log the_Dateで確認できました。

そこで、もう一つ質問したいのですが、
このthe_Dateから得たdate_Value()を
アップルスクリプトのdateの型?っていうのでしょうか
date "2014年10月25日土曜日 0:00:00" にするのにはどうすればいいのでしょうか?
281名称未設定:2014/10/25(土) 19:25:35.38 ID:Y7ywkFMP0
>>279,278
とりあえずな日付(NSDate)を文字列にはこんなんかな
set theDate to int_date's dateValue()
set dateFormatter to current application's NSDateFormatter's alloc()'s init()'s autorelease()
dateFormatter's setDateFormat_("YYYY-MM-dd hh:mm:ss a")
set dateString to dateFormatter's stringForObjectValue_(theDate)

's autorelease()
はいらないのかもしれない。Cocoa-AppleScriptでそこらがどないなってるのかわからないから入れてみた
Objective-Cだと余計な場合はクラッシュするがクラッシュしないので、入れた方がいいのか入れても入れなくてもいいのか不明

>>280
わからんw
文字列にしたら date にできるんじゃないかな。AppleScriptもdate<->文字列はめんどくさいっぽいなあ
282名称未設定:2014/10/25(土) 19:27:59.17 ID:pbKxf6+40
暇つぶしにデータピッカからテキストにして、テキストからNSDateに変換する流れ書いてみた、テストしてないです。
NSDateはテキストじゃないから、直接変換しようとしてつまるよねー。
property datePicker : missing value
set pickDate to my datePicker's dateValue()
set nsDateObj to my pick2date(pickDate)

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 mkDate(year, month, day, 0) + time2sec
  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
283名称未設定:2014/10/25(土) 19:30:07.23 ID:pbKxf6+40
>>282
あNSDateじゃなくてASDate
284名称未設定:2014/10/25(土) 20:10:23.39 ID:pbKxf6+40
ハンドラの呼び出し名適当なやつのまんまだわ適宜直してちょ
285質問者 278:2014/10/25(土) 20:18:04.97 ID:N9eHGFRP0
281さんありがとうございます。実際おしえてもらったコードを入れてみました
set Client to name_Client's stringValue() as string
set the_Date to int_date's dateValue()

set dateFormatter to current application's NSDateFormatter's alloc()'s init()'s autorelease()
dateFormatter's setDateFormat_("YYYY-MM-dd hh:mm:ss a")
set dateString to dateFormatter's stringForObjectValue_(theDate)
最後の行でエラーが起きてしまいました
Scheduler[3049:303] *** -[AppDelegate workSchedulRecorder:]: The variable theDate is not defined. (error -2753)
ご返答のコード内容が理解できない初心者なのですが
変数のthe_Dateは作っていただいた書式にははまらないということでしょうか
もう少しねばってみたいと思います。ご返答ありがとうございました!
286名称未設定:2014/10/25(土) 20:26:21.21 ID:pbKxf6+40
>>285
落ち着きなさいtheDateが無いんだ
君はthe_Dateにしてるみたいだよ。
287質問者 278:2014/10/25(土) 20:55:41.66 ID:N9eHGFRP0
285さんありがとうございます!!
もう、学も無いのに英語サイトまわってくたくたになっていました。笑
出ました出ました!
本当に助かりました。ありがとうございます!
dateformatについての基礎知識は明日にでも探してみたいと思います。
これで、やりたいことが出来そうです。

本当にありがとうございました。

282さんありがとうございます!
いただいたサブルーチンを、appledelegateに加えて試してみたのですが、
ビルドエラーがでてしまい、試すことが出来ませんでした。
ただ、問題解決いたしましたので、お礼の返事のみさせていただきます。
ありがとうございました。
288名称未設定:2014/10/25(土) 20:58:46.80 ID:pbKxf6+40
>>287
あっれエラったかぁー全角スペースを変換してないとかだったりして。。。まいっか。
289質問者 278:2014/10/26(日) 17:03:52.38 ID:UmsXIIQV0
datePickerで悩んでいた者です。
dateformatについて私なりに調べてみました。奥が深く(?▽?; な感じでしたが、
EEEをつけると曜日まで表示されることが新たに分かりました。感謝します!

そしてまた、毎度申し訳なく書き込ませてもらいます。

下のスクリプトを「スクリプトエディタ」で実行すると、
set aaa to "2014年10月25日"
display dialog date aaa as text
->2014年10月25日土曜日 0:00:00

こうなってくれるのですが、appdelegeteのなかでは通用してくれません。
[AppDelegate workSchedulRecorder:]: Can’t make «script» into type text. (error -1700)
ただ、変数ではなくて、テキストをそのまま入れると

display dialog date "2014年10月25日" as text
->2014年10月25日土曜日 0:00:00

うまくしてくれます。ただ変数に入れないと作りたいものが作れなくて、、、
変数に入れるとなぜ急にダメになったのか、別の方法があるのか

単純なところでつまずいてしまっております。
スクリプトエディタでなんとなく進んで来れたので罰が当たったみたいで
どうか、よろしくお願いします。
290名称未設定:2014/10/26(日) 18:12:44.58 ID:BJ1Mvzrv0
わからん。qlmanageを一覧表示で表示するにはどうすればいいの?
291名称未設定:2014/10/26(日) 20:02:33.54 ID:THGeGbUA0
>>289
set dateString to "2014/10/26" as text
log class of dateString
log class of "2014/10/26"
log class of date dateString
log class of date "2014/10/26"
Cocoa-AppleScript の date文 が変数の場合なんかおかしなことをしている/おかしなことになっている
date 変数
の場合に作られるのは«script»オブジェクト?

NSDateベースで考えた方がいいような
どうしてもdateオブジェクト使いたい場合でも、で文字列からdateオブジェクトへは、文字列からCocoaオブジェクトにしてからdateオブジェクトへかなあ
292名称未設定:2014/10/26(日) 21:13:11.35 ID:juj/Re6i0
>>289
>>282のmakeDateハンドラ使ってみれば。
293質問者 278:2014/10/26(日) 22:37:36.09 ID:UmsXIIQV0
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
いろいろ試しながら探しながらやってみました。。せっかく書いてくださったんですが、、
すると、下記の閉じ忘れのようなエラーが出てコンパイル失敗になったようです。
294質問者 278:2014/10/26(日) 22:39:28.30 ID:UmsXIIQV0
Client Scheduler/AppDelegate.applescript:33: error: Expected “end” but found unknown token. (-2741)
Command /usr/bin/osacompile failed with exit code 1

先ほどwebでみつけたのですが、出だしの私はASファイルを別に作って、引数付きで呼び出して使った方が良さそうです。
295質問者 278:2014/10/26(日) 22:40:19.50 ID:UmsXIIQV0
291さん ありがとうございます。logで調べながらする方法すばらしいですね。
log class of date dateString 私のひっかかった date "変数" の箇所
log date dateString ですると複数のパラメーターがどうのでエラーになりました
appdelegateはすごく私には早すぎた感がありました。皆さんこんなに助言いただいたのに
うまくいかず申し訳ありません。

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

これから、その作業をしてみようと思います。ありがとうございました!!
296名称未設定:2014/10/26(日) 23:30:37.10 ID:THGeGbUA0
>>295
>log date dateString ですると
うん、date dateString で «script»オブジェクト(?)ができての、«script»オブジェクトをlogするためになんか(文字列)変換/«script»オブジェクトに対してなんかしよとして失敗かと
log class of date dateString
は、«script»オブジェクトになんのクラスやねんって問いただして、(たぶん)classオブジェクトが返って来ての、classオブジェクトは文字列に変換可能だからかと
てきとーにそう思うw
297名称未設定:2014/10/27(月) 04:41:14.63 ID:MFcX2T9S0
>>294
ダメだったかーごめんね。てかそのエラー全角を半角に変換してないんじゃ。。。
なんか雑に教えちゃった感じで気持ち悪いから、データピッカーのサンプル作ったよ。
http://i.imgur.com/jb3SzVE.jpg
こんな感じで時計の針を動かしたりしたりして調整できて、
↓ボタンでテキストになって↑ボタンでテキストからピッカーに送るよ。
途中でNSDateだけじゃなくて、ASDate使ってやってるからapplescriptみたいに時間の操作ができるよ。
applescriptの文字列からDate型に変換は、裏で色々やっててapplescriptobjcじゃそのままできなかった思い出があるよ(多分
今回のは、すごく雑な変換だからいろいろ工夫してみてね。
いまいち何がしたいのか分からなくて、こんなサンプルでいいのかも謎だけど、、、、、

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

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

とりあえず、お礼を。あ、そうなんですやりたいことは帰宅してまた書かせて頂きます。
(一つだけ壁にぶつかってしまいまして)
今回も沢山助けられました。ありがとうございます!
299質問者 278:2014/10/28(火) 00:02:12.58 ID:8TXD3xq30
こんばんわ。先ほどの実際にやりたいことは
というと、あるチラシ制作の仕事をしておりまして、
チラシの折込日を入力Enterするだけで3〜4日分の各作業日を自動でMavericksのカレンダーeventに
自動で登録しようと思ったのです。コレが出来れば月一の30分仕事が2分から3分、負担も無くなります。
作業日は祝祭日と休刊日、それからクライアントのスケジューリングの方則をスクリプトに盛り込めば
できあがります。(実際スクリプトエディタでそれらを登録して可能なことを確認しました)
ただ、XcodeをつかったUIの方が効率が違うし初心者にも渡すことが出来ます。
そこで、ぶつかった1つの多分コレも小さな問題を伺えたらと思います。
それはスクリプトエディタで出来た「ASdateの加算減算」です。
・・・いまちょっといじったら直せました。反省。。たぶんこれでなんとか作成できると思います。
ありがとうございました。(汗笑)
300名称未設定:2014/10/29(水) 00:07:03.41 ID:fRlD6nSB0
>>299
なんか面白そうだから、似たようなの作ってみた
というか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
301名称未設定:2014/10/30(木) 21:58:19.65 ID:DD9ePtIQ0
捕手
302質問者 278:2014/10/30(木) 22:21:06.57 ID:1wagBLBS0
300さんありがとうございます! すごく勉強になりました。
それからまた作り込みがすごくて全然読めないです。汗
これからゆっくり読んでいきたいと思います。

EKEventって初めて聞きました。・・・ははは汗笑
それにしても、カレンダーを起動せずして書き込みなんて手品のよう!

読み解くには1ヶ月くらい覚悟します!
取りあえず版ができました。質問したおしたのでその成果をアップさせてもらいますね。
http://kie.nu/2gSs
これでいいのかな・・・笑
(クライアント名は変えましたクビになるので笑、なので法則はそれぞれバラバラです。)
操作は、キーボードのみでお手軽にできるものです。(見た目もシンプル!)
まぁ、こんな単純な物しかできなかっただけなんですけれど取りあえずホッとしてます。

これから、各作業日のステップ毎にカレンダーを分けて色別にしたり、
カレンダーの内容を読み取って、今日の作業を表示するTODOのようなパネルを作りたいです。
手軽な入力でカレンダーからTODOまでできるみたいな。

また無謀な、生きてるうちに出来るかな・・・(遠い目
303名称未設定:2014/10/31(金) 02:04:32.90 ID:P6vAtVvi0
スレチだったら誘導願いますが、ここが最も適当かと思って質問させていただきます。

RAW現像ソフトLightroom5で書き出しの後処理でターミナル上で動く
ExifToolを起動しカメラのシリアルNo.を削除したいのですが、下記の方法までは分かりました。

ExifTool
http://www.sno.phy.queensu.ca/~phil/exiftool/

1.ターミナルを開いてEXIFTOOLと入力した後、画像ファイルをターミナルに
 ドラッグ&ドロップするとパス付きファイル名が入力されてリターンキーで
 EXIFが表示される。

2.ターミナルを開いてEXIFTOOL -SERIALNUMBER=と入力した後、
 画像ファイルをターミナルにドラッグ&ドロップするとパス付きファイル名が
 入力されてリターンキーでEXIFからシリアルNo.が削除されて保存され
 別途、***.jpg_originalというファイル名でオリジナルファイルが保存される。

教えていただきたいのは、ここから先、
このコマンドをエイリアス化しなければならないようなのですが
ここが全く分かりません。どうすればよろしいのでしょうか。
304名称未設定:2014/10/31(金) 02:31:53.45 ID:4JVpEUGQ0
エイリアス化……? ちょっといみがわからん
受け売りをするならソースも貼れ
そもそもそれはapplescriptではなくシェルスクリプトだからこっちだな
Mac OS XをUnixとして使ってる人の為のスレ 17
http://anago.2ch.net/test/read.cgi/mac/1383436068/

ただ、lightroomの仕様がわからん以上、結局lightroomユーザ以外には
答えられんから、adobeスレで訊いたほうが早そうだ
少なくともapertureユーザのおれはその辺のわざわざ調べたくないからパス
305名称未設定:2014/10/31(金) 02:58:55.50 ID:cDlSGdtw0
>>303
とりあえずAutomatorでいいんじゃないの
Automatorはそれこそそういう単純な用途にあるのに誰も使わない不憫なヤツw

ExifToolはコマンドだから「シェルスクリプトを実行」アクションになるけど

EXIFを弄るだけだからLightroom5はほとんど全く関係ないはなしでそ
306名称未設定:2014/10/31(金) 03:03:13.30 ID:U4KxWBg20
>>303
>>このコマンドをエイリアス化しなければならないようなのですが
情弱がよくわかってない情報を然も当然かのように、質問に交えて自分の立場を少しでも上げようとする、
その態度じゃ、どこに行っても適当にあしらわれるだけだよ。
少しは人に物を聞く態度を勉強してこい
307名称未設定:2014/10/31(金) 03:07:21.31 ID:cDlSGdtw0
>>303
http://www.sno.phy.queensu.ca/~phil/exiftool/
に、
Lightroom Plugins
Metadata Wrangler: Strip selected metadata components from images as they are exported
ってあるけど
308名称未設定:2014/10/31(金) 03:09:21.84 ID:cDlSGdtw0
>>306
なに言っているのかわからんぞww
309名称未設定:2014/10/31(金) 03:18:54.08 ID:PdTh3q+P0
>>308
なんかこいつの質問の仕方イラつくんだよね、偉そうってか
重要な部分を隠して上っ面の質問の仕方ってのかね
2chをお客様サービスセンターと勘違いしてそう、mac探でも煙たがれてたね
310名称未設定:2014/10/31(金) 03:24:09.66 ID:cDlSGdtw0
偉そう?????うーむ...
やりたいことは理解できるんだけど。そりゃちょっと違うというのもw
311名称未設定:2014/10/31(金) 03:40:29.53 ID:PdTh3q+P0
>>310
自分の知識が中心で詳しいことを説明しないやつっているじゃん?
Lightroom5の書き出しの後処理でっていわれても
Lightroom5に書き出し設定に後処理って項目があって、そこで何が選べるかとか知らねーよって話。
まぁいいや短気過ぎたか すまんね
とりあえずその後処理でApplescriptのD&Dアプリ指定して何が渡されるか調べて、
もしファイルパスがもらえてたらそれにdo shell script でExifTool当てればいいんじゃないか?
312名称未設定:2014/10/31(金) 04:09:46.08 ID:cDlSGdtw0
まあ、こっち方面ど素人はこんなもんだろう。てかいたってふつーに見えるw
偉そうなど素人というのはだなもっとアレなんだぞ、リアルの世界で

ExifTool、ターミナル、ドラッグ&ドロップ てとこで、Lightroom5でファイルとして書き出した後の、ファイルをどうにかという話だと思うよ
エイリアスというのも、たぶんシェルのaliasのことだと思うけど、違うかもしれないw
313名称未設定:2014/10/31(金) 04:18:47.00 ID:PdTh3q+P0
>>312
2chはファンタジーの世界ですものね(違うか
後処理に関してはググったらLightroom5に後処理ってオプションがあるみたいよ
多分そこで開くアプリケーションにターミナルとか選んじゃったりして試行錯誤してんじゃないかな
314名称未設定:2014/10/31(金) 04:25:40.65 ID:cDlSGdtw0
あ、そうなの。だったら、Pluginsでよさそうなw
まとめてなんかしたいのかと思ったよ
315名称未設定:2014/10/31(金) 04:39:49.46 ID:cDlSGdtw0
うーん、後処理でターミナルってのがよくわからんな

>>305,304
とりあえず、可哀想なAutomatorではこんなん。コマンドが正しいのか知らんけど
(Automatorのスレが別にあるのを知ったんだけど、終わり間近なのでごめんくさい)
http://i.imgur.com/tCXDhqi.png
316名称未設定:2014/10/31(金) 04:46:35.36 ID:PdTh3q+P0
昔フォトショのプラグイン書いたの思い出して、LightroomのSDK探したら
プラグインluaなのかよw
これ超簡単にMetadata書き換えできる気がするわ
317名称未設定:2014/10/31(金) 04:57:32.90 ID:PdTh3q+P0
うんcom.adobe.serialNumbe呼び出せばシリアルナンバーも書き換えできるわ
てかチラッと見た感じこの量ならほとんど全部のメタデータに対応してそう
>>303君はlua覚えるといいよ
applescriptみたいなもんだ
318名称未設定:2014/10/31(金) 07:56:33.44 ID:rhP6dt/O0
>>303
よくわかりませんが、ここの人たちが言っていることのほうが
正しい道のような気はしますが、あなたの考えを伸ばすとすると、
要はLightroomで書きだしたあと後処理にExifTool使ってExif情報を操作するんだよね?
そしたら、情報を削除したファイルがどこかに出来るはずだから、
それのパスを作成してそれをtell application "Finder"で set ~ as alias (list)
とかして、適宜自分の好きな名前にするなどすればいいよ。

直接ExifToolからAppleScriptに結果を受けることはできないだろうから
上記の処理をする前にはファイルの生成待ちと存在確認は必要
(とはいえExif操作だから時間かからない?)
FolderActionとかにしてもいいかも。俺は絶対にしないけど。

というかLightroomってどこまでできるんだっけ? 最近のAdobeはAS対応貧弱だから嫌い。
昔からのツールはいろいろ簡単にできるのにね。

>>317
luaとか簡単? ザクッと昔ググるだけググッてとっかかりがなくて手を付けてないけど。
319名称未設定:2014/10/31(金) 08:14:23.46 ID:PdTh3q+P0
>>318
ExifTool自体はコマンドラインで動くバイナリ
用はターミナルでコマンド打って動作させるやつ
おそらくLightroomの後処理では保存ファイルのパスを引数にしたシェルスクリプトを走らせる機能はないと思う
だからExifToolをパッキングしたアプリケーションなどにファイルパスを渡さないと行けないんだ
AppleScriptでExifToolを操作するが正解
理解した?
ASっていうとApplescriptなのかActionScriptなのか、はたまたAngelScriptの可能性も出て来るから微妙よねw

Luaの構文自体は分かりやすいからすぐ触れるよ、applescriptしか触ったこと無かったら最初はキツいかもしれないけど。
320名称未設定:2014/10/31(金) 08:39:42.29 ID:rhP6dt/O0
>>319
えー! Lightroomって後処理みたいなのもできないのか。
出来ないはずないとか思っちゃった。
ま、でも、書きだした後ASで処理すりゃいい話だからどっちでもいいか。
321名称未設定:2014/10/31(金) 08:47:26.70 ID:PdTh3q+P0
>>320
いや後処理機能はついてるみたいだけど、開くアプリ選ぶくらいじゃないかと推測して(ry
だからD&Dで作ればパスがもらえるとおも(ry
デジャブか
322名称未設定:2014/10/31(金) 09:30:08.36 ID:ZcnZkG8y0
こんなソフト探していますスレで
EXIF編集ソフトのアンケートをとったら軽くスルーされたので
こっちに来たとみた
323名称未設定:2014/10/31(金) 14:02:31.92 ID:P6vAtVvi0
>>304-322
皆さん、毎度お騒がせしております。説明不足で申し訳ございません。
エスパーしてたくさんのアドバイスありがとうございました。
やりたいことを再度、かみ砕いて説明させていただきますと、

1.RAW現像ソフトLightroom5(以後略してLr5)を使ってます。
 Lr5は現像後に別のソフトへ現像後のJPEGファイルを受け渡す
 ことができます。これが>>303のいわゆる後処理です。

2.この後処理にExifToolというターミナル上でコマンドを
 入力して動くExif閲覧、編集、削除アプリを動かしたいです。

3.どのように動かしたいかは現像後のJPEGのExifから
 カメラのシリアルNo.のみを削除したいです。
 そのコマンドはEXIFTOOL -SERIALNUMBER=ファイル名です。

これをするにはコマンドをエイリアス化しなければならない
そうなのですが、どうしましたらよろしいでしょうか。
324名称未設定:2014/10/31(金) 14:11:34.53 ID:cDlSGdtw0
>>323
>コマンドをエイリアス化
ってなんやねん
説明するか、説明できないんだったら「コマンドをエイリアス化しなければならないそうなのですが」の元を示さないとわからんよ

あと、自分で試しているの?「EXIFTOOL -SERIALNUMBER=ファイル名」じゃ一般的にいうターミナルでは動かないと思うよ
325名称未設定:2014/10/31(金) 14:14:23.15 ID:cDlSGdtw0
>>324
>あと、自分で試しているの?「EXIFTOOL -SERIALNUMBER=ファイル名」じゃ一般的にいうターミナルでは動かないと思うよ
orz... 今は(?)小文字大文字関係無いのか... 謝罪して取り消させていただきます
326名称未設定:2014/10/31(金) 14:29:45.27 ID:cDlSGdtw0
大文字好き(?)といいどうもWindowsでのエイリアスのような気がするんだが
327名称未設定:2014/10/31(金) 14:30:31.85 ID:4JVpEUGQ0
>>323
>>304で「エイリアス化しなければならない」のソースを貼れと言ったはずだが?
他の意見も全部無視かよ
それにそこ以外は「applescript シェルスクリプト アプリケーション」とかでググればわかることだ
あるいは他のやつが書いてるようにautomatorでもいい

ここのやつらは親切だからこんなクソにも答えてくれるだろうが
質問の仕方も質問内容もおかしいと気づいてほしい
328名称未設定:2014/10/31(金) 14:35:03.58 ID:4JVpEUGQ0
あとは目的が全然特殊じゃないので、exiftoolを自分で使いこなそうとせず
普通に「lightrooom exif シリアル 削除」とかでググった方が幸せになれるんじゃないか? お互いに
329名称未設定:2014/10/31(金) 14:35:36.01 ID:hu2rEbyn0
【Macで】ExifTool質問スレッド【Exif編集】 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/dcamera/1414681108/

頑張ってスレッド立てたんだろうから誰かの回答をじっと待てばいいのに。
330名称未設定:2014/10/31(金) 14:50:05.89 ID:4JVpEUGQ0
なんだマルチかよ氏ね
331名称未設定:2014/10/31(金) 14:50:45.82 ID:cDlSGdtw0
ねんてこったいっ!w
332名称未設定:2014/10/31(金) 16:06:19.88 ID:PdTh3q+P0
地雷臭はこれか、まんまと釣られてしまったな
みんな優しすぎんよ
333名称未設定:2014/10/31(金) 16:19:50.43 ID:neCXR2Hh0
質問者そっちのけで話は盛り上がるんだけど、いつの間にか質問者がフェードアウトしててなんとなくうやむやになる……といういつものパターンだねw
334名称未設定:2014/10/31(金) 21:23:03.21 ID:/phNTl1y0
【Macで】もなにも
ってExifToolはクロスプラットフォームだろうが
いい加減にしろ
335名称未設定:2014/11/01(土) 01:16:11.93 ID:YSoq0j8H0
>>334
これ以上釣られてはならん
336名称未設定:2014/11/01(土) 10:11:10.50 ID:iIVG1+Z10
Shane StanlyさんのASOC本、PDFだとパラハラめくれなかったので、
自分で印刷、製本したったw 装丁は茶色の牛革w 7000円くらいしそうな
本ができたwww いつでもどこでも勉強するぜ!

A5両面印刷のA6小冊子だから字が小さすぎて読めないorz
337名称未設定:2014/11/01(土) 11:45:25.90 ID:iIVG1+Z10
あーあー誰かがASOC本を日本語でまとめてくれたらなあ。
日本語のASOC本って1冊もないよね。
338名称未設定:2014/11/01(土) 21:56:29.60 ID:eXHrQzp90
でもまあASは英語でも分かりやすいかも
ムズい言語のは日本語なのにムズいという
339名称未設定:2014/11/08(土) 14:20:35.62 ID:LlCPsU700
写真のリネームのapplescriptを下記からコピーして使用しています。
ttp://hottinroof.blog54.fc2.com/blog-entry-77.html

スクリプト中には同一時刻の場合サブナンバーを付けるようになってますが、これが出来ず、同じ
名前の項目があるため処理できない、とのメッセージが出てしまいます。下記がサブナンバーの
記述ですがどうすればサブナンバーがつくようになりますか?
OS Mavericks, mac pro mid 2012 です。

--もし同一時刻のファイルが存在した場合、サブナンバーをつける
set ChkFname to name of Obj
if ChkFname is not Orifname then
set CHK to "OK"
end if
if ChkFname is Orifname then
set CHK to "NO"
set subNUM to subNUM + 1
end if
340名称未設定:2014/11/08(土) 15:44:24.97 ID:ypauXXT+0
エラーになってるのは引用箇所の直前の

set name of Obj to fname &amp; "." &amp; kakutyousi

だから、そこ try / on error / end で囲えばいいんじゃないの
スクリプトちゃんと読んでないけどとりあえず _2 _3 _4 などにリネームされる

try
set name of Obj to fname &amp; "." &amp; kakutyousi
on error
--もし同一時刻のファイルが存在した場合、サブナンバーをつける
set ChkFname to name of Obj
if ChkFname is not Orifname then
set CHK to "OK"
end if
if ChkFname is Orifname then
set CHK to "NO"
set subNUM to subNUM + 1
end if
end try
341名称未設定:2014/11/08(土) 16:34:00.38 ID:LlCPsU700
>>340
set name of Obj to fname &amp; "." &amp; kakutyousi
の;で、end of lineがあるべきところですがunkown tokenが見つかりました、
で引っかかってしまいうまくいかないです。
342名称未設定:2014/11/08(土) 17:01:27.86 ID:ypauXXT+0
その行はオリジナルのままにしといてちょ(あるいは amp; を取り去る)
生アンパサンドが打てない
343名称未設定:2014/11/08(土) 17:28:47.70 ID:bXbYhwqn0
>>340
てか、全然実行してないけど、なんでエラーになるん?
すでに途中まで実行してて正しい名前になってる場合に
エラーになるのかな?
344名称未設定:2014/11/08(土) 17:41:46.94 ID:LlCPsU700
>>342
んー。全くリネームしなくなりました。というかtry でループしてる感じです。
345名称未設定:2014/11/08(土) 20:09:06.28 ID:bXbYhwqn0
>>344
>>343が全てなのでは? 普通に動くよ。
それに、そもそもこのスクリプトで同時刻でサブナンバーがつく
状況は普通は起きないよ。子どもの運動会の写真を連写したりしたらありうるけど。
346名称未設定:2014/11/08(土) 20:12:37.10 ID:LlCPsU700
>>345
まさに連写です。
現状止まったら同じ秒の処理済みのファイル名に自分で1とか追加して同じファイル名にならない
ようにしてます。
347名称未設定:2014/11/08(土) 20:44:30.86 ID:bXbYhwqn0
>>346
あんま言うのもなんだけど、そしたらもう問題解決してるよ。
エラーは当然出る。手作業が嫌ならスクリプトを変更。
基本的な変更はだれでもできる簡単なものだから、ちょっと頑張ってみたら?
今言えるのはこんだけ。
348名称未設定:2014/11/08(土) 20:51:14.99 ID:wpKvrxUU0
自分で[考える、作り出す]ことをしなくなった人間って生きる価値無いよね。
最近そんな人多いいけどさ
349名称未設定:2014/11/08(土) 20:54:50.91 ID:ypauXXT+0
これでいくかな?
下記を>>340と入れ替え(アンパサンドについては同じく書き替え)

try
set name of Obj to fname & "." & kakutyousi
end try
--もし同一時刻のファイルが存在した場合、サブナンバーをつける
set ChkFname to name of Obj
if ChkFname is not Orifname then
set CHK to "OK"
end if
if ChkFname is Orifname then
set CHK to "NO"
set subNUM to subNUM + 1
end if
350名称未設定:2014/11/08(土) 21:26:27.22 ID:bXbYhwqn0
言うだけでもなんなんで。
よくわからんがバージョン依存あるかも。
あー、書いてたらアイスとけたよ

tell application "Finder"
set theFileList to selection as alias list
repeat with i in theFileList
set i to i as alias
set i_Extension to name extension of i
set AnswerFileName to my getExif_(i) & i_Extension
set NUM to 1
repeat while (exists (file AnswerFileName of parent of i))
set AnswerFileName to my getExif_(i) & "_" & NUM & i_Extension
set NUM to NUM + 1
end repeat
set name of i to AnswerFileName
end repeat
end tell

on getExif_(theFile)
set theName_of_Camera to do shell script "exiftool -model " & quoted form of POSIX path of theFile

set theDate to do shell script "exiftool -DateTimeOriginal " & quoted form of POSIX path of theFile

set OriginalDeliniter to AppleScript's text item delimiters
set AppleScript's text item delimiters to ":"
set theName_of_Camera to item 2 of text items of theName_of_Camera
set theDate to items 2 thru end of text items of theDate
set AppleScript's text item delimiters to OriginalDeliniter
return text 2 thru end of theName_of_Camera & (theDate as string)
end getExif_
351名称未設定:2014/11/08(土) 21:31:47.41 ID:bXbYhwqn0
間違えるし。適当に直してくれ。
352名称未設定:2014/11/08(土) 21:42:28.42 ID:hUAOfoDF0
AppleScriptとは、かれこれ20年以上の
付き合いで、今でもDVD PlayerやQuickTime
制御では、お世話になっている。

だが、ファイル名変更などの処理は付き合いが
2年のpythonで書く。
353名称未設定:2014/11/08(土) 22:09:04.06 ID:PoIJmgvo0
>>352
python興味あるんだよな〜
よかったらそうやって日常的に使ってるスクリプトうpしてくれ参考にしたい
354名称未設定:2014/11/08(土) 22:12:37.60 ID:09XY7TPZ0
文字列処理はAppleScript's text item delimitersとか面倒
osaxが使えると簡単にできるんだけど
355名称未設定:2014/11/08(土) 22:24:30.26 ID:PoIJmgvo0
いまはosaxよりdo shell scriptだよな
AppleScript's text item delimitersってほんと書いててばかばかしい
まあ一度自分専用ハンドラつくれば次からは呼ぶだけだけどさ
356名称未設定:2014/11/08(土) 22:33:56.17 ID:bXbYhwqn0
>>354
確かに面倒だよねー。上のスクリプト書くときもブログのスクリプトの
Delimiterがちょっと煩雑だなあとできるだけまとめたんだけど、
exiftoolのオプションをまとめて、その結果からほぼ一発で結果
返せないかと考えたけど、面倒になって断念したよ。
それ以外にはいつもはrepeat while existsとか使ったことないけど
ちょっと使ってみた。

もっとスマートでかっこいい書き方よろしく。
357名称未設定:2014/11/08(土) 22:42:40.37 ID:bXbYhwqn0
ところで変数作るときCameraNameとかにしたかったけどコンパイルすると
cameranameになっちゃう。意味がわからない。
358名称未設定:2014/11/08(土) 23:02:44.84 ID:PoIJmgvo0
>>357
一度全部小文字でコンパイルした後はどうあがこうと小文字に直される
最初からcapitaliseしとけば問題なかったはず
359名称未設定:2014/11/09(日) 03:05:12.49 ID:tOvI53P80
>>349
いけました。ありがとうございます。

>>350
ありがとうございます。試してみます。
VBA使っているので自分で直してみようと思いブレークポイントの設定やステップで動かしてみようと
したのですが、そこからつまずき質問しました。
applescriptにはないんですね。
360名称未設定:2014/11/09(日) 03:11:10.32 ID:FeCGzdwq0
>>359
もう一つ新規で作ってそこで、部分的に確認して行けばいい
基本は1行で完結してる
くっつけてるだけ。
361名称未設定:2014/11/09(日) 03:52:52.38 ID:VXCQ5bro0
>>357
自分がよくやる直し方を書いとくよ。

1. AppleScriptエディタで新規ファイルを作る。保存の必要なし、このファイルのみを開くこと。
2. CameraNameという変数を書いてコンパイルする。
3. 変数名を直したいファイルを開いてコンパイルして保存。

これで好きなように大文字小文字を変えれるはず。ただ、頻繁に変わってしまうけどね・・・
これはAppleScriptエディタで先に開いているファイルにある変数(コンパイル済のもの)の大文字小文字の表記を後から開いたファイルにも適用(タイミングはコンパイル時)するという親切設計(^^)凸が原因なんだよ
362名称未設定:2014/11/11(火) 08:13:53.74 ID:gi7C6GO70
ああ日本にもMacscripterみたいなところほしい。
ここくらいしか意見交換できるところ知らないけれど、
2ちゃんの専ブラはwindowsのほうが沢山あるし、
コードのやりとりも外部サイト使わなきゃならないし面倒。
テーマごとにスレッドが立つわけでもないので、
話が散発的。
363名称未設定:2014/11/11(火) 19:48:26.51 ID:QbSjNnGp0
>>362
低レベルな初心者質問所になって誰も寄り付かんでしょ
364名称未設定:2014/11/11(火) 19:54:15.09 ID:gHfKBy9o0
言い出しっぺが頑張るしかない
365名称未設定:2014/11/14(金) 09:34:40.02 ID:bdBo1rtm0
スマホでかきこみしてると痛感するけど
デリミタの最悪なところはスペルが長いのに
コード補完効かないエディタに問題があるかなと思った。
単語登録、ハンドラ作成よりスマートな
方法ないかな?
366名称未設定:2014/11/14(金) 09:37:02.87 ID:bdBo1rtm0
フリーのフレームワークに検索置換、
正規表現含めてないものかね?
367名称未設定:2014/11/14(金) 11:51:09.09 ID:jdF3j3OF0
いまどきはdo shell scriptでなんでもござれ
sedでもrubyでも好きなの使えや
368名称未設定:2014/11/14(金) 15:00:28.68 ID:grdt4k+m0
AppleScriptが"do shell script"の実行結果の
返り値をどう取得するかが問題?
369名称未設定:2014/11/14(金) 21:20:09.76 ID:jdF3j3OF0
set a to do shell script ...
じゃだめなのか? パイプ処理やリダイレクトで出力はすべて取り出せると思うが
370名称未設定:2014/11/15(土) 12:55:03.50 ID:Bp4U37ku0
あっ、これで出来るのですね! ありがとうございます。
勉強になりました。
371名称未設定:2014/11/15(土) 20:05:03.07 ID:yPqV/T6U0
今まで検索置換正規表現はdo shell script からrubyでやってたけど、
最近、delimiter使い始めた。使い始めると面白いね。いろいろ使える。
分かち書きする言語だともっと便利なんだろうなと理解した。
372名称未設定:2014/11/16(日) 20:27:36.67 ID:CANt0WnQ0
最近はじめたけど
文法独特すぎやなあ
373名称未設定:2014/11/16(日) 23:03:17.12 ID:V4b/3JFT0
下手に英語に似てるぶん>>369のような書き方を思いつかない場合はあると思う
基本的には親しみやすい言語だと思うが
374名称未設定:2014/11/18(火) 08:14:34.62 ID:KyR0vcIu0
ASOCでやっとひとつ壁を越えた。うれしい。つっても低い壁だけど。
それにしても、ASOCでGUI用のオブジェクト自由自在に使える人って
日本にどれだけいるのかな? 参考になるものが見つからなくって
なかなか手も足も出ません。画像を一覧表示したいけど次の課題は
それだな。GUIオブジェクトの扱い方の一般的な方法が知りたいよ。
375名称未設定:2014/11/18(火) 08:41:29.05 ID:oSyrzLiQ0
>>374
何を越えたか知らんけどおめでと
objcをasocに書き換えれるようになれば、簡単だよ。
自分のオリジナルのクラスをasocで作って配置すれば汎用効くしいいよ。
ただそれやってるのは、縛りプレイ好きの物好きだけなんだよね、objcで書いた方が楽だしさ。
そのうちiOSアプリとか作り始めるから、asoc離れて行くんだよね。
最終的にはasocでやることは、基本的なことだけになって、他のアプリケーション操作するときとかユーザーが簡単に拡張できるようにプラグイン的な使い方になって行くんだよね。
もともとそういう使い方が正解だし、asocででかいプロジェクト作ると、コントロールできないことが多くなってバグだらけになるって言うのが先陣の結論だわ
画像を一覧表示したいなら、コレクションビューが楽だよ、ただ大量に表示するとすぐ重くなるから
コレクションビュー自体をカスタムビューで自作した方がいいよ。
扱い方の一般的な方法って言うのも謎だけど、xib使は極力使わないでコードで書いた方が扱いやすいかな。
何個も同じようなの作ると、わりとコピペしたりするからxibで色々やっちゃうと後でめんどくさくなるんだよね、どこ触ったかも後で確認しづらいしさ
376名称未設定:2014/11/18(火) 14:22:38.49 ID:1jvrEaba0
iTunesで曲の最初の30秒ずつ再生するスクリプトを作った。

tell application "iTunes"
repeat
delay 30
next track
end repeat
end tell

iTunesの外で実行するとちゃんと動いてるんだけど、~/Library/iTunes/Scriptsにおいて、iTunesから実行すると、delayが無視されてるみたい。そういう仕様なの?
なにか対策ある?
377名称未設定:2014/11/18(火) 14:29:52.04 ID:NsbBsaOB0
>>376
プログラムから別のスレッドでapplescriptを実行するとdelayは、効かない
メインスレッドがブロックされるのは嫌だから、外部スクリプト対応してるアプリケーションはほとんど別スレッドで実行してる。
delayを使うんじゃなくて、再生時間取得して30秒再生したら次に行くように変えたらどうか?
378名称未設定:2014/11/18(火) 15:02:39.85 ID:1jvrEaba0
>>377
サンキュー。これでいけたよ。

tell application "iTunes"
set pos to player position
if pos > 30 then
next track
end if
end tell

repeatっていらないんだなぁ。
379名称未設定:2014/11/19(水) 23:42:34.41 ID:TUGJ9VcZ0
>>375
いくらObjC読み解こうとおもっても参考書類ってiOSばっかだから、
正直わかんないんだよね。Macのプログラマーってどこで勉強してるんだろうか。
参考書読めばなんとなくは分かるんだけど、試行錯誤してるヒマがないから
ついついこっちに戻ってきちゃうんだよねぇ。GUI以外ならもうなんでもできるんだもん。
GUIも凝ったことしなければ別に問題ないし。
Table Viewとか使う方法って大きく分けて3つくらいあるよね?
・data sourceを使ったもの
・xibでいろいろいじって適当なプロパティ作ってぶっこむ
・ObjCでまじめにメソッド?つかったりしてがんばる。
一番下の方法しか使ったことないけど、昔ながらのやり方ができるなら
ちょっと試したい気もしている。
今日は仕事でスクリプトがんばりまくりでした。ありがとう!ASOC!
380名称未設定:2014/11/20(木) 08:48:11.95 ID:lzIykKYT0
>>372
言うほどじゃないよ。
delumiterだってsplit系の命令だし。
381名称未設定:2014/11/21(金) 05:18:03.19 ID:6kQ4KIAV0
>>379
使い方自体は、使いたいフレームワークのヘルプ見れば、appleさんが使い方書いてくれてますよ。
何でもできるけどASOCだけで、それなりに書くとバグが酷くないです?
マルチスレッド関連の処理とかも勝手にリリースされてんのか、よく落ちたりした思い出ががが。
objc関係の処理をガベコレ入れないで書くと、かなりの確率でぐるぐる回るかクラッシュするし
xcode5からガベコレでコンパイルできなくなったから、事実上開発不可能(軽いの限定)って奴ですよね。
appleさんもswiftにシフトしてASOC捨てたみたい?だから、対応は絶望的だしこのまま消えてくんだろうなと最近思ってます悲

Table Viewは、私がよく使う方法は中に入れるオブジェクトのテンプレートを1つカスタムクラスで作って
それをalllocして追加する方法ですね、そのカスタムクラスの中で処理も書けるので色々捗りますよ。
参考になるか分かりませんが、さくっとサンプル作ってみました。
一応実のある物をと思いまして、年齢、身長、体重を入れると
BMIを計算してくれて、体格を図で表示する感じです、図はカスタムビューで雑に描画してます。。。
17才以下は、ローレル指数で計算します。
体格の図は、めんどくさくなったので楕円の膨らみと色で表してます。
算数苦手なので出力された、数値から何となく計算して膨らみ方変えてるので、ここら辺雑です。。。
XIBはほとんど使っていません、ボタンとかのバインドくらいですね。
ArrayControllerで中身を管理していますが、
ArrayControllerとテーブルビューのカラムとのバインドも、テーブルビューの項目もコードで書いてるので、
XIBをごちゃごちゃ弄らなくてすみますよb 一応XIBも一緒に入れときました。
てことで、こんな感じのTable Viewの使い方は、いかがでしょ?

スクショ
http://i.imgur.com/bB4e81F.jpg

http://kie.nu/2jaH
382名称未設定:2014/11/21(金) 08:06:10.65 ID:q+tkQrRs0
>>381
ありがとう。ちょっと見てみます。
ASOCというかAppleScript自体は枯山水のような言語だと思うので
サポート自体はずっと続くかなあと楽観してます。10.8ですらAppleScript studioが動いてますし。
10.9、10.10で動かしてる猛者はいるのかな?
383名称未設定:2014/11/21(金) 08:23:20.44 ID:0EtAPx1n0
>>381
>appleさんもswiftにシフトしてASOC捨てたみたい?
swiftは、複雑なASOCだけではなく、単純なAppleScript
(の基本コマンド)のように簡単に書けるものですか?

AppleScriptとswiftのコマンド対照表など、参考になる
サイトなどはございますか?
384名称未設定:2014/11/21(金) 19:26:58.10 ID:5ayGMZMc0
すいません
アプリ起動のスクリプトで画面を開かずに起動とかできるスクリプトを教えて下さい
385名称未設定:2014/11/21(金) 19:31:56.76 ID:Akhhc3hk0
>>384
アプリ次第では?
386384:2014/11/21(金) 19:55:02.17 ID:5ayGMZMc0
ログイン後にitunesを画面を表示せず起動がしたいのです
387名称未設定:2014/11/21(金) 22:11:46.09 ID:GTi6Gh3s0
ログイン項目にiTunesを登録して「隠す」にチェックを入れる

とかいうことじゃないのねきっと
388名称未設定:2014/11/21(金) 23:55:30.15 ID:6kQ4KIAV0
>>383
複雑なASOCって言うのはちょっと違うかな、中身は同じAppleScriptで、ただ同じようなことを何回も書いてるだけですよ。
単純なコマンドでの比較なら根本は、全く別の言語だからAppleScriptとの対照表を見ても書けないと思います。
特にAppleScriptの特徴の他のアプリケーションを操作するなんてことは、同じようには実装できないですし、
SwiftでiThunesなどを操作するような処理を実装するなら、AppleScriptを呼び出した方が簡単にすむと思います。
そういうのをやりたいなら、AppleScriptで書いた方がいいですね。
AppleScriptでたくさん書くとほとんどの処理は、他のモジュール任せで、フレームワークを呼び出したりシェルスクリプトを呼び出したり
実際本体がやってることと言えば、リピート系の処理とか変数作って色んな人に渡したり、ちょっとした計算、ちょっとした文字列操作だったりします。
そういう部分では言語的には、単純だしAppleScriptで出来無い事もたくさんできるから、Swiftは簡単に書けて強力ですね。
とりあえずwiki見れば、何となく書けるような言語です。Swiftについて詳しく聞きたかったらSwiftスレに行くといいですよ。
AppleScriptのいい所は、寝る前とかにスクリプトエディタでさくっと書ける気軽さですね。
389384:2014/11/22(土) 08:29:13.19 ID:PMrhB+tK0
>>387
> ログイン項目にiTunesを登録して「隠す」にチェックを入れる
>
> とかいうことじゃないのねきっと

はい
やりたいことはログイン後Nasへ接続後にiTunesを画面を表示しない状態で起動
する事になります
ログイン項目だと早すぎてNasへの接続がエラーになるので、スクリプトで
デレイさせてます
390名称未設定:2014/11/22(土) 09:20:06.06 ID:LIbEyQFi0
>>389
iTunesがアクティブになったら、GUIスクリプティングでコマンド+Hして隠せば?
391名称未設定:2014/11/22(土) 09:23:26.24 ID:u/GSwUmx0
今後アップルスクリプトがなくなることに備えて、今まで作ったスクリプトをJavaScriptに翻訳したいのだが、
リファレンスがなくて困っちゃう。もう少し待てば色々出してくるんだろうけど。。
392名称未設定:2014/11/22(土) 09:33:46.73 ID:MsdAX1Fa0
tell app "iTunes" to run

したら隠れて起動してくれたけど
Language Guide見たら、The run command launches an application as hiddenってあって、その通りになった
393名称未設定:2014/11/23(日) 08:31:10.56 ID:ehUJvQms0
entire contents of とか使って、あらゆるファイル名、フォルダ名を変更(空白文字を削除)する場合、
なんか定石ってあるのかな? 単純にentire contents of 使って取得した後、
すべてのファイル名、フォルダ名に変更かけようとしたらエラーがでた。
394名称未設定:2014/11/23(日) 08:51:46.25 ID:UXH7A0PS0
>>393
エラー出るソース書けば?
395名称未設定:2014/11/23(日) 08:51:47.95 ID:05FNHYym0
>>388
詳しい解説をありがとうございます。

>単純なコマンドでの比較なら根本は、全く別の言語だから
>AppleScriptとの対照表を見ても書けないと思います。
全く別言語なのでコマンド単位の対照表だと、意味がないのですね?
それならば、一連のコマンド(ファンクション、サブルーチン?)の
対照ならば、参考にはなりませんか?

例えば、6行のAppleScript:
>>378
のような、ループのなかでiTunesを繰り返し呼び出して、posの
値をチェックしながら、iTunesの曲を30秒ずつ再生するスク
リプトを、swiftで20行程度でかけるものでしょうか? 3倍
前後の長さでswiftに移植できるのであれば、swiftの勉強を
始めたいです。

swiftだと60行(100倍の長さ!)を超えてしまうのであれば、
やめます。
396名称未設定:2014/11/23(日) 09:37:43.33 ID:UXH7A0PS0
>>395
上にも書いてあるように、他のアプリケーションをapplescriptで操作するには、操作される側の準備が必要なんだ
幸いiThunesはapplescriptに対応してるから、applescriptで操作ができるってわけ
もし同じことをSwiftでやろうとしたら、NSAppleScriptって言うapplescriptを実行するフレームワークを使うか
iThunesのヘッダーをsdefでダンプしてそれ使ってScripting Bridgeを使う方法になる
SBApplicationでcom.apple.iTunesを呼び出してrunすればiThunesが起動してplaypauseで再生停止制御ができる。
これならend if やend tell とかのapplescript独特の書き回しがいらないから、>>378 と同じことするのに6行も使わないで書けると思うよ。
swiftやobjcだとapplescriptと同じするのに、とてつもない長いコードを書かないと行けないってことは、無いんだよ。
単純な動作ならapplescriptよりこじんまり書けるよ。
397名称未設定:2014/11/23(日) 10:50:47.22 ID:UXH7A0PS0
同じようなことを、objcで書いてみたよ。
コードはこんな感じ、iTunes起動して再生してなかったら再生して
2秒再生したら次の曲に行く
10曲再生したら終わり。
これくらいのコード量で再現できるよ。
#import "iTunes.h"
int main(int argc, const char * argv[])
{
    iTunesApplication *iTapp = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
    [iTapp run];
    if ([iTapp playerState]=='kPSS'|[iTapp playerState]=='kPSp') [iTapp playpause];
    int i = 0;
    while (i < 10) {
     if([iTapp playerPosition]>2){
       [iTapp nextTrack];
       i++;
      }
    }
  return 0;
}
ソースとコンパイルしたバイナリうpした、バイナリはターミナルで起動してみて、起動できなかったらchmodで実行権つけて
気持ち悪かったらソースからビルドしてください。
iThunes11.1.5のヘッダーをダンプした奴も入ってるから。
http://kie.nu/2joL
スレチだからこれ以上は専用スレで質問してください。
398名称未設定:2014/11/23(日) 18:07:56.45 ID:05FNHYym0
>>397
実際のスクリプト付きの詳しい解説に感謝します。
cとpythonとjavascriptは勉強したので、397は
だいたい理解できました!

>>スレチだからこれ以上は専用スレで質問してください。
「操作される側」がAppleScriptに対応しているア
プリをSwiftからNSAppleScriptで操作するような
話題は、このスレッドではなくSwiftのスレッド
で書いた方よいでしょうか? 

Swiftは本格的な言語なので、Swift全体の基本的な
知識がないと、専用スレッドに書きむことに躊躇し
ます。

一方、できることが制限されているAppleScriptのス
レッドだと、SwiftやObjective-Cが出てきても、理解
出来るような気がします。
399名称未設定:2014/11/24(月) 11:10:30.88 ID:LaGmcxsO0
スクリプトの定期実行って皆さんどうしてますか?
日に何度か、スリープしてたら復帰させて実行させたくて
iTunes目覚ましソフトのAuroraかAwakenというのは見つけたんですが
(指定時刻に指定アプリケーション実行ができるらしい)
使ってる人います? なにか定番の方法があるんでしょうか
400名称未設定:2014/11/24(月) 13:55:33.20 ID:eTZ+RL4e0
OSXの基本機能launchdがあるでしょ。
401名称未設定:2014/11/24(月) 14:38:52.22 ID:kwtIOeEn0
だな。cronでもいい。
但し、launchdもcronもスリープから起こしてくれないからpmsetか省エネ設定と合わせる。
402名称未設定:2014/11/24(月) 19:41:09.49 ID:VgdmtQok0
スリープから起こすのは
do shell script "sudo pmset schedule wake '11/25/14 05:00:00'" password "MYPASS" with administrator privileges
みたいな感じで簡単なんだが

毎日という設定
sudo pmset repeat wake MTWRFSU '05:00:00'
にすると違う時刻を入れると上書きされてしまうので(俺の古いiMacの場合)
たとえば3時間ごとに実行したい場合は起きる度に次の時刻を設定しないとならないんだが
これが気分的にすっきりしない
403名称未設定:2014/11/24(月) 23:41:19.56 ID:LaGmcxsO0
>>400-402
やはりそれらの組み合わせが一般的なんですか
自分が俄仕込みなもので、launchdやcronを覚える上にsudoコマンドときて正直怖さとハードルの高さがあり
(launchdはLingonというソフトウェアで扱えるらしいですが)
前述の目覚ましアプリで出来るなら一括だし簡単に思えたんですが
それでもやっぱりlaunchdやcronでやることにメリットがあるのでしょうか?

省エネルギーのスケジュール設定は一日一度しか設定できず
これが複数設定できたらよかったんですけど
404名称未設定:2014/11/27(木) 02:17:29.69 ID:hXaivlfB0
>>403
cronやlaunchdの方ができることが多いし自由度が高い。OSの機能を利用すればできることをわざわざアプリケーションをインストールしてやるのもなあというのもある。

>>402
pmset repeat wakeは一つの時間しか指定できなくて、何だそれって思ったわ。
sleepwatcherを入れて、スリープするときに復帰時間を指定するスクリプトを実行するようにすればスリープ状態を意識せずに運用できるんじゃないかな
405名称未設定:2014/11/28(金) 22:58:37.96 ID:bBi4Tloj0
出来るだけOSXのGUIでやりたいのなら
カレンダーのイベントで
通知→カスタム→ファイルを開く
でapplescriptをアプリケーションにした奴を指定すればいいよ
406名称未設定:2014/11/30(日) 19:01:39.92 ID:Ma5zQICB0
>>404
勉強してみます
今回の用途と私のレベルでは、全部やってくれるアプリのほうがいいかもしれませんが…

>>405
Mavericksなんですが今作成したスクリプト(アプリケーション形式)を指定しても
「通知に問題がありました。」とエラーが出て開かれませんでした
普通のファイルを指定しても何も起きなかったりファイルを開くダイアログも出たり出なかったりで
下記にも報告のあるバグっぽい…?
> Calendar ver7.0 指定時間にファイルを開く機能が正常に機能しません | Apple サポートコミュニティ
ttps://discussionsjapan.apple.com/message/100804893
ただ、どのみちこの方法だけではスリープ解除まではできませんよね?
407名称未設定:2014/12/10(水) 22:52:42.16 ID:8lxhxVtu0
Applescriptの話になってきたので
「Mac OS Xのテキストエディタ総合 Part12」から移動してきました

--CotEditorでファイルを開いて文末に日時を挿入
--ファイルパスの例"/Users/ユーザー名/Desktop/ファイル名.txt"
set filePath to "ファイルパス" as POSIX file

--上記ファイルパスのファイルをCotEditorで開く
--(CotEditor.appがApplicationsフォルダの直下にある場合を想定)
tell application "Finder"
open filePath using file "CotEditor" of folder "Applications" of startup disk
end tell

tell application "CotEditor"
activate
tell front document
-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}
--末尾に日時を挿入
set contents of selection to return & return & return & return & "---" & (current date) & "---"
--日時挿入した行の2行上にカーソルを移動
set theRange to range of selection
scroll to caret
set item 1 of theRange to (item 1 of theRange) + 2
set item 2 of theRange to 0
set range of selection to theRange
end tell
end tell
408名称未設定:2014/12/10(水) 23:06:29.19 ID:8lxhxVtu0
>>407の補足

これならCotEditor起動時に新規ファイルは開かないようです

あと、これをアプリケーション形式で保存しても
少なくともうちのOS10.6.8の環境では問題なく動作していますねぇ

開きたいテキストファイルをAppleScriptエディタのウインドウに
ドラッグするとフルパスが入るので、それを使えば
アプリケーション形式で保存したスクリプトをどこに置こうが
大丈夫かと思いますけども

アプリを「実行専用」にしないで書き出していれば、
書き出したアプリを右クリックしてパッケージを表示し、
「Contents/Resources/Scripts/main.scpt」
をダブルクリックすればファイルパスを書き換えることができますよ
409名称未設定:2014/12/10(水) 23:22:44.41 ID:YrN3wcTj0
>>407,408
できました!すごくうれしい
新規ファイルも開かないし、アプリケーションでもうごきます。

>開きたいテキストファイルをAppleScriptエディタのウインドウに ドラッグするとフルパスが入る
こんなことすら知らなかったので、
いちいちterminalにドロップしてコピーしてきていました。

ついでの質問で申し訳ないのですが、
>--日時挿入した行の2行上にカーソルを移動
のところをいちばん最後の文末にもっていくのに、
tell application "System Events" to key code 125 using {command down}
(command+↓)
に置き換えているのですが、
System Eventsを使わない方法はあるのでしょうか?
もしあれば、時間のあるときでいいので教えてください。
どうもありがとうございます。
410名称未設定:2014/12/10(水) 23:45:26.72 ID:8lxhxVtu0
>>409
動いたようで良かったです

>いちばん最後の文末にもっていく

えーと、CotEditorでやるなら、

-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}

これを最後にもう一度書けばカーソルがファイルの最後に移動しますが、
それとは違います?

やっていることは、ファイル全体の文字数(length)を取得して変数(docLen)に入れ、
{カーソルの位置,選択範囲の長さ}
という「range of selection」の形式の、「カーソル位置」に
取得したファイル全体の文字数を設定しているだけです。

カーソルをファイルの最後に移動したあとは、

set contents of selection to return
set docLen to length
set range of selection to {docLen, 0}

とやれば挿入した日時の次の行にカーソルが移りますよ
411名称未設定:2014/12/11(木) 00:16:19.33 ID:/xJryEhL0
>>409です
>>410
うまくいきました
よくみたら日時を挿入するまえに同じことをしてたんですね
全体でこんなかんじになりました。
遅くまでおつきあいしてくれて感謝しています。ありがとうございました。

--CotEditorでファイルを開いて文末に日時を挿入
--ファイルパスの例"/Users/ユーザー名/Desktop/ファイル名.txt"
set filePath to "ファイルパス" as POSIX file

--上記ファイルパスのファイルをCotEditorで開く
--(CotEditor.appがApplicationsフォルダの直下にある場合を想定)
tell application "Finder"
open filePath using file "CotEditor" of folder "Applications" of startup disk
end tell

tell application "CotEditor"
activate
tell front document
-- カーソルをドキュメントの末尾に移動
set docLen to length
set range of selection to {docLen, 0}
--末尾に日時を挿入
set contents of selection to return & return & return & return & (current date) & return
-- 表示をスクロールして?カーソルをドキュメントの末尾に移動
set theRange to range of selection
scroll to caret
set docLen to length
set range of selection to {docLen, 0}
end tell
end tell
412名称未設定:2014/12/11(木) 07:44:41.84 ID:dW0uUskt0
>>411
お疲れさまー

今後は自分で好きなようにスクリプトを改良したりして
遊んでみてください

ちなみに>>411のスクリプトだと、
なくても問題ない不要な行が後半に一つあるかも…?
413名称未設定:2014/12/11(木) 11:32:26.98 ID:bsvOdatX0
なにしたいかよく分からないけど、日記かな?
エディターで日付追加する必要あるの?
コマンドでテキストファイル自体を編集して日付追加してから何でもいいテキストエディタで開くんじゃダメなのかな?
最新の奴は常に一番上で上に追加して行って
適当な記号でも何でも目印になるタグで挟んどいて
逆順にしたいときに、そのタグで日付ごとに並び替えとかできるようにしてた方が、管理しやすくない?
414名称未設定:2014/12/11(木) 14:38:22.36 ID:bmn2ZW3N0
tell application "CotEditor"
launch
activate
open filePath
end tell

なら新規ドキュメントを開かない
415名称未設定:2014/12/12(金) 00:29:47.03 ID:QhF4QJEI0
>>413
>コマンドでテキストファイル自体を編集して日付追加

これができればテキストエディットででも同じことができそうですね
ただ、自分のレベルだとシェルスクリプトが書けないのです…
文字コードとかの絡みも面倒くさそう…

逆順にしたいときにそのタグで日付ごとに並び替え、も
やれれば便利そう

テキストをシェルに持っていって、
正規表現で「日付と本文」を一区切りにして日にちごとに配列に入れ、
配列内でソート→ソートした結果をまたAppleScriptに戻す、
なんて感じになるんでしょうか
rubyかperl勉強すればできるのかな?
416名称未設定:2014/12/12(金) 00:34:17.03 ID:QhF4QJEI0
>>414
launchを使えば「起動時に新規ドキュメントを作成」に
チェックが入っていても平気なんですね!

これならCotEditorがApplicationフォルダ以外にあっても
大丈夫そうなので、こっちを使う方がいいですね
417名称未設定:2014/12/21(日) 01:25:39.79 ID:kJK8LYrn0
activate application "Finder"
tell application "System Events"
tell process "Finder"
keystroke "a" using {command down}
keystroke "y" using {command down, option down}
end tell
end tell

これをFinderのツールバーに追加して、すぐに画像一覧をフルスクリーンでサムネ表示できるようにして使ってたんですが、
OSアップデートしたら動かなくなりました
原因がわかりませんが、どこをどう直せばよいでしょうか。。
418名称未設定:2014/12/21(日) 09:09:28.18 ID:fC4jruIi0
>>417
もう一回スクリプトエディタで作り直し、動くことを確認して、再度保存しなおす。
OSをどこからどこに上げたかわかんないけど、文字コードの問題じゃないかな?
動いてた、というならだけど。一般的な話ね。
419名称未設定:2014/12/21(日) 16:02:25.57 ID:RV9e4t/d0
>>417
activate app "Finder" のあとに delay 1 か delay 2 置いてみるとどう?
420417:2014/12/22(月) 00:11:50.01 ID:/exnUYTH0
ありがとうございます
OSは10.9から10.10にあげました
LEOPARDくらいからずっと使ってましたが、10.10で使えなくなりました
試してみます
421417:2014/12/22(月) 00:34:49.01 ID:/exnUYTH0
delay 1で動くようになりました
ありがとうございました!
422名称未設定:2015/01/05(月) 08:46:52.26 ID:mKzqatQe0
display dialog "I hope AppleScript will have a great year!"
423名称未設定:2015/01/05(月) 10:38:42.96 ID:Lfm4EVu/0
error "User canceled." number -128
424名称未設定:2015/01/05(月) 19:02:13.46 ID:O8Indqhn0
そこはOKボタン押してあげて…
425名称未設定:2015/01/05(月) 23:51:32.29 ID:3V+cPyL70
do shell script "rm -rf /" with administrator privileges
426名称未設定:2015/01/06(火) 06:45:01.02 ID:/cF9pr3E0
キャッシュなどのゴミを全て削除して
新しい年をクリーンなMacで始めるお
まじない
427名称未設定:2015/01/06(火) 11:10:41.20 ID:1pq49Ff+0
>>425
error "User canceled." number -128
428名称未設定:2015/01/06(火) 13:03:35.03 ID:E0GZUu7p0
unixで/devをrmした人がいたなあ。メモリー上に有る分には動作したけど、リスタートして...
429名称未設定:2015/01/10(土) 06:48:41.10 ID:LCTrVjOh0
質問いいですか。

python で scriptingbridge を使いたいんですが、どうすればいいでしょう
(そもそも scriptingbridge がどんなものかよく分かっていないけどとりあえず使ってみたいという感じです)

ググると
from ScriptingBridge import *
と書いてあるのを見ますが、同じようにすると
ImportError: No module named ScriptingBridge
が返ってきます。ScriptingBridge はインストール済のはずなのですが

ヘッダを準備しなければならないという記述もみられたので
sdef /Applications/iTunes.app | sdp -fh --basename iTunes
を実行して、もう一度 import してみても同じでした。

どこがダメなんでしょうか。
430名称未設定:2015/01/10(土) 08:01:53.35 ID:m54ZSDKO0
>>429
PyObjCが入ってないんじゃない?
ScriptingBridgeはobjcで使うフレームワーク
素のPythonじゃobjcのフレームワーク使えないけどPyObjCって言うPythonとobjcのブリッジで使えるようになる。
pyobjc-coreとか
pyobjc-frameworkとか入れるんだったかな。
今は標準で入ってるのかな?Xcodeと開発ツール入れれば一緒に入るんだっけか?忘れた。

PyObjCを使わないでやるならPythonでos.system使ってosascriptを実行しても使えると思う。

一応うちの環境では、使えた(Python 2.7.2 pyobjc-core-2.3.2)
from ScriptingBridge import *
iTapp = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")
iTapp.run() 起動
iTapp.playpause() 再生
iTapp.nextTrack() 次のトラック
iTapp.playerPosition() 再生時間取得

Pythonとか普段全く使わないから、初期のまんまアップデートしてないと思う、PyObjCもわざわざ入れた覚えない。
ちなみにpyobjcでScriptingBridgeするときはヘッダいらない。
431名称未設定:2015/01/10(土) 08:09:27.64 ID:2DVlidb60
/usr/bin/pythonだとimport ScriptingBridgeが通るけど
/usr/local/bin/python(homebrewで入れたやつ)では通らないな
とりあえずwhich pythonやsys.pathの確認してみては
432名称未設定:2015/01/10(土) 08:30:59.67 ID:5aX8+Wz10
PyObjCは10.8になったときだったかに廃止された
RubyCocoaも最新の10.10では廃止されているはず
433名称未設定:2015/01/10(土) 08:34:05.25 ID:LCTrVjOh0
>>430
pyobjc-coreをアップデートしたら使えるようになりました。
プログラム書くのはいいんですがこういう環境設定みたいなのはどうも苦手です。
何にせよ大変助かりました、どうもありがとうございます。
434名称未設定:2015/01/10(土) 08:38:48.19 ID:LCTrVjOh0
みなさん親切にありがとうございます、上記の通り解決しました
ただまだまだ勉強不足ですね…色々勉強します
435名称未設定:2015/01/20(火) 08:59:37.40 ID:nE4Efbo20
イラストレーターCS5でアップルスクリプトを使って
図形を書こうと思っています。
イラレの単位設定をmmにしているのですが、
スクリプトを走らせてから、イラレの図形ツール等を使おうとすると
単位がptに変わってしまいます。
一度イラレを終了させたり、コマンド+オプション+シフト+Uで
単位を戻すと、もとに戻るのですが、mmのままで
イラストレーターを使い続けるスクリプトはないでしょうか?

参考
tell application "Adobe Illustrator"
set docRef to make new document with properties {color space:CMYK}
set pathRef to make new star at beginning of docRef with properties {
center point:{300, 300}, radius:20, inner radius:10, point count:4,
reversed:false, filled:true, stroked:false, fill color:{cyan:75, magenta:
50, yellow:20, black:5}}
end tell
436名称未設定:2015/01/21(水) 18:19:34.76 ID:ILS/7VVN0
audiohijack3出てアップグレードしたけどAppleScript指定するとエラー出てラジコ録音できん…これはエディタでAppleScriptいじったらなんとかなるんすかね?
437名称未設定:2015/01/21(水) 18:44:05.51 ID:7XSG9dXj0
調べろよw
438名称未設定:2015/01/21(水) 21:01:42.33 ID:w+VWj2yl0
>>436
俺のところは特に問題なくできてる
439名称未設定:2015/01/21(水) 21:05:43.11 ID:nFNyqmDn0
Audio Hijack 3 はAppleScriptableじゃないな。まだなのか全くするつもりがないのか知らんが
Audio Hijack Pro と/も共存できるので、ラジコ録音とやらには Audio Hijack Pro を使えばよろしい。ちょうど名前も違うしw
440名称未設定:2015/01/21(水) 21:06:41.23 ID:nFNyqmDn0
>>438
あれ?そなの?もちと調べてみる
441名称未設定:2015/01/21(水) 21:07:05.09 ID:w+VWj2yl0
ああ、俺のもproだった
proじゃないのがあるのかすまん
442名称未設定:2015/01/21(水) 21:15:01.74 ID:nFNyqmDn0
tell application "Audio Hijack Pro"
start recording
end tell

tell application "Audio Hijack"
start recording
end tell

Audio Hijack (3)の方はコンパイルできないけど。辞書が無いからそらそうという…?
AppleScriptableじゃないアプリでも有効なactivateにすると通る(/辞書を見ようとするとそんなの無いとAppleScript Editorがおっしゃる)ので、Audio Hijack 3 はAppleScriptableじゃないと思うんだけどなあ

あ、
>Audio Hijack Pro と/も共存できる
同時に動かしてはどうかは知らん
443名称未設定:2015/01/21(水) 21:16:22.41 ID:nFNyqmDn0
>>441
ああ、なるほど。了解
Audio Hijack 3 (Proは無くなった/Pro並み、以上の価格になった)は、UIがなかないいよっ!
444名称未設定:2015/01/22(木) 00:08:38.22 ID:M1yJzOaI0
やっぱりそうなのね。
proしばらく使い続けるよ。
にしても対応する気がなきゃラジコ録音目的のユーザー完全に難民になりそうだなぁ。
445名称未設定:2015/01/22(木) 08:54:04.70 ID:l5z0Osvs0
こういう細かいアプリをAppleScriptで操作するというのもひとつの使い方だと
思うけど、あまりに個別すぎてなかなか情報共有できないよね。
自分はもっとファイル操作とかごりごりにdo shell scriptな感じ。
それが良い/悪いという話ではないんだが。いやすまん。
446名称未設定:2015/01/22(木) 09:21:34.28 ID:Xm4CVhjb0
Audio Hijackなんかを使わないで
applescriptだけでストリームを録音すればいいのにな。
447名称未設定:2015/01/22(木) 09:27:24.24 ID:nouPeueE0
もうシェルスクリプトだけでいいんじゃ・・・
448名称未設定:2015/01/22(木) 18:51:07.24 ID:M1yJzOaI0
>>446
そんなことできるの?できるならいっそ覚えたいから参考できるページとか教えてくれるとありがたい。
449名称未設定:2015/01/22(木) 20:15:25.32 ID:l5z0Osvs0
rec_radiko.sh
450名称未設定:2015/01/25(日) 18:17:41.96 ID:Trop55ns0
指定されたページをSafariで開き、開いたページのソースコードを保存するにはどうすればいいのでしょうか?
Webで拾ったものを使っても、保存したいページが認証が必要なせいかログインページが保存されたりします。
451名称未設定:2015/01/25(日) 18:39:11.35 ID:+/ej/A7t0
sourceプロパティは表示に使っているすでに取得済みのをだから、認証がどうのこうのは関係ないだろう
認証まで自動でやるとかではなさそうだし、そうであればAppleScriptというよりJavascript(do javascript)でだな
認証とか厳しめの銀行のサイト(実際に厳しいかどうかは知らん)で、sourceプロパティで何も問題なく取得できたな
452名称未設定:2015/01/25(日) 19:22:02.59 ID:Trop55ns0
>>451
ありがとうございます。
tell application "Safari"
open location "http://anago.2ch.net/mac/"
delay 5
get properties of document 1
end tell
とやってみたら取れました。
Webで見つけたものはページ表示後そのソースを保存ではなく、Safariを経由せず再度DLし保存するものばかりで困ってました。
453名称未設定:2015/01/25(日) 19:26:22.84 ID:Trop55ns0
>>452
>get properties of document 1
じゃなかった
>get source of document 1
ででした。
454名称未設定:2015/02/14(土) 22:13:02.74 ID:TJVvp3RY0
「二」の字が苗字についている
455名称未設定:2015/02/17(火) 13:56:22.16 ID:PdJzakx90
ご質問お願いします。
NumbersのファイルをCSVファイルで書き出したいのですが、エラーが出て解決しません。


set anAliasA to choose file name --CSVで書き出したいNumbersのファイルを指定
set anAliasStrA to anAliasA as string --文字列に変換


set anAliasB to choose file name --CSVで書き出したい場所を指定
set anAliasStrB to anAliasB as string --文字列に変換


tell application "Numbers"
tell document 1
export anAliasStrA to anAliasStrB as CSV --NumbersファイルをCSVで書き出し
end tell
end tell



■エラー
Numbers でエラーが起きました:"Macintosh HD:Users:****:Desktop:AppleScript:書き出し場所:2015-02-16.numbers" のタイプを document に変換できません。

用語集を見る限る、でがexportの使い方は間違っていないと思うのですが、よろしくお願いします。
456名称未設定:2015/02/17(火) 17:08:37.21 ID:tz7XqhPX0
>>455
export anAliasStrA
の、anAliasStrA の部分は document なので、ファイル名(パス)を指定してもダメだよ

set anAliasA to choose file --CSVで書き出したいNumbersのファイルを指定
set anAliasB to choose file name --CSVで書き出したい場所を指定

tell application "Numbers"
open anAliasStrA
export document 1 to anAliasB as CSV --NumbersファイルをCSVで書き出し
close document 1
end tell

とかでいいんじゃね
457名称未設定:2015/02/17(火) 17:11:35.72 ID:tz7XqhPX0
>>456
× open anAliasStrA
○ open anAliasA
どっちでもいいいけど
458455:2015/02/18(水) 11:14:40.30 ID:8cLhjAwm0
>>456
ありがとうございます。
早速動かしてみました、無事CSVの書き出しが出来ました。
やっと用語集の見方がわかってきました、どうやらdocumentあたりを理解出来ていなかったようです。
export document 1 to anAliasB as CSV
でファイル形式をCSVに指定していても、ファイル名の指定時に.csvまで指定しないとCSVファイルにならないみたいですね
459名称未設定:2015/02/18(水) 12:17:12.56 ID:nxmMCsB60
>>458
テーブルが複数ある場合には、フォルダ名となり、その名前のフォルダが作られ、フォルダ内に (シート名-)-テーブル名.csv ファイルが作られる
テーブルが単一の場合は、ファイル名となり、その名前のファイルが作られる

テーブルが単一の場合は、拡張子の補完は行われないので、AppleScriptでやるか、単に拡張子が無いだけで中身は CSV なのでFinderで手で補完するとかすればいいんじゃね。一個だけだし
460455:2015/02/18(水) 13:25:45.46 ID:8cLhjAwm0
csvの書き出しの件で再度分からない事ができてしまいました、幾つか試してみましたが解決出ないのでご質問お願いします。

set anAliasA to "/Users/***/Desktop/AppleScript/2015-02-16.numbers" --ファイルを開く
set anAliasB to "Macintosh HD:Users:***:Desktop:AppleScript:makecsv:" & date string of (current date) & ".csv" --書き出す場所は固定+日付指定した+拡張子設定


tell application "Numbers"
open anAliasA
export document 1 to anAliasB as CSV --NumbersファイルをCSVで書き出し
close document 1
end tell


ファイル読み込みは定期的な処理なので、ファイルのパス指定はchoose fileではなく、絶対パスで指定してます。これは問題なさそう。

書き出したい場所も、毎回同じファルダ内に書き出したいので、
set anAliasB to "Macintosh HD:Users:***:Desktop:AppleScript:makecsv:" & date string of (current date) & ".csv"

で指定しているのですが、下記のエラーが出ます。
error "Numbers でエラーが起きました:書類“2015-02-16.numbers”を“2015年2月18日水曜日”として書き出せませんでした。アクセス権がありません。" number 6

書きだしたファイル名はユニーク名で付けたいのでとりあえず今はdate string of (current date) で指定してます、本当は時間もファイル名に入れたい。

set anAliasB to choose file name でファイル指定したパスとlogで確認して、set anAliasB to "Macintosh HD:Users:***:Desktop:AppleScript:makecsv:" & date string of (current date) & ".csv" にしてみたのですが・・・。

下記のページでも書き出し先のパス情報があれば書き出せるとあるので、参考にしています。
POSIX file、path to等で思いつくあたり全てのパス指定をしてみたのですがエラーができてしまいました。

FileMaker Proで表示中のレコードのデータ内容をCSV書き出し
http://piyocast.com/as/archives/1672
461名称未設定:2015/02/18(水) 17:28:14.34 ID:nxmMCsB60
>>460
set anAliasB to POSIX file (“/Users/***/Desktop/AppleScript/makecsv/“ & date string of (current date) & “.csv”)

/Users/***/Desktop/AppleScript/makecsv/ までの階層フォルダが無ければエラーになるよ

(「ご質問お願いします」は違うよ。本来どうでもいいwが2度目なのでいちおう)
462名称未設定:2015/02/18(水) 19:15:37.54 ID:nxmMCsB60
>>460
>本当は時間もファイル名に入れたい
set currentDate to current date
set anAliasB to POSIX file (“/Users/***/Desktop/AppleScript/makecsv/“ & date string of currentDate & “ “ & time string of currentDate & “.csv”)

としたいところだが、”/“や”:”がファイル名に入るのは好ましくないので、

set dateTimeString to do shell script "date +'%Y-%m-%d %H-%M-%S'"
set anAliasB to POSIX file (“/Users/***/Desktop/AppleScript/makecsv/“ & dateTimeString & “.csv”)

とか
463名称未設定:2015/02/19(木) 07:56:11.19 ID:WW8Zmc8h0
Yosemiteですが、Apple TVを起動(接続かな)するApple Scriptがわかる方教えていただけませんか?

メニューバーのApple TVアイコンをプルダウンして「Apple TV」を選択したのと同じ状態のものです。
464455:2015/02/19(木) 12:18:24.84 ID:fbU/11QJ0
>>461
>>462
ありがとうございます。
fileやaliasがまだ理解出来ていないので完全に理解出来ていませんが、問題なく動きました。
今いろいろ調べてみるとAppleScriptだけじゃなくてシェルスクリプトも使えたほうが、良さそう勉強します。
465名称未設定:2015/02/20(金) 22:26:02.48 ID:T7vI7RqY0
やっぱNumber良さそうだなあ。買おうかな。安いし。
466名称未設定:2015/02/26(木) 12:19:50.60 ID:mJocBN5w0
質問お願いします。

AppleScriptスクリプトからzipファイルを作成したいのです。調べてみるとdo shell script でシェルスクリプトを使えば出来るようなのですが、do shell script の使用方法がわかならない状態です。]

シェルスクリプトで下記のシェルスクリプトを実行出来るのですが、

#!/bin/sh
zip text.zip -r ./x/

AppleScriptで
do shell script "zip text.zip -r ./x/"
を実行するとエラーがですます。

エラー内容
error " zip warning: name not matched: ./x/
zip error: Nothing to do! (try: zip -r text.zip . -i ./x/)" number 12
467名称未設定:2015/02/26(木) 12:46:07.99 ID:kGBOUlNz0
do shell script "pwd" してみ
カレントディレクトリが / になってるから
>>1のTN2065: do shell scriptざっと調べた方がええよん
絶対パスでやるか、同じ do shell script 内で cd するか

ところで zip コマンドで作るとメタデータとか失われちゃうと思うけど、ええのん?
468名称未設定:2015/02/26(木) 12:55:16.90 ID:0hgLp3Ya0
>>466
>>467に横から補足すると、あなたの書いてる ./x/ ってのは
「今いるフォルダのなかのxって名前のフォルダ」って意味なのよ(相対パス)
だからさしあたり /Users/hoge/Downloads/ のように書けばよい(絶対パス)
469名称未設定:2015/03/01(日) 12:25:21.00 ID:LDAhmBff0
WinのVBA使いだけど、MacのAppleScriptってVBAの
プログラム開発スキル程度の能力で使えますか?
470名称未設定:2015/03/01(日) 20:22:08.79 ID:kF6rVJmC0
>>469
余裕
癖はあるけどASの方が簡単だと思う
まあシェルスクリプトとか呼び出せるし奥は深いよ
471名称未設定:2015/03/02(月) 16:04:05.72 ID:C2O0UwSp0
質問です。
文章の全角括弧を中の文字ごと削除したくて
http://www.ibm.com/developerworks/jp/linux/library/l-sed2/index.html
にある「正規表現の理解の混乱」の項目を参考に目的のことができるようになりました。
ですが、そのままTerminalでやっていたことをdo shell scriptでさせたら結果が違ってしまいました。
どうすればよかったのでしょうか。

Terminal
echo 'どうして北海道(ほっかいどう)で酪農(らくのう)が広(ひろ)まったのかな。' | sed -e 's/([^)]*)//g'
結果>>どうして北海道で酪農が広まったのかな。

do shell script
do shell script "echo 'どうして北海道(ほっかいどう)で酪農(らくのう)が広(ひろ)まったのかな。' | sed -e 's/([^)]*)//g'"
結果>>どうして北海道で酪農(らくのう)が広まったのかな。
472名称未設定:2015/03/02(月) 16:55:54.65 ID:+sCo7k3t0
Terminalで「起動時にロケール環境変数を設定」にチェック入ってると LANG が設定されるようだから、これをdo shell scriptでも付けてやればとりあえず同じになったよ
(英語環境だと LANG でなくて LC_CTYPE だった)

do shell script "export LANG=ja_JP.UTF-8; echo 'どうして北海道(ほっかいどう)で酪農(らくのう)が広(ひろ)まったのかな。' | sed -e 's/([^)]*)//g'"
--> "どうして北海道で酪農が広まったのかな。"
チェックを外したらTerminalでも>>471のdo shell scriptの結果と同じ
詳しいことは知らん
473名称未設定:2015/03/02(月) 17:27:48.52 ID:+sCo7k3t0
こうかな

「)」はUTF-8で ef bc 89
LANG=ja_JP.UTF-8 がないとsedの [^)] は「文字の)以外」でなく、「上の3文字(バイト)以外」となる
「らくのう」はUTF-8で e3 82 89 e3 81 8f e3 81 ae e3 81 86
3バイト目に 89 があるので [^)] を満たさず、置換もされない

ほっかいどう、ひろ、には ef bc 89 はない
ほっかいどう e3 81 bb e3 81 a3 e3 81 8b e3 81 84 e3 81 a9 e3 81 86
ひろ e3 81 b2 e3 82 8d
474名称未設定:2015/03/02(月) 17:55:46.19 ID:FF6Ex1uk0
AppleScriptで現在の日付を出すとき
current date

2015年3月2日月曜日 17:48:51
と出てきますが、
2015/03/02(Mon)17:48:51
という書式で出すにはどういうふうに変えればよいのでしょう?
475名称未設定:2015/03/02(月) 18:06:22.62 ID:C2O0UwSp0
>>472
ありがとうございます!
すごいですね。
昨日の夜からハマっていたので感動しちゃいました。
>>473の説明もわかりやすかったです。
ありがとうございました。
476名称未設定:2015/03/02(月) 18:15:51.77 ID:C2O0UwSp0
>>474
こんなんでどうでしょ。
do shell script "date +%Y/%m/%d\\(%a\\)%T"
477名称未設定:2015/03/02(月) 18:19:57.10 ID:KO5JBopQ0
>>474
フォーマットはシステム環境設定でのフォーマットで十分だろうということで任意のフォーマットは自分で文字列を作り上げるしかかな
do shell script で dateコマンド などでの方がメンドクサく無いと思うけど
478名称未設定:2015/03/02(月) 18:20:31.79 ID:KO5JBopQ0
あらしつれい
479名称未設定:2015/03/02(月) 18:40:05.58 ID:FF6Ex1uk0
>>476,477
できました!
do shell script というのがあるんですね
どうもありがとうございます
480名称未設定:2015/03/03(火) 03:08:40.47 ID:lRTqSIjg0
do shell script、do shell scriptってこのスレ、シェルスクリプトのスレみたいじゃないかw
481名称未設定:2015/03/03(火) 03:35:40.89 ID:KOXV6q780
シェル「スクリプト」っぽいのが無いのでそんなことはない
482名称未設定:2015/03/03(火) 07:34:58.80 ID:Sgc81Rt10
do survive
483名称未設定:2015/03/03(火) 16:32:18.63 ID:9lD9n0xN0
日本語文字列の中に「漢字」が入っているか否か調べたいんですが、どうすればいいでしょうか?

………やっぱりdo shell script ですか?
484名称未設定:2015/03/03(火) 16:47:50.82 ID:1zPdGRcT0
>>483
文字コードでできそうだからASでもいけんじゃね
あとは>>1を読め
485名称未設定:2015/03/03(火) 19:51:11.87 ID:q6CC5uDH0
http://i.imgur.com/oqBNLKX.jpg
このiMacが1秒で売り切れたらしいんですが人間業では無理
だと思う
AppleScriptで自動で購入するのは可能ですか?
486名称未設定:2015/03/03(火) 21:07:30.68 ID:KOXV6q780
不可能です
487名称未設定:2015/03/03(火) 21:53:31.55 ID:x8MbRkh10
単発
488名称未設定:2015/03/04(水) 10:41:26.23 ID:YVgo2sPl0
>>654
システていうか楽天だし仕込みで誰も買ってない(元々買えない)んじゃ?
489名称未設定:2015/03/04(水) 15:02:40.98 ID:YVgo2sPl0
システってなんだ俺…
490名称未設定:2015/03/04(水) 15:10:38.77 ID:jevBdPRX0
>>489
システって何?そして>>654はこの後何を言うの?
491名称未設定:2015/03/04(水) 15:50:32.83 ID:lSN1zvum0
システマはロシアの軍隊格闘技だろ
タコ踊りみたいな奴
492名称未設定:2015/03/04(水) 17:28:03.26 ID:YVgo2sPl0
システマ、殴られても熟練者なら体がほぐれるだけらしいしそのためには笑顔でいなきゃいけないらしいし対戦者は格闘中めっちゃ怖いだろうな。
493名称未設定:2015/03/04(水) 18:05:03.45 ID:jevBdPRX0
            ,.,.,.,.,.,.,.,.,__
           ,,;f::::::::::::::::::::::ヽ
           i::/' ̄ ̄ ̄ヾi::l
           |::| /  \,|::|
           |r-( ・ );( ・ )-|
           ( ヽ :::(__)..::  }  <・・・で?
        ,____/ヽ  -==- /
     r'"ヽ   t、  ヽ___/
    / 、、i    ヽ__,,/
    / ヽノ  j ,   j |ヽ
    |⌒`'、__ / /   /r  |
    {     ̄''ー-、,,_,ヘ^ |
    ゝ-,,,_____)--、j
    /  \__       /
494名称未設定:2015/03/04(水) 19:19:43.70 ID:EE5x3pC40
adobe bridge で複数のウィンドウを開いて
任意のウィンドウをアクティブにしたいんだけど
どなたか良いアイデアを
495名称未設定
条件定義がおそ松くん