X



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

レス数が1000を超えています。これ以上書き込みはできません。
0001名称未設定
垢版 |
2013/12/21(土) 21:50:45.07ID:1PJJFexL0
質問、発表どっちでもスレ。

■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
OSバージョンも忘れずに。

■参考
AppleScript Language Guide
https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
TN2065: do shell script
https://developer.apple.com/library/mac/technotes/tn2065/
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
MacWiki - AppleScript
http://macwiki.sourceforge.jp/wiki/index.php/AppleScript
鳶嶋工房 / AppleScript
http://tonbi.jp/AppleScript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ
1 http://pc11.2ch.net/test/read.cgi/mac/1174045850/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
5 http://anago.2ch.net/test/read.cgi/mac/1330350325/
0003名称未設定
垢版 |
2013/12/22(日) 22:55:07.58ID:+aPbluVJ0
ここ数年まったく書いてないなAS
0004名称未設定
垢版 |
2013/12/27(金) 19:35:53.59ID:9xzAYkXqi
マベにてosascriptをセキュリティープライバシーに登録するのはどうやるのでしょう?

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

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

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

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

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

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

display dialg "Happy New Year!!!"

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

なんてこったorz デバッグ初めもやっちまった。
0014名称未設定
垢版 |
2014/01/02(木) 12:10:19.86ID:ipDSuQZK0
直前のスペースも全角だから注意w
0015名称未設定
垢版 |
2014/01/06(月) 19:04:31.61ID: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)
とあります
(行間をつめたいけどできない)でやりたいのだがどなたかご教授ください。
0016名称未設定
垢版 |
2014/01/06(月) 23:03:17.53ID: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外省略
0017名称未設定
垢版 |
2014/01/06(月) 23:49:20.98ID: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 なんか どうひねっても浮かんできませんね。(^^;)

でも行間の操作ができましたのでとても助かりました。本当にありがとうございました。感謝です!
0018名称未設定
垢版 |
2014/01/07(火) 00:25:10.25ID: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の略で値を見ることは出来るけどスクリプト側で設定することは出来ないって事だよ。
0019名称未設定
垢版 |
2014/01/07(火) 03:56:23.30ID: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
0020名称未設定
垢版 |
2014/01/07(火) 04:19:36.79ID:A9XxL9bQ0
失礼 アンパサンドの文字参照がダメなようで全角で
log tmp1 & "_" & tmp2 as text

log tmp1 & "_" & tmp2 as text
&を全角にしてます
0021名称未設定
垢版 |
2014/01/07(火) 12:17:10.13ID:pSl4+Q4s0
それってtestItemにtest1そのものではなくtest1の値を代入してるだけなんで、
変数名どーこー以前の問題ですわ
0022名称未設定
垢版 |
2014/01/07(火) 12:37:03.68ID: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)
と変更しても改行後の文には行間は及ぼしません。

どのような記述がよろしいでしょうか?
0023名称未設定
垢版 |
2014/01/07(火) 12:38:02.99ID: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)
と変更しても改行後の文には行間は及ぼしません。

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

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

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

ありがとうございました。
0025名称未設定
垢版 |
2014/01/07(火) 18:27:44.74ID:DaJojQA60
>>21
いやそれは、分かってるんです
変数の名前を取得する方法があれば教えてほしいのです。
分からなかったので、変数名と同じ名前をテキストでリストに入れて呼び出してたのですが、
それをしないでも、変数名が取得できれば楽だと思ったので、
無いのですかね?
0027名称未設定
垢版 |
2014/01/10(金) 19:08:15.63ID:+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

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

テキストボックスは固定してテキストが少なくても全体が均一になるよう自動行間、自動調整できないかと思案しています。
どなたかご教授よろしくお願いします。
0028名称未設定
垢版 |
2014/01/11(土) 01:25:24.03ID: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でって事なら入門書をどうにかして入手して
最初から本の通りにスクリプト入力して実行してはちょっといじって確認して…
みたいなことを繰り返しながら全部通しでやるのが良い。
0029名称未設定
垢版 |
2014/01/11(土) 10:18:55.69ID:kmKDcWFPP
初心者にイラレほかアドビの主戦級ってけっこう厳しいと思うですの。本当に必要性があれば書くけれど、
私の戦場ではいまだにその需要がない。たぶんイラレで自由自在にスクリプト書ければ黒帯でしょう。

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

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

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

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

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

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

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

たけうちとおるさんのハンドラを利用してオーバーフローしたテキストに行間を計算させて
必要なテキストボックスのオーバーフローの分を自動計算させる事にこぎ着けました。
まだ改善の余地はありますがなんとか思惑通りになりほっとしています。
今のところ別textframeの行間も一緒に動いているようなので指定したtext frameだけの行間を調整できるようにしたいと思います。
アドバイスありがとうございました。引き続きご教授賜りますようお願いいたします。
0034名称未設定
垢版 |
2014/01/11(土) 23:13:33.10ID: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
0035名称未設定
垢版 |
2014/01/11(土) 23:14:36.55ID: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
0036名称未設定
垢版 |
2014/01/11(土) 23:27:23.61ID: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

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

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

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

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

参考にさせていただきます。
0041名称未設定
垢版 |
2014/01/11(土) 23:39:53.28ID: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
0042名称未設定
垢版 |
2014/01/11(土) 23:54:58.99ID: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

で、終了してます。エラーは出ていません。
0043名称未設定
垢版 |
2014/01/11(土) 23:59:00.58ID:QDclpEY40
ちなみに環境は
osx 10.9.1
Applescript 2.6
illustrator CC
です
0044名称未設定
垢版 |
2014/01/12(日) 00:04:37.80ID: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
0045名称未設定
垢版 |
2014/01/12(日) 00:23:03.89ID: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
0046名称未設定
垢版 |
2014/01/12(日) 01:14:51.44ID: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
0047名称未設定
垢版 |
2014/01/12(日) 01:20:17.06ID:yPrbZhDQ0
あ、やっぱダメだ…
エリア外のparagraphに対してleadingの設定ができなさそう。
0048名称未設定
垢版 |
2014/01/12(日) 10:47:12.63ID:od5l1ettP
ウザすぎ。ここは手取り足取り教える場所じゃねーんだよ。よそでやれ。
0049名称未設定
垢版 |
2014/01/12(日) 10:49:19.47ID:od5l1ettP
書き忘れた。やるならここ見てるいろんな人に還元しながらやれ。それなら歓迎。
0050名称未設定
垢版 |
2014/01/12(日) 22:23:31.18ID:4upz722c0
>46さん
いろいろありがとうございます。m(_ _)m

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


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

おっしゃる通りです。皆様とともに学びを通してapplescriptでの可能性を見てみたいと思っています。今後ともよろしくお願いします。
0051名称未設定
垢版 |
2014/01/12(日) 22:26:26.36ID: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
0052名称未設定
垢版 |
2014/01/12(日) 22:27:20.26ID: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
0053名称未設定
垢版 |
2014/01/13(月) 03:11:37.98ID:Sx62P48w0
do shell scriptを何度も繰り返しているのだけど、shellコマンドを入力する度に別のターミナルが開いてしまう。

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

hogeとhoge2のコマンドを一つのターミナルウィンドウで処理させる事ってできますか?
0054名称未設定
垢版 |
2014/01/13(月) 03:29:47.81ID:XwnsQAAS0
コピペで動くんじゃないか
0055名称未設定
垢版 |
2014/01/13(月) 04:10:03.05ID: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でも使える方法
0056名称未設定
垢版 |
2014/01/13(月) 08:43:43.11ID:Wpl4bEnlP
>>53
どういう理屈でアプリケーションを操作する仕組みか考えるといい。
Terminalはshellコマンドを実行するアプリではなく、PCをターミナルウインドウで
操作するアプリ。だからillustratorでパスとかオブジェクトを操作するのと同様、
操作する対象を「tell」などで明確にして実行することが大切。
その例だとアプリ本体に実行を指示しているだけなのでそんな結果になる。
過去にもその話、あったよ。
0057名称未設定
垢版 |
2014/01/14(火) 16:18:00.69ID: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
0058名称未設定
垢版 |
2014/01/14(火) 21:10:07.61ID:ZXykgTnJ0
>>57
ここで散々質問してきた人?
だとしたら成長の跡が見られない。
tellとはなんぞやからやり直した方が良い。
0059名称未設定
垢版 |
2014/01/14(火) 22:03:45.56ID: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
0060名称未設定
垢版 |
2014/01/14(火) 22:57:38.60ID: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
0061名称未設定
垢版 |
2014/01/14(火) 23:30:19.11ID:VipRDOQb0
>58
>だとしたら成長の跡が見られない。

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

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

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

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


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

人の可能性を育てるのもこの世界だ。なんらかの縁でここに来ているならそれこそ大事にしなさいな。
わからん人には何倍でも説明したら説明するほど自分の理解度が増していく。それはあらゆるところから情報を
得ようと自分が勉強することになるからね。
それが社会勉強なんだよ。プログラムを訪ねにここへ来る人はそれが本来の目的ではないと思う。
最終的に誰かにきちんと説明だできるまでになるようになるための勉強でもあるんだよ。
だから人が困っているなら自分が勉強したのが役立つときなのだ。
58さんわかったかね。
0068名称未設定
垢版 |
2014/01/15(水) 12:03:57.04ID:/LtsrHqK0
あたまのわるいやつおおすぎ
0069名称未設定
垢版 |
2014/01/15(水) 12:43:41.67ID:/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"}
これってどうだろうか
0070名称未設定
垢版 |
2014/01/15(水) 12:56:37.57ID:rX7GSZ3z0
58もしょーもないけどあんたもぶちまけ過ぎ
0071名称未設定
垢版 |
2014/01/15(水) 13:32:40.20ID:NM6x1RRT0
だな。てか、やっぱり教えてほしい方が教えてくれる人を定義しているのか?
だったらダメダメだなあ。連投で超ダメダメ具合を晒して病んでるなと思うな。黙って質問だけしてりゃいいのに
0072名称未設定
垢版 |
2014/01/15(水) 14:38:35.33ID:/LtsrHqK0
>70
>71
>あんたもぶちまけ過ぎ
本音で語らないといけないと教わっているもんでね。
>やっぱり教えてほしい方が教えてくれる人を定義しているのか?
定義も何もしてないし、ごく普通の感覚だよ。
技術者の前に人であってほしいという思いだけです。
>連投で超ダメダメ具合を晒して病んでるなと思うな。
連投ではだめですか?
枯れ木も山のにぎわいというではないかね。
盛り上げたいだけですよ。(笑
>黙って質問だけしてりゃいいのに
何かを恐れながら聞き出しているって感じだね。
牽制しながら質問しているようだが....お互い成長期ですかね。幼少期か。
すごいプログラム例えば自動化をしている人がいますか?
印刷業界で第一人者、デジタルでばりばりapplescriptを利用していますか?
それも自動化にして楽してお仕事してますか?
applescriptで日本を代表する人がここにいますか?
applescriptの執筆活動家はいますか?
もしそういう人がここにいたなら日本のapplescriptのベースを引き上げてほしいな。
まぁ諸先輩方の考え方はよく知らないけどこの程度でだめだしならしょうがないね。
もう少し太っ腹かと期待したが無理だったということか。
まあせいぜい牽制しながらぼちぼちやりなよ。(笑
また質問などさせてもらうけどね。
0073名称未設定
垢版 |
2014/01/15(水) 14:58:13.51ID:NM6x1RRT0
>本音で語らないといけないと教わっているもんでね
教わっているなら、>>58のもそのままとればいい。自分が語るのだけ?他人が語るのは許さないの?
全くAppleScriptと関係無いのにうんざりだぜ

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

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

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

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

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

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

d
010797
垢版 |
2014/01/23(木) 22:17:46.59ID: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
010897
垢版 |
2014/01/23(木) 22:28:42.30ID:iJWTvZ5CP
続きですが
みなさんの指摘どおり、普通にISOをマウントするとフォルダウインドウが開いたり
マウントしたディスクを再度再生アプリで開いたりといろいろ面倒で試行錯誤した次第。

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

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

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

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

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

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

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

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

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

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

ネットちょっとさまよってたら、サーバー側に受け手としてPHPを
ひとつ仕込んでおき、そこにGETのcurlでアクセス、それを
do shell scriptで拾うのがあったよ。ただ、SQLインジェクションとか
URLエンコードがどーなるのかは不明。でも、できるらしいね。
0142名称未設定
垢版 |
2014/01/31(金) 02:06:43.01ID:q4ztzmWK0
>>141
どの程度の操作をしたいのか分からんけど、データの入力とか展開ならPHP使えるなら適当にapiつくって、curlで操作するのが一番簡単じゃないかな?
てか運用してるなら入力とか抽出のapiはもうあるんじゃない? それ使えば良いと思う
SQLインジェクションはweb上のフォームとかがちゃんと作ってあるなら問題ないでそ
データ入力はcurlで値をポストすれば良いし
URLエンコードはcurlのポストのオプションでやってくれるけど
日本語のデータ入力の場合applescript内の文字コードがutf8だから、
それ以外の文字コードの場合、curlでポストする前にワンラインで文字コード変換しないとUTF8でエンコードしちゃうから
自前で文字コード変換とURLエンコードのハンドラ作っとくのがいいと思う
0143名称未設定
垢版 |
2014/01/31(金) 03:58:54.92ID: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のコマンドリストって形にしてみたけど
細かい命令書き直せば普通に使えるんじゃねリモート
環境設定の共有でリモートアップルイベントオンにしてユーザー登録しといてね。
ちなみにタブを全角スペースにしてるからコピペ注意してね
0144名称未設定
垢版 |
2014/01/31(金) 08:18:18.27ID:uWeNXE6JP
>>143
その実行力感服します。このスレの神は有言実行だった。
PHPで適当にapiつくってcurlのところにGETでSQLぶちこみゃいいのね。
リモートのAppleEventのことも分かりやすいなあ。
これでファイルメーカーバージョンアップしなくてもいいね。
すばらしいの一言。セキュリティのことはまた勉強しないとね。
0146名称未設定
垢版 |
2014/02/08(土) 15:58:08.45ID:nsDgn/AA0
なんかここの人たちレベルが高いですね。
質問です。
シェルスクリプトを選択したファイルやフォルダに対して実行する方法ってありますか?
0147名称未設定
垢版 |
2014/02/08(土) 16:08:10.74ID: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で書いてるので結果どうなるかは知らない。
0148名称未設定
垢版 |
2014/02/08(土) 16:48:59.19ID: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にスペースがない
0149名称未設定
垢版 |
2014/02/08(土) 17:40:10.80ID:cWG4pfK10
GetFileInfo ってXcode、の追加のCLIツール、入れないと無いんじゃないの
0151名称未設定
垢版 |
2014/02/08(土) 18:07:01.62ID:jmpl7yBh0
Finderで選択したファイル/フォルダに対してなら、Automatorでサービスもなかなか便利。実行そのものはAppleScriptだけど

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

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

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

処理本体は別のハンドラにしておいて、
デバッグする時はrunハンドラから適当なエイリアスのリストを渡すようにすれば、
スクリプトエディタでも動作確認できるぜ
ざっくりやるならchoose file/folderの結果がそのまま使える
0157名称未設定
垢版 |
2014/02/08(土) 22:26:25.46ID:tRhLBcwSP
>>154
素朴な疑問ですみませんが、なんで変数にQなんてとるの?
見たことないんだけど意味あるの?
やっぱりrepeat with とくれが i t s くらいで、そのあと小文字でp q r
あたり使うのが普通だと思うんだけど。
大文字でQってなんかすごく自己主張が激しいというかw
それに普通の変数に1文字変数とかあとで面倒でしょ。

とか思いました。固有名詞にaとかtheとかつけた変数の付け方
考えた人はえらいなあと思う。AppleScriptだと定冠詞つけてるみたいで
本当に英語みたいだよね。
Xcodeよく使うのでコード補完使ってると変数長くなりまくりだけどね。
0158名称未設定
垢版 |
2014/02/08(土) 22:28:24.72ID:tRhLBcwSP
あ、変数にQって使ったことあったな。ダイアログの質問項目を変数にしたとき、QuestionのQとして
Q1、Q2、Q3とか質問項目作ったことあったなあ、、、、、、。
0159146
垢版 |
2014/02/08(土) 22:40:30.76ID: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
アプリを使うよりも全然早いのでよく使います。
教えてもらった奴で似たことができそうですね。
いろいろいじくって試してみます。
ありがとうございました。
0160名称未設定
垢版 |
2014/02/08(土) 23:13:29.55ID: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
0161名称未設定
垢版 |
2014/02/09(日) 05:17:21.79ID: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
0162名称未設定
垢版 |
2014/02/09(日) 05:38:49.19ID: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とかの英語以外での環境での英語表示とかどうやるんだっけ?
これだと環境依存で気持ち悪いなー
0163名称未設定
垢版 |
2014/02/09(日) 07:12:57.69ID: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)
0164名称未設定
垢版 |
2014/02/09(日) 08:47:41.45ID: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
ありがとうございました!
0165146
垢版 |
2014/02/09(日) 10:51:43.82ID:ohdnntp30
>>162 >>163
うわ、すごいな。
まだ試せていないけど、取り急ぎ感謝です。
これをもとに色々勉強できそうです。
ありがとうございました。
0167名称未設定
垢版 |
2014/02/19(水) 20:41:23.94ID:85Ztrva8P
画像に悪用防止で透かしを入れた画像を作りたいのだが、ASでさくっといけないものだろうか。
0168名称未設定
垢版 |
2014/02/19(水) 21:54:02.95ID:Ieto0spB0
シェルスクリプト含ませれば早いだろう
ググって素案できたらまた来いや
0169名称未設定
垢版 |
2014/02/21(金) 16:09:03.28ID: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のやつみたいにログだけ出る無害なバグなのかな?
0170名称未設定
垢版 |
2014/02/21(金) 18:36:12.43ID:Jl0LW+tB0
>>169
Garbage Collection(GC)は、もう使うなだったような
AutoreleasePoolが使えないってのはAutomatic Reference Counting(ARC)がオンになっているんんじゃね。GCとARCは共存できないハズだが共にオンだとGCだけが有効とかかな
GCもARCもオフにしてみるとか
0171名称未設定
垢版 |
2014/02/21(金) 21:19:18.60ID:9KWp105h0
>>170
そうそうGC必須にするとdeprecatedだがらARCに変えろってアラート出る
でもなぜか動作が安定する、GCエラーログ出るけど。。。
ARCはデフォルトで全体でオフになってて試しにONにしてもoffの時と動作は変わりませんでした。
GCオフだと勝手にオンになってのかと思って、個別にCompilerFlagでオフしてみたけど変わらず
CFAbsoluteTimeGetCurrent呼び出すと落ちる以外に
NSTaskでパイプに入ると落ちたり
NSThread使うと処理終了時に落ちる

NSThreadに関して言えばGCオンで動作はするものの、処理終了までメインがかなりの確率でロックされる、たまにロックされないんだけど、
一応NSThreadの isMainThreadで確認するとinitWithTargetで投げた処理は別スレッドになってるみたいなんだけどなんでだろ
ここら辺詳しい方教えてください
0172名称未設定
垢版 |
2014/02/22(土) 04:27:05.52ID: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で音が鳴り終わったらエラーが出るサンプル作ったから、試してみて下しあ
ボタン押すとシステムサウンドが鳴ってエラーがあった場合コンソールに表示されます。
0173名称未設定
垢版 |
2014/02/22(土) 04:28:26.91ID: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_
0174名称未設定
垢版 |
2014/02/25(火) 09:54:30.60ID: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
0175名称未設定
垢版 |
2014/02/25(火) 11:13:11.62ID: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での話しのようだけどな
0176名称未設定
垢版 |
2014/02/26(水) 05:35:05.90ID: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だけでもスクリプタブルなアプリ作れるってことに気づいた
0177名称未設定
垢版 |
2014/02/28(金) 13:09:21.15ID:/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機作ろうかな
0178名称未設定
垢版 |
2014/03/26(水) 18:20:55.71ID:8j8sFi4/0
display notification "sage" with title "Mavericks" sound name "beep"
0179名称未設定
垢版 |
2014/03/29(土) 09:04:02.90ID: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にてリスト表示の幅を調整するにはどうしたらいいのでしょうか?
アドバイスなどよろしくお願いします。
0180名称未設定
垢版 |
2014/03/29(土) 16:08:35.33ID: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
0181名称未設定
垢版 |
2014/04/01(火) 01:58:03.39ID:ynLRXj0p0
>>180
ありがとうございます!バッチリでした!
でも、なぜ記載されていない項目をコントロール出来るのか、
後学のためにも概略でいいので解説いただけませんでしょうか。
ふしぎでしょうがないです。
0182名称未設定
垢版 |
2014/04/15(火) 17:50:21.49ID: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
0183名称未設定
垢版 |
2014/04/15(火) 18:37:52.52ID: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
でいいんじゃないの
0184名称未設定
垢版 |
2014/04/15(火) 18:43:07.83ID: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)
0185名称未設定
垢版 |
2014/04/15(火) 19:17:18.30ID:SZkyhnNr0
>>184
早速ありがとうございます。
>>184でもダメでした。
set activeApp to "CotEditor"
もダメで、変数を使うと全てアウトのようです。
一応class of activeAppでパターン1と2の型を調べてみましたがtextでした。
0186名称未設定
垢版 |
2014/04/15(火) 20:04:50.33ID:fqFcyd/l0
>>185
ちなみにTerminalでやれば
tell application "System Events" to set activeApp to name of application processes whose frontmost is true
は、Terminalだよ。前のdelay入れて、その間にCotEditorを表にしてってしてるんだよね?
0187名称未設定
垢版 |
2014/04/15(火) 20:07:12.17ID:fqFcyd/l0
>>186
×前にdelay入れて
○前のdelay入れて

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

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

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

もうひとつ、黒い板が真っ黒でなくムラがちょっとあって、マジックワンドで
余黒部分を一括選択とかできない(ASで同様のことできるのかわからないけど)
ほぼ初めてPSでASやってみようと思ってるけど、やっぱ画像いじるような処理は
なかなか難しいわ。苦戦中
0201名称未設定
垢版 |
2014/05/16(金) 08:37:55.51ID:qCvHB/PF0
Xcode で、 AS で TableView にデータを追加する方法おしえてください。すごく単純な質問で
すみませんが、ググってもうまくいきません。
また、Xcodeでの使い方をまとめてあるサイトがあったら教えてください。
tell aTextView to setStringValue_(strVal)
を調べるのに丸一日かかったので、、
0202名称未設定
垢版 |
2014/05/16(金) 09:05:53.87ID:5Z546CfG0
>>201
海外にASOCの電子書籍あるよ! 買えばすぐに分かる。
やるつもりなら買ってね。3000円くらいだったかな?
買えば基礎がわかり、そうするとWEBにある情報が活用できる。
ぴよさんのところに情報があったような。
0203名称未設定
垢版 |
2014/05/16(金) 09:34:00.84ID: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を変数名にしたレコードを追加するだけでも、列に追加できたと思う
でも違うクラスで管理した方が動的に管理しやすいからおすすめ
0204名称未設定
垢版 |
2014/05/16(金) 21:56:27.55ID:DGo5mYXH0
なんかASOCでsandboxできるようになってた。俺もMacAppデビューか?
0205名称未設定
垢版 |
2014/05/17(土) 18:46:23.15ID:iUPgYNrF0
IllustratorCS5なんですが、前面へペーストってAppleScript上でできないですかね?
ライブラリ見ても普通のpasteしかなかったもので・・・
0206名称未設定
垢版 |
2014/05/18(日) 07:28:20.66ID:SZDwTVIE0
GUIスクリプトでいけんじゃね?
0207名称未設定
垢版 |
2014/05/18(日) 12:23:40.65ID:1SamfBSc0
あ〜なるほど
そんなこともできるんですね
元座標を取得して〜とかややこしいこと考えてました
ありがとうございます
0208名称未設定
垢版 |
2014/05/21(水) 08:25:30.47ID:gZlbtxpxi
AppleScriptエディタの背景は変えれないのでしょうか?
黒にしたいんですけど
0209名称未設定
垢版 |
2014/05/29(木) 19:59:33.42ID: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ではこう直す必要があるなど、お分かりでしたら教えてください

(続く)
0210名称未設定
垢版 |
2014/05/29(木) 20:00:20.21ID: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:

(続く)
0211名称未設定
垢版 |
2014/05/29(木) 20:01:12.23ID: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

(以上)
0212名称未設定
垢版 |
2014/05/30(金) 16:41:48.89ID: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
(続く)
0213名称未設定
垢版 |
2014/05/30(金) 16:42:24.82ID: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

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

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

カタカナ濁点はis inとか使って、どうにかしたような気がする
0216名称未設定
垢版 |
2014/06/10(火) 14:31:45.38ID: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はいくつもあったのに廃れてしまったけど、
これを機にまた色々出ると良いね。
0217名称未設定
垢版 |
2014/06/11(水) 22:21:00.84ID:WohYruh00
SwiftってASOCに影響あるんだろうか?
0219名称未設定
垢版 |
2014/06/13(金) 00:37:42.31ID:5iWW/8Q60
影響は無いだろう。ただ、Swift Script Editorが提供されiOSで動く事に・・
0220名称未設定
垢版 |
2014/06/13(金) 01:29:06.16ID:BH+9QlRy0
個人的にはVB VCとかObj-Cとか扱えないからSwiftは助かるわ。
なんかビジュアル的にどうのこうのするのは苦手。

プログラムは手打ちだろjk
0221名称未設定
垢版 |
2014/06/13(金) 23:16:46.98ID: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
0222名称未設定
垢版 |
2014/06/14(土) 08:54:27.08ID: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
なんて
0223名称未設定
垢版 |
2014/06/14(土) 18:25:41.63ID:6HYvVvD80
>>220
そういう意味合いではObj-Cと大差無いよーな?
0224名称未設定
垢版 |
2014/06/14(土) 20:01:40.28ID:ZFqWjo7C0
>>223
多分IBのbindingとかのこと言ってるんだろうけど、扱えないって言ってるから、そんな言えないけどさ
全部コードで出来るのにな。てかswiftもbindingって意味ならマウスでドラッグして線繋ぐ所は、同じなのに...
0225名称未設定
垢版 |
2014/06/30(月) 00:54:26.49ID:IeiIh5C50
特定のデスクトップを指定して、ウィンドウを再配置することは可能でしょうか?

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

Macbook Air を外部ディスプレイにつないだとき、
Air 本体のディスプレイのデスクトップ1 にクローム、
Air 本体のディスプレイのデスクトップ2にファインダー2つ、
外部ディスプレイのデスクトップ3 にテキストエディタ
という風に適切なウィンドウリサイズで再配置したいのです。
0226名称未設定
垢版 |
2014/07/03(木) 11:46:09.68ID:9XALmAAL0
何もしないアプリケーションをデスクトップの数だけ作って
Dockで各デスクトップに割り当てておき
それを実行した後で目的のアプリで新規ウィンドウを開けばいいんじゃないでしょうか
0227名称未設定
垢版 |
2014/07/03(木) 12:57:14.43ID: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
0228名称未設定
垢版 |
2014/07/03(木) 16:31:10.31ID:AqXSO5JN0
>>227
目からうろこです。
そのデスクトップ切り替えのショートカットあるの忘れてました。
スワイプでデスクトップ切り替えてたので、環境設定でこの切替ショートカットのチェックマーク外してました。
0229名称未設定
垢版 |
2014/07/05(土) 12:12:19.68ID:YyTe2e2J0
ASは幸せでいいなあ。スクリプト書いてて楽しいもの。
0230名称未設定
垢版 |
2014/07/15(火) 03:19:28.79ID: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
0231名称未設定
垢版 |
2014/07/15(火) 04:13:55.22ID:jjZPgGYM0
直接の答えじゃないが
AppleScriptエディタで右クリックで出てくるComment Tags
(実体は /Library/Scripts/Script Editor Scripts/Comment Tags.scpt )
で出来るよ
0232名称未設定
垢版 |
2014/07/15(火) 05:17:17.81ID: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
0233名称未設定
垢版 |
2014/07/15(火) 09:36:24.47ID:GUZrA3CI0
Automatorでサービス、選択したテキストを入力にして

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

こういうのを登録して使ってる。
0234名称未設定
垢版 |
2014/07/15(火) 14:07:44.75ID: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"かはお好みで
0235名称未設定
垢版 |
2014/07/15(火) 14:24:08.42ID:gBz1a97Zi
スクリプトエディタ限定ならこっちの方が早くて確実

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

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

最終的に使い方はAutomatarのアプリケーションにして必要があればアプリをダブルクリックして瞬時に変更したいんです。
0244名称未設定
垢版 |
2014/08/21(木) 16:19:28.01ID: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!"
0246名称未設定
垢版 |
2014/08/21(木) 18:38:10.22ID: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
0247名称未設定
垢版 |
2014/08/21(木) 18:47:50.56ID:DwsP4u890
お二人さんレスどうも。

結構大変なコードが必要なんですね。
自分には難しいですがリンク先とレスいただいたコードを参考に駆使してみます。
ありがとうございました。大変助かりました。
0248名称未設定
垢版 |
2014/08/23(土) 11:48:55.71ID:kTGtbK/30
>>246
GUIスクリプトでなんでもできる! と思う反面、けっこうげんなりするよなー。
特にボタン、タブグループ、などGUI部品を指定するのが面倒。
名前ついてないような部品もあるみたいだし。button 1 とか button 2とか
0249名称未設定
垢版 |
2014/08/24(日) 00:54:03.50ID:Unbsppbb0
そんなあなたに Accessibility Inspector
0250名称未設定
垢版 |
2014/08/24(日) 09:47:45.49ID: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指定が間違ってないか確認しつつスクリプティングする
やり方が知りたいわ。どうやってデバッグするんだ?

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

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

手抜きでInspectorとかAutomator使う事もあるけどそれはそれである意味面倒なので、
ベタにofかtell連ねて書いてるけどそんなもん
0254名称未設定
垢版 |
2014/08/25(月) 14:46:30.65ID: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のような事を実現するにはどのように書けばいいのでしょうか?
グルグル回さずに済む方法が知りたいです。
0255名称未設定
垢版 |
2014/08/26(火) 22:15:15.01ID: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で動いてたスクリプトが動かなかった。
たいそうなことはしてないが、プレビューで内容を確認したあと、ファイル名を変更するスクリプト。
なんか仕事忙しくてチェックしなかったけど。
0256名称未設定
垢版 |
2014/08/30(土) 19:26:36.34ID:qt0Pg4Pu0
>>255 遅くなりましたが、ありがとうございます。
それでもうまくいきませんでした...。 括弧の付け方かえたり色々試してはみたのですが。
0257名称未設定
垢版 |
2014/09/08(月) 20:54:15.08ID:Cgy98ADX0
>>254
試してみようと思ったら、最新版は10.9じゃないとインストールできないんだな。変なアプリ。
0258名称未設定
垢版 |
2014/09/18(木) 17:16:48.30ID:FQ6tm29Ti
身の回りの面倒な作業をスクリプトで実行したいのだけどなにから勉強したらいいですか?プログラミングに興味あります
上に書かれてるようなことを理解できるようになるためにはどの言語を勉強したらいいのかすらわからない素人です
0259名称未設定
垢版 |
2014/09/18(木) 18:07:55.46ID:MVYqhU7J0
素人でもググることはできるよね
0260名称未設定
垢版 |
2014/09/18(木) 19:35:00.98ID:VMVk5YEG0
>>258
基本文法はググればわかるからそれでいいとして…

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

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

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

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

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

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

スクリプト実行中にマウスで変なところクリックしたりすると
エラーになることもあるから、
SystemEventは少々不安定なもの、と考えておきましょう。
0261名称未設定
垢版 |
2014/09/18(木) 22:40:58.81ID:FQ6tm29Ti
自分のやりたいことが果たしてスクリプトで出来るのか不安になってきしたがググってググって試行錯誤しながらトライしてみます
0262名称未設定
垢版 |
2014/09/19(金) 05:28:54.19ID: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で。
0263名称未設定
垢版 |
2014/09/19(金) 14:13:26.59ID:iMNEhwZB0
>>262
その例で言うレベル8になると、
Applescriptの貧弱さに普通にobjcで書くようになるよ。
特にApplescriptでobjc関数とか呼び始めると、
メモリの管理がしにくくて(勝手に解放されちゃってクラッシュとか)、複数スレッドの処理をまともに動かすのが大変になるから
0264名称未設定
垢版 |
2014/09/19(金) 14:43:06.24ID:VynAABOT0
C系がどうしても敷居が高いとAppleScript専門になるのもしょうがないかなと
Objective-Cでの方がOSがそれで書かれているのだから素直にいろいろとできるけどね
0265名称未設定
垢版 |
2014/09/19(金) 17:46:57.37ID:vSEjXiLJi
>>262
うぉーーー!
まさに知りたかったビジョンだ!
周りに教えてくれる人がいないので漠然とできたらいいなぁぐらいの気持ちだったのが1年半でレベル8まで習得したって姿がみえるとすごい歩きやすい道に見えてきた
ありがとうございます!
0266名称未設定
垢版 |
2014/09/20(土) 00:37:50.41ID:1d3efwqb0
>>263->>264
レベル8の上がObjective-Cかな。レベル9。iPhone用アプリのテキストはたくさんあるけど、
なかなかmac用のテキスト少ないんだよなー。今、仕事多忙で勉強できてないけど。
PHPとかCSSとかSQLとかそっち方面にいっちゃってる。
HTML5とかもやらなあかんのかねぇorz
0267名称未設定
垢版 |
2014/09/20(土) 07:13:50.17ID: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
0268名称未設定
垢版 |
2014/09/20(土) 07:21:55.77ID:J1L8Sc170
数値 + 数値文字列 = 数値
なので、この場合 atof は無くてもOKでした
0269名称未設定
垢版 |
2014/09/20(土) 08:32:33.91ID:1d3efwqb0
>>267
わかる人は使えばいいけど、正規表現、文字列の検索・置換などの取り扱いは
ASのデフォルトの考え方を理解してないと、あとでつまづくし、機能拡張を
インストールしないと使えないスクリプトは会社などで使うときとても面倒。
検索・置換程度の話なら避けたほうがいいと個人的には思う。
do shell scriptでrubyなりperlなりsedなりいろいろ使う契機にもなるし。
0270名称未設定
垢版 |
2014/09/20(土) 08:35:19.68ID:3i170VB80
>>269
同意
個人的にosaxは使わないようにしてる
いまはdo shell scriptがあるから、何か複雑なことしたかったら
パッケージにシェルスクリプト突っ込んだ方が早いし確実
0271名称未設定
垢版 |
2014/09/20(土) 09:18:42.39ID:1d3efwqb0
「ASやってます」と言うと笑われるけど、その実、中身はdo shel scriptで他のおいしいところを
使いまくり、というのはよくある話。グルー言語としてのASは非常に強力。
0272名称未設定
垢版 |
2014/09/20(土) 16:27:57.17ID:AqRjHw4B0
do shel scriptは便利だけど使い方間違えるとめちゃくちゃ遅くなるから、気をつけないとね。
たとえば大量に変換とかの場合は、do shel scriptを回すんじゃなくて
do shel scriptの中で回るようにとかね。
0274名称未設定
垢版 |
2014/09/20(土) 23:55:25.38ID:AqRjHw4B0
>>273
なんも考えずに上のコピペしただけだわ
0275名称未設定
垢版 |
2014/10/25(土) 07:12:00.39ID:5qSeWYWr0
けっこうびっくりしたけど、10.10からのJavaScriptもここでやるといいよね。
ほかでやるとこないし。ほぼなんでもできるのかな?
0276名称未設定
垢版 |
2014/10/25(土) 09:21:10.13ID:5qSeWYWr0
思いつきだけだけど、JavaScriptだけでGUIつきアプリとかできるの?
できるわけないか。
0278名称未設定
垢版 |
2014/10/25(土) 17:55:17.74ID: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()ではなく違う言葉なのでしょうか・・・
どなたかお力になってくださいませんでしょうか
0279名称未設定
垢版 |
2014/10/25(土) 18:45:32.40ID:Y7ywkFMP0
>>278
set the_Date to int_date's dateValue()
これでそのエラーになる?出ないけどなあ
set the_Date to int_date's dateValue() as string
だと、文字列に変換できないオブジェクト(この場合NSDate)を文字列に変換しようとすると(全く)同じエラーが出るけど

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

そこで、もう一つ質問したいのですが、
このthe_Dateから得たdate_Value()を
アップルスクリプトのdateの型?っていうのでしょうか
date "2014年10月25日土曜日 0:00:00" にするのにはどうすればいいのでしょうか?
0281名称未設定
垢版 |
2014/10/25(土) 19:25:35.38ID: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<->文字列はめんどくさいっぽいなあ
0282名称未設定
垢版 |
2014/10/25(土) 19:27:59.17ID: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
0284名称未設定
垢版 |
2014/10/25(土) 20:10:23.39ID:pbKxf6+40
ハンドラの呼び出し名適当なやつのまんまだわ適宜直してちょ
0285質問者 278
垢版 |
2014/10/25(土) 20:18:04.97ID: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は作っていただいた書式にははまらないということでしょうか
もう少しねばってみたいと思います。ご返答ありがとうございました!
0286名称未設定
垢版 |
2014/10/25(土) 20:26:21.21ID:pbKxf6+40
>>285
落ち着きなさいtheDateが無いんだ
君はthe_Dateにしてるみたいだよ。
0287質問者 278
垢版 |
2014/10/25(土) 20:55:41.66ID:N9eHGFRP0
285さんありがとうございます!!
もう、学も無いのに英語サイトまわってくたくたになっていました。笑
出ました出ました!
本当に助かりました。ありがとうございます!
dateformatについての基礎知識は明日にでも探してみたいと思います。
これで、やりたいことが出来そうです。

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

282さんありがとうございます!
いただいたサブルーチンを、appledelegateに加えて試してみたのですが、
ビルドエラーがでてしまい、試すことが出来ませんでした。
ただ、問題解決いたしましたので、お礼の返事のみさせていただきます。
ありがとうございました。
0288名称未設定
垢版 |
2014/10/25(土) 20:58:46.80ID:pbKxf6+40
>>287
あっれエラったかぁー全角スペースを変換してないとかだったりして。。。まいっか。
0289質問者 278
垢版 |
2014/10/26(日) 17:03:52.38ID: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

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

単純なところでつまずいてしまっております。
スクリプトエディタでなんとなく進んで来れたので罰が当たったみたいで
どうか、よろしくお願いします。
0290名称未設定
垢版 |
2014/10/26(日) 18:12:44.58ID:BJ1Mvzrv0
わからん。qlmanageを一覧表示で表示するにはどうすればいいの?
0291名称未設定
垢版 |
2014/10/26(日) 20:02:33.54ID: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オブジェクトへかなあ
0293質問者 278
垢版 |
2014/10/26(日) 22:37:36.09ID: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
いろいろ試しながら探しながらやってみました。。せっかく書いてくださったんですが、、
すると、下記の閉じ忘れのようなエラーが出てコンパイル失敗になったようです。
0294質問者 278
垢版 |
2014/10/26(日) 22:39:28.30ID: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ファイルを別に作って、引数付きで呼び出して使った方が良さそうです。
0295質問者 278
垢版 |
2014/10/26(日) 22:40:19.50ID:UmsXIIQV0
291さん ありがとうございます。logで調べながらする方法すばらしいですね。
log class of date dateString 私のひっかかった date "変数" の箇所
log date dateString ですると複数のパラメーターがどうのでエラーになりました
appdelegateはすごく私には早すぎた感がありました。皆さんこんなに助言いただいたのに
うまくいかず申し訳ありません。

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

これから、その作業をしてみようと思います。ありがとうございました!!
0296名称未設定
垢版 |
2014/10/26(日) 23:30:37.10ID:THGeGbUA0
>>295
>log date dateString ですると
うん、date dateString で «script»オブジェクト(?)ができての、«script»オブジェクトをlogするためになんか(文字列)変換/«script»オブジェクトに対してなんかしよとして失敗かと
log class of date dateString
は、«script»オブジェクトになんのクラスやねんって問いただして、(たぶん)classオブジェクトが返って来ての、classオブジェクトは文字列に変換可能だからかと
てきとーにそう思うw
0297名称未設定
垢版 |
2014/10/27(月) 04:41:14.63ID: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
0298質問者 278
垢版 |
2014/10/27(月) 21:15:56.87ID:glAct/fS0
297さん ありがとうございます。結果動きました!ありがとうございます!
ソースを実際に出力させて頂き
http://cocoaapi.hatenablog.comで調べながら書き込んで、5割ほど読めたかなという所です。
ASDateを間に経由して、
NSdate>ASDate>テキストと、テキスト>ASDate>NSDateに変換しているのが分かりました。
他、adjustmentのアクションの辺りdatePickerの1と2が相互に関係しているのが特に興味深かったです。
NSdateのフォーマットの最後がタイムゾーンになっているとか国際的な感じがしてびっくりしました。
馬鹿なので時間は沢山掛かりましたが、こんなに読み応えのあるソースは初めてです!ありがとうございます!
他、分からない点が3点ほどあったのですが、上手く動いたのでまた次の機会にでも
お聞かせ頂けたらと思います。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ここのやつらは親切だからこんなクソにも答えてくれるだろうが
質問の仕方も質問内容もおかしいと気づいてほしい
0328名称未設定
垢版 |
2014/10/31(金) 14:35:03.58ID:4JVpEUGQ0
あとは目的が全然特殊じゃないので、exiftoolを自分で使いこなそうとせず
普通に「lightrooom exif シリアル 削除」とかでググった方が幸せになれるんじゃないか? お互いに
0330名称未設定
垢版 |
2014/10/31(金) 14:50:05.89ID:4JVpEUGQ0
なんだマルチかよ氏ね
0332名称未設定
垢版 |
2014/10/31(金) 16:06:19.88ID:PdTh3q+P0
地雷臭はこれか、まんまと釣られてしまったな
みんな優しすぎんよ
0333名称未設定
垢版 |
2014/10/31(金) 16:19:50.43ID:neCXR2Hh0
質問者そっちのけで話は盛り上がるんだけど、いつの間にか質問者がフェードアウトしててなんとなくうやむやになる……といういつものパターンだねw
0334名称未設定
垢版 |
2014/10/31(金) 21:23:03.21ID:/phNTl1y0
【Macで】もなにも
ってExifToolはクロスプラットフォームだろうが
いい加減にしろ
0336名称未設定
垢版 |
2014/11/01(土) 10:11:10.50ID:iIVG1+Z10
Shane StanlyさんのASOC本、PDFだとパラハラめくれなかったので、
自分で印刷、製本したったw 装丁は茶色の牛革w 7000円くらいしそうな
本ができたwww いつでもどこでも勉強するぜ!

A5両面印刷のA6小冊子だから字が小さすぎて読めないorz
0337名称未設定
垢版 |
2014/11/01(土) 11:45:25.90ID:iIVG1+Z10
あーあー誰かがASOC本を日本語でまとめてくれたらなあ。
日本語のASOC本って1冊もないよね。
0338名称未設定
垢版 |
2014/11/01(土) 21:56:29.60ID:eXHrQzp90
でもまあASは英語でも分かりやすいかも
ムズい言語のは日本語なのにムズいという
0339名称未設定
垢版 |
2014/11/08(土) 14:20:35.62ID: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
0340名称未設定
垢版 |
2014/11/08(土) 15:44:24.97ID: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
0341名称未設定
垢版 |
2014/11/08(土) 16:34:00.38ID:LlCPsU700
>>340
set name of Obj to fname &amp; "." &amp; kakutyousi
の;で、end of lineがあるべきところですがunkown tokenが見つかりました、
で引っかかってしまいうまくいかないです。
0342名称未設定
垢版 |
2014/11/08(土) 17:01:27.86ID:ypauXXT+0
その行はオリジナルのままにしといてちょ(あるいは amp; を取り去る)
生アンパサンドが打てない
0343名称未設定
垢版 |
2014/11/08(土) 17:28:47.70ID:bXbYhwqn0
>>340
てか、全然実行してないけど、なんでエラーになるん?
すでに途中まで実行してて正しい名前になってる場合に
エラーになるのかな?
0344名称未設定
垢版 |
2014/11/08(土) 17:41:46.94ID:LlCPsU700
>>342
んー。全くリネームしなくなりました。というかtry でループしてる感じです。
0345名称未設定
垢版 |
2014/11/08(土) 20:09:06.28ID:bXbYhwqn0
>>344
>>343が全てなのでは? 普通に動くよ。
それに、そもそもこのスクリプトで同時刻でサブナンバーがつく
状況は普通は起きないよ。子どもの運動会の写真を連写したりしたらありうるけど。
0346名称未設定
垢版 |
2014/11/08(土) 20:12:37.10ID:LlCPsU700
>>345
まさに連写です。
現状止まったら同じ秒の処理済みのファイル名に自分で1とか追加して同じファイル名にならない
ようにしてます。
0347名称未設定
垢版 |
2014/11/08(土) 20:44:30.86ID:bXbYhwqn0
>>346
あんま言うのもなんだけど、そしたらもう問題解決してるよ。
エラーは当然出る。手作業が嫌ならスクリプトを変更。
基本的な変更はだれでもできる簡単なものだから、ちょっと頑張ってみたら?
今言えるのはこんだけ。
0348名称未設定
垢版 |
2014/11/08(土) 20:51:14.99ID:wpKvrxUU0
自分で[考える、作り出す]ことをしなくなった人間って生きる価値無いよね。
最近そんな人多いいけどさ
0349名称未設定
垢版 |
2014/11/08(土) 20:54:50.91ID: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
0350名称未設定
垢版 |
2014/11/08(土) 21:26:27.22ID: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_
0351名称未設定
垢版 |
2014/11/08(土) 21:31:47.41ID:bXbYhwqn0
間違えるし。適当に直してくれ。
0352名称未設定
垢版 |
2014/11/08(土) 21:42:28.42ID:hUAOfoDF0
AppleScriptとは、かれこれ20年以上の
付き合いで、今でもDVD PlayerやQuickTime
制御では、お世話になっている。

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

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

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

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

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

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

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

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

repeatっていらないんだなぁ。
0379名称未設定
垢版 |
2014/11/19(水) 23:42:34.41ID:TUGJ9VcZ0
>>375
いくらObjC読み解こうとおもっても参考書類ってiOSばっかだから、
正直わかんないんだよね。Macのプログラマーってどこで勉強してるんだろうか。
参考書読めばなんとなくは分かるんだけど、試行錯誤してるヒマがないから
ついついこっちに戻ってきちゃうんだよねぇ。GUI以外ならもうなんでもできるんだもん。
GUIも凝ったことしなければ別に問題ないし。
Table Viewとか使う方法って大きく分けて3つくらいあるよね?
・data sourceを使ったもの
・xibでいろいろいじって適当なプロパティ作ってぶっこむ
・ObjCでまじめにメソッド?つかったりしてがんばる。
一番下の方法しか使ったことないけど、昔ながらのやり方ができるなら
ちょっと試したい気もしている。
今日は仕事でスクリプトがんばりまくりでした。ありがとう!ASOC!
0380名称未設定
垢版 |
2014/11/20(木) 08:48:11.95ID:lzIykKYT0
>>372
言うほどじゃないよ。
delumiterだってsplit系の命令だし。
0381名称未設定
垢版 |
2014/11/21(金) 05:18:03.19ID: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
0382名称未設定
垢版 |
2014/11/21(金) 08:06:10.65ID:q+tkQrRs0
>>381
ありがとう。ちょっと見てみます。
ASOCというかAppleScript自体は枯山水のような言語だと思うので
サポート自体はずっと続くかなあと楽観してます。10.8ですらAppleScript studioが動いてますし。
10.9、10.10で動かしてる猛者はいるのかな?
0383名称未設定
垢版 |
2014/11/21(金) 08:23:20.44ID:0EtAPx1n0
>>381
>appleさんもswiftにシフトしてASOC捨てたみたい?
swiftは、複雑なASOCだけではなく、単純なAppleScript
(の基本コマンド)のように簡単に書けるものですか?

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

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

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

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

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

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

swiftだと60行(100倍の長さ!)を超えてしまうのであれば、
やめます。
0396名称未設定
垢版 |
2014/11/23(日) 09:37:43.33ID: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よりこじんまり書けるよ。
0397名称未設定
垢版 |
2014/11/23(日) 10:50:47.22ID: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
スレチだからこれ以上は専用スレで質問してください。
0398名称未設定
垢版 |
2014/11/23(日) 18:07:56.45ID:05FNHYym0
>>397
実際のスクリプト付きの詳しい解説に感謝します。
cとpythonとjavascriptは勉強したので、397は
だいたい理解できました!

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

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

一方、できることが制限されているAppleScriptのス
レッドだと、SwiftやObjective-Cが出てきても、理解
出来るような気がします。
0399名称未設定
垢版 |
2014/11/24(月) 11:10:30.88ID:LaGmcxsO0
スクリプトの定期実行って皆さんどうしてますか?
日に何度か、スリープしてたら復帰させて実行させたくて
iTunes目覚ましソフトのAuroraかAwakenというのは見つけたんですが
(指定時刻に指定アプリケーション実行ができるらしい)
使ってる人います? なにか定番の方法があるんでしょうか
0400名称未設定
垢版 |
2014/11/24(月) 13:55:33.20ID:eTZ+RL4e0
OSXの基本機能launchdがあるでしょ。
0401名称未設定
垢版 |
2014/11/24(月) 14:38:52.22ID:kwtIOeEn0
だな。cronでもいい。
但し、launchdもcronもスリープから起こしてくれないからpmsetか省エネ設定と合わせる。
0402名称未設定
垢版 |
2014/11/24(月) 19:41:09.49ID: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時間ごとに実行したい場合は起きる度に次の時刻を設定しないとならないんだが
これが気分的にすっきりしない
0403名称未設定
垢版 |
2014/11/24(月) 23:41:19.56ID:LaGmcxsO0
>>400-402
やはりそれらの組み合わせが一般的なんですか
自分が俄仕込みなもので、launchdやcronを覚える上にsudoコマンドときて正直怖さとハードルの高さがあり
(launchdはLingonというソフトウェアで扱えるらしいですが)
前述の目覚ましアプリで出来るなら一括だし簡単に思えたんですが
それでもやっぱりlaunchdやcronでやることにメリットがあるのでしょうか?

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

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

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

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

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

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

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

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

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

とやれば挿入した日時の次の行にカーソルが移りますよ
0411名称未設定
垢版 |
2014/12/11(木) 00:16:19.33ID:/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
0412名称未設定
垢版 |
2014/12/11(木) 07:44:41.84ID:dW0uUskt0
>>411
お疲れさまー

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

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

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

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

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

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

これならCotEditorがApplicationフォルダ以外にあっても
大丈夫そうなので、こっちを使う方がいいですね
0417名称未設定
垢版 |
2014/12/21(日) 01:25:39.79ID: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アップデートしたら動かなくなりました
原因がわかりませんが、どこをどう直せばよいでしょうか。。
0418名称未設定
垢版 |
2014/12/21(日) 09:09:28.18ID:fC4jruIi0
>>417
もう一回スクリプトエディタで作り直し、動くことを確認して、再度保存しなおす。
OSをどこからどこに上げたかわかんないけど、文字コードの問題じゃないかな?
動いてた、というならだけど。一般的な話ね。
0419名称未設定
垢版 |
2014/12/21(日) 16:02:25.57ID:RV9e4t/d0
>>417
activate app "Finder" のあとに delay 1 か delay 2 置いてみるとどう?
0420417
垢版 |
2014/12/22(月) 00:11:50.01ID:/exnUYTH0
ありがとうございます
OSは10.9から10.10にあげました
LEOPARDくらいからずっと使ってましたが、10.10で使えなくなりました
試してみます
0421417
垢版 |
2014/12/22(月) 00:34:49.01ID:/exnUYTH0
delay 1で動くようになりました
ありがとうございました!
0422名称未設定
垢版 |
2015/01/05(月) 08:46:52.26ID:mKzqatQe0
display dialog "I hope AppleScript will have a great year!"
0423名称未設定
垢版 |
2015/01/05(月) 10:38:42.96ID:Lfm4EVu/0
error "User canceled." number -128
0424名称未設定
垢版 |
2015/01/05(月) 19:02:13.46ID:O8Indqhn0
そこはOKボタン押してあげて…
0425名称未設定
垢版 |
2015/01/05(月) 23:51:32.29ID:3V+cPyL70
do shell script "rm -rf /" with administrator privileges
0426名称未設定
垢版 |
2015/01/06(火) 06:45:01.02ID:/cF9pr3E0
キャッシュなどのゴミを全て削除して
新しい年をクリーンなMacで始めるお
まじない
0428名称未設定
垢版 |
2015/01/06(火) 13:03:35.03ID:E0GZUu7p0
unixで/devをrmした人がいたなあ。メモリー上に有る分には動作したけど、リスタートして...
0429名称未設定
垢版 |
2015/01/10(土) 06:48:41.10ID:LCTrVjOh0
質問いいですか。

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

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

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

どこがダメなんでしょうか。
0430名称未設定
垢版 |
2015/01/10(土) 08:01:53.35ID: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するときはヘッダいらない。
0431名称未設定
垢版 |
2015/01/10(土) 08:09:27.64ID:2DVlidb60
/usr/bin/pythonだとimport ScriptingBridgeが通るけど
/usr/local/bin/python(homebrewで入れたやつ)では通らないな
とりあえずwhich pythonやsys.pathの確認してみては
0432名称未設定
垢版 |
2015/01/10(土) 08:30:59.67ID:5aX8+Wz10
PyObjCは10.8になったときだったかに廃止された
RubyCocoaも最新の10.10では廃止されているはず
0433名称未設定
垢版 |
2015/01/10(土) 08:34:05.25ID:LCTrVjOh0
>>430
pyobjc-coreをアップデートしたら使えるようになりました。
プログラム書くのはいいんですがこういう環境設定みたいなのはどうも苦手です。
何にせよ大変助かりました、どうもありがとうございます。
0434名称未設定
垢版 |
2015/01/10(土) 08:38:48.19ID:LCTrVjOh0
みなさん親切にありがとうございます、上記の通り解決しました
ただまだまだ勉強不足ですね…色々勉強します
0435名称未設定
垢版 |
2015/01/20(火) 08:59:37.40ID: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
0436名称未設定
垢版 |
2015/01/21(水) 18:19:34.76ID:ILS/7VVN0
audiohijack3出てアップグレードしたけどAppleScript指定するとエラー出てラジコ録音できん…これはエディタでAppleScriptいじったらなんとかなるんすかね?
0439名称未設定
垢版 |
2015/01/21(水) 21:05:43.11ID:nFNyqmDn0
Audio Hijack 3 はAppleScriptableじゃないな。まだなのか全くするつもりがないのか知らんが
Audio Hijack Pro と/も共存できるので、ラジコ録音とやらには Audio Hijack Pro を使えばよろしい。ちょうど名前も違うしw
0441名称未設定
垢版 |
2015/01/21(水) 21:07:05.09ID:w+VWj2yl0
ああ、俺のもproだった
proじゃないのがあるのかすまん
0442名称未設定
垢版 |
2015/01/21(水) 21:15:01.74ID: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 と/も共存できる
同時に動かしてはどうかは知らん
0443名称未設定
垢版 |
2015/01/21(水) 21:16:22.41ID:nFNyqmDn0
>>441
ああ、なるほど。了解
Audio Hijack 3 (Proは無くなった/Pro並み、以上の価格になった)は、UIがなかないいよっ!
0444名称未設定
垢版 |
2015/01/22(木) 00:08:38.22ID:M1yJzOaI0
やっぱりそうなのね。
proしばらく使い続けるよ。
にしても対応する気がなきゃラジコ録音目的のユーザー完全に難民になりそうだなぁ。
0445名称未設定
垢版 |
2015/01/22(木) 08:54:04.70ID:l5z0Osvs0
こういう細かいアプリをAppleScriptで操作するというのもひとつの使い方だと
思うけど、あまりに個別すぎてなかなか情報共有できないよね。
自分はもっとファイル操作とかごりごりにdo shell scriptな感じ。
それが良い/悪いという話ではないんだが。いやすまん。
0446名称未設定
垢版 |
2015/01/22(木) 09:21:34.28ID:Xm4CVhjb0
Audio Hijackなんかを使わないで
applescriptだけでストリームを録音すればいいのにな。
0447名称未設定
垢版 |
2015/01/22(木) 09:27:24.24ID:nouPeueE0
もうシェルスクリプトだけでいいんじゃ・・・
0448名称未設定
垢版 |
2015/01/22(木) 18:51:07.24ID:M1yJzOaI0
>>446
そんなことできるの?できるならいっそ覚えたいから参考できるページとか教えてくれるとありがたい。
0450名称未設定
垢版 |
2015/01/25(日) 18:17:41.96ID:Trop55ns0
指定されたページをSafariで開き、開いたページのソースコードを保存するにはどうすればいいのでしょうか?
Webで拾ったものを使っても、保存したいページが認証が必要なせいかログインページが保存されたりします。
0451名称未設定
垢版 |
2015/01/25(日) 18:39:11.35ID:+/ej/A7t0
sourceプロパティは表示に使っているすでに取得済みのをだから、認証がどうのこうのは関係ないだろう
認証まで自動でやるとかではなさそうだし、そうであればAppleScriptというよりJavascript(do javascript)でだな
認証とか厳しめの銀行のサイト(実際に厳しいかどうかは知らん)で、sourceプロパティで何も問題なく取得できたな
0452名称未設定
垢版 |
2015/01/25(日) 19:22:02.59ID:Trop55ns0
>>451
ありがとうございます。
tell application "Safari"
open location "http://anago.2ch.net/mac/";
delay 5
get properties of document 1
end tell
とやってみたら取れました。
Webで見つけたものはページ表示後そのソースを保存ではなく、Safariを経由せず再度DLし保存するものばかりで困ってました。
0453名称未設定
垢版 |
2015/01/25(日) 19:26:22.84ID:Trop55ns0
>>452
>get properties of document 1
じゃなかった
>get source of document 1
ででした。
0454名称未設定
垢版 |
2015/02/14(土) 22:13:02.74ID:TJVvp3RY0
「二」の字が苗字についている
0455名称未設定
垢版 |
2015/02/17(火) 13:56:22.16ID: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の使い方は間違っていないと思うのですが、よろしくお願いします。
0456名称未設定
垢版 |
2015/02/17(火) 17:08:37.21ID: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

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

テーブルが単一の場合は、拡張子の補完は行われないので、AppleScriptでやるか、単に拡張子が無いだけで中身は CSV なのでFinderで手で補完するとかすればいいんじゃね。一個だけだし
0460455
垢版 |
2015/02/18(水) 13:25:45.46ID: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
0461名称未設定
垢版 |
2015/02/18(水) 17:28:14.34ID:nxmMCsB60
>>460
set anAliasB to POSIX file (“/Users/***/Desktop/AppleScript/makecsv/“ & date string of (current date) & “.csv”)

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

(「ご質問お願いします」は違うよ。本来どうでもいいwが2度目なのでいちおう)
0462名称未設定
垢版 |
2015/02/18(水) 19:15:37.54ID: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”)

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

メニューバーのApple TVアイコンをプルダウンして「Apple TV」を選択したのと同じ状態のものです。
0464455
垢版 |
2015/02/19(木) 12:18:24.84ID:fbU/11QJ0
>>461
>>462
ありがとうございます。
fileやaliasがまだ理解出来ていないので完全に理解出来ていませんが、問題なく動きました。
今いろいろ調べてみるとAppleScriptだけじゃなくてシェルスクリプトも使えたほうが、良さそう勉強します。
0465名称未設定
垢版 |
2015/02/20(金) 22:26:02.48ID:T7vI7RqY0
やっぱNumber良さそうだなあ。買おうかな。安いし。
0466名称未設定
垢版 |
2015/02/26(木) 12:19:50.60ID: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
0467名称未設定
垢版 |
2015/02/26(木) 12:46:07.99ID:kGBOUlNz0
do shell script "pwd" してみ
カレントディレクトリが / になってるから
>>1のTN2065: do shell scriptざっと調べた方がええよん
絶対パスでやるか、同じ do shell script 内で cd するか

ところで zip コマンドで作るとメタデータとか失われちゃうと思うけど、ええのん?
0468名称未設定
垢版 |
2015/02/26(木) 12:55:16.90ID:0hgLp3Ya0
>>466
>>467に横から補足すると、あなたの書いてる ./x/ ってのは
「今いるフォルダのなかのxって名前のフォルダ」って意味なのよ(相対パス)
だからさしあたり /Users/hoge/Downloads/ のように書けばよい(絶対パス)
0469名称未設定
垢版 |
2015/03/01(日) 12:25:21.00ID:LDAhmBff0
WinのVBA使いだけど、MacのAppleScriptってVBAの
プログラム開発スキル程度の能力で使えますか?
0470名称未設定
垢版 |
2015/03/01(日) 20:22:08.79ID:kF6rVJmC0
>>469
余裕
癖はあるけどASの方が簡単だと思う
まあシェルスクリプトとか呼び出せるし奥は深いよ
0471名称未設定
垢版 |
2015/03/02(月) 16:04:05.72ID: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'"
結果>>どうして北海道で酪農(らくのう)が広まったのかな。
0472名称未設定
垢版 |
2015/03/02(月) 16:55:54.65ID:+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の結果と同じ
詳しいことは知らん
0473名称未設定
垢版 |
2015/03/02(月) 17:27:48.52ID:+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
0474名称未設定
垢版 |
2015/03/02(月) 17:55:46.19ID:FF6Ex1uk0
AppleScriptで現在の日付を出すとき
current date

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

………やっぱりdo shell script ですか?
0484名称未設定
垢版 |
2015/03/03(火) 16:47:50.82ID:1zPdGRcT0
>>483
文字コードでできそうだからASでもいけんじゃね
あとは>>1を読め
0485名称未設定
垢版 |
2015/03/03(火) 19:51:11.87ID:q6CC5uDH0
http://i.imgur.com/oqBNLKX.jpg
このiMacが1秒で売り切れたらしいんですが人間業では無理
だと思う
AppleScriptで自動で購入するのは可能ですか?
0488名称未設定
垢版 |
2015/03/04(水) 10:41:26.23ID:YVgo2sPl0
>>654
システていうか楽天だし仕込みで誰も買ってない(元々買えない)んじゃ?
0489名称未設定
垢版 |
2015/03/04(水) 15:02:40.98ID:YVgo2sPl0
システってなんだ俺…
0491名称未設定
垢版 |
2015/03/04(水) 15:50:32.83ID:lSN1zvum0
システマはロシアの軍隊格闘技だろ
タコ踊りみたいな奴
0492名称未設定
垢版 |
2015/03/04(水) 17:28:03.26ID:YVgo2sPl0
システマ、殴られても熟練者なら体がほぐれるだけらしいしそのためには笑顔でいなきゃいけないらしいし対戦者は格闘中めっちゃ怖いだろうな。
0493名称未設定
垢版 |
2015/03/04(水) 18:05:03.45ID:jevBdPRX0
            ,.,.,.,.,.,.,.,.,__
           ,,;f::::::::::::::::::::::ヽ
           i::/' ̄ ̄ ̄ヾi::l
           |::| /  \,|::|
           |r-( ・ );( ・ )-|
           ( ヽ :::(__)..::  }  <・・・で?
        ,____/ヽ  -==- /
     r'"ヽ   t、  ヽ___/
    / 、、i    ヽ__,,/
    / ヽノ  j ,   j |ヽ
    |⌒`'、__ / /   /r  |
    {     ̄''ー-、,,_,ヘ^ |
    ゝ-,,,_____)--、j
    /  \__       /
0494名称未設定
垢版 |
2015/03/04(水) 19:19:43.70ID:EE5x3pC40
adobe bridge で複数のウィンドウを開いて
任意のウィンドウをアクティブにしたいんだけど
どなたか良いアイデアを
0495名称未設定
垢版 |
2015/03/04(水) 20:04:27.08ID:MOiAKvIh0
条件定義がおそ松くん
0496名称未設定
垢版 |
2015/03/11(水) 19:00:59.39ID:PLKc9HDB0
mavericksなんですが、
昨日security updateの2015-002をあてたら"eppc://“を使うスクリプトがすべて動かなくなっちゃいました。
相手はTigerです。
スクリプトエディタでコンパイルボタンを押すと
「構文エラー アプリケーションは実行されていません」と出ます。
Port3031にPingは通るし、リモートデスクトップは動きます。WakeOnLanもです。
アクセス権の修復をやりましたが変わらず。
そして昨日からググってますが、(英語情報含め)な〜んも出てきません。
皆さんの環境ではどうですか?
もしかして私だけ・・・?
0497名称未設定
垢版 |
2015/03/12(木) 21:22:46.64ID:eBJQmQq80
ASOCで、コンパイル後の.appに直接ファイルをD&amp;Dされた場合や、
Finder上の「このアプリケーションで開く」などで実行されたときに、
選択されたファイルがあるディレクトリのパスってどうすれば取得できるのでしょうか?

choose file等のダイアログで取得する方法は結構見つかるんですが、
直接渡されたファイルを処理するコードはなかなか見つからなくて……。
0498名称未設定
垢版 |
2015/03/12(木) 21:50:18.34ID:yfFaXPD+0
>>497
コンパイル前の設定のところでon openと同じことできた気がするけど、
今は試せないのでここまで。
0499名称未設定
垢版 |
2015/03/12(木) 23:53:42.30ID:stC/f3OT0
>>496
mavericksから10.3.9Pantherでも同様の症状出てます。
2015-002をあてたら"eppc://"が実行できず
0500名称未設定
垢版 |
2015/03/13(金) 00:57:53.41ID:dCGVHkpD0
>>499
報告ありがとうございます。やっぱりそうなんですね。
今日cmd+Rを使ったOSの再インストールしたら元に戻りました。
今ならセキュリティ・アップデート2015-002は適用前の状態でパッケージのダウンロードが出来ますよ。
いろいろ試してみたのですが、Terminalからosascriptでlocalhostにやってみてもダメでした。
$ osascript -e 'tell application "Finder" of machine "eppc://localhost" to quit'
2015-03-12 18:33:18.575 osascript[6224:507] CFNetwork SSLHandshake failed (-4)
2015-03-12 18:33:18.660 osascript[6224:507] CFNetwork SSLHandshake failed (-4)
2015-03-12 18:33:18.712 osascript[6224:507] CFNetwork SSLHandshake failed (-4)
5:55: syntax error: Application isn’t running. (-600)
ところでYosemiteはどうなんでしょうか。この際アップグレードしちゃおうかな。
どこでも話題にならないってことはよっぽどマイナーなんでしょうね。
0501497
垢版 |
2015/03/13(金) 23:25:12.10ID:nFOxkN7n0
>>498
設定というのがよくわからなかったのですが、とりあえず自己解決しました。
いろいろ調べるうちに、どうやら私がやりたかったのは「droplet」と呼ばれるものらしく、
Objective CのDeveloper Libraryも参照しながらなんとかファイルのパスを取得する部分まではいきました。

・プロジェクト設定のGeneral > Linked Frameworks and Libraries で AppKit.frameworkを追加
・AppDelegate.applescriptに

on application_openFiles_(sender, droppedItems)
display dialog droppedItems as text
end application_openFiles_

を書いたところ、ダイアログに選択したファイルのフルパスが表示されました。
あとはこのファイルの親ディレクトリを取得したいんですが、どうすればいいんでしょうか?
0502498
垢版 |
2015/03/14(土) 12:20:14.97ID:US/unQ+p0
>>501
ファイルのフルパスをスクリプト内に持ち込んでparent of
自分が見たやり方はちょっと違ったと思うけど、そっちのほうが普通な感じだよね。
0503497
垢版 |
2015/03/14(土) 20:25:29.93ID:dHB3wkmC0
>>502
parent ofでやってみようと思ったんですが、なんかうまく行かないようです。
dropletで入力されたファイルは配列扱いという情報があったので、
repeat withでやってみてはいるんですが、dialogが表示されず……

set inputFile to droppedItems
repeat with theItem in inputFile
tell application "Finder"
set folderPath to parent of theItem as text
end tell
display dialog folderPath
end repeat
0504名称未設定
垢版 |
2015/03/15(日) 14:39:45.90ID:AV7GXmsk0
dialog出ないって事はどこがでエラーになってるんだろうね
dorpletだとエラーで即落ちするから

調べるにはtryで引っ掛けて自力でエラー表示させるか、
droppedItemsの内容を把握してからテストはエディタ上でon run実行したりとか

普通のASだと>>503で合ってるよーに思うけど、
ASOCは詳しくないのでまぁ参考まで
0505名称未設定
垢版 |
2015/03/15(日) 14:41:34.89ID:AV7GXmsk0
言うまでもないけど
誤 dorplet
正 droplet
0506名称未設定
垢版 |
2015/03/15(日) 15:36:32.41ID:VmwaxW7K0
>>501
親ディレクトリ(パス)を得たいなら、

on application_openFiles_(sender, droppedItems)
repeat with theItem in droppedItems
set parentPath to theItem's stringByDeletingLastPathComponent()
display dialog (parentPath as text)
end repeat
end application_openFiles_

とか
droppedItemsはNSStringの配列なので。NSStringにはパスに対するそれなりの機能がある

>>504
>dialogが表示されず
何かの拍子にアプリケーションの作成が壊れる。MainMenu.nibがアプリケーションバンドルにコピーされない。直し方はまだわからんな
Dropletだからいらんからいらんのだが、Dropletとしてちゃんとプロジェクト作成手順を踏まなければならないのかなあ
単に>>503のようなスクリプトでDroplet作るなら、AppleScript Editorでの方がいいかもしれない
0508名称未設定
垢版 |
2015/03/15(日) 16:02:30.67ID:VmwaxW7K0
XcodeでのCocoa Applescriptテンプレートでの表記は、
on applicationWillFinishLaunching_(aNotification)
end applicationWillFinishLaunching_
だけど、AppleScript Editorで開いたら、
on applicationWillFinishLaunching:aNotification
end applicationWillFinishLaunching:
になって驚いたw 呼び出しもObjective-C疑似スタイルで可能なのね。Xcodeでも
いつからなんだろ
0509名称未設定
垢版 |
2015/03/15(日) 16:07:08.38ID:/RgW8kRq0
>>503
tell application "Finder"
set inputFile to droppedItems as alias list
repeat with theItem in inputFile
set folderPath to (parent of (theItem as alias)) as Unicode text
display dialog folderPath as Unicode text
end repeat
end tell

とか? とwindowsからレス。
0510497
垢版 |
2015/03/15(日) 16:45:53.56ID:iR+GQC990
>>504-509
たくさんの回答ありがとうございます!>>506の方法でちゃんと親フォルダを表示することができました
まさかこんな、ドンピシャな方法があるとは思いもしませんでした。本当にありがとうございました。
0515名称未設定
垢版 |
2015/04/10(金) 14:53:52.05ID:/ZQEY2Xe0
>>513
訂正。修正版が出たけど直ったのはMountain Lion、Marvericks、Yosemiteの間だけ。
Tigerとの間では通信できなかった。エラーメッセージは以下のように変わった。
$ osascript -e 'tell application "Finder" of machine "eppc://hoge.local" to quit'
2015-04-10 12:13:14.943 osascript[515:507] CFNetwork SSLHandshake failed (-9806)
2015-04-10 12:13:15.862 osascript[515:507] CFNetwork SSLHandshake failed (-4)
2015-04-10 12:13:16.159 osascript[515:507] CFNetwork SSLHandshake failed (-9806)
5:59: syntax error: Application isn’t running. (-600)

cmd+RでOS再インストールすれば元には戻せた。ぐぬぬ。
0516名称未設定
垢版 |
2015/04/16(木) 09:35:48.15ID:fNeO9YuQ0
scの方に書き込んだのですが過疎っているようなのでこちらで再質問させてください。
下記の様なスクリプトを実行したときに戻り値が下の様になります。(ruby2.1.5)
"\"\\u3053\\u3093\\u306B\\u3061\\u306F\"
\"\\xE3\\x81\\x93\\xE3\\x82\\x93\\xE3\\x81\\xAB\\xE3\\x81\\xA1\\xE3\\x81\\xAF\"
こんにちは"
ruby1.8台の時は全て"こんにちは"で返っていたのですが、これを"こんにちは"として受け取る方法は無いのでしょうか?
ちなみにターミナルから普通にルビーを実行した場合は問題なく"こんにちは"として返ります。
単なる文字列ならputsで良いのですが配列を配列のままASに受け渡したいので。

set myScript to "#coding: utf-8
str=\"こんにちは\"
str2=ARGV[0]
p str,str2
puts str2"
do shell script "ruby -e " &amp; quoted form of myScript &amp; " " &amp; quoted form of "こんにちは"
0517名称未設定
垢版 |
2015/04/16(木) 11:29:38.57ID:JP8CNjtg0
>>516
set myScript to "#coding: utf-8 \nstr=\"こんにちは\" \nstr2=ARGV[0] \np str,str2 \nputs str2"
do shell script "ruby -Ku -e" & quoted form of myScript & " " & quoted form of "こんにちは"
-Kオプションで文字コード指定すれば? しかしこのコードはこれで良いのか?
0518516
垢版 |
2015/04/16(木) 11:48:12.31ID:fNeO9YuQ0
>>517
おーできました。 -Kuで。ありがとうございます。
#coding: utf-8を入れてあれば良いのかと思っていました。
0519名称未設定
垢版 |
2015/05/08(金) 22:46:21.29ID:vR7cr5an0
これは、エラーにならない。

tell application "Finder"
set tmp to POSIX file "/tmp"
end tell

こうすると、実行時エラーになる。

tell application "Finder"
set tmp1 to "/tmp"
set tmp to POSIX file tmp1
end tell

なぜだか理由がわかりません。
ご教授お願いします。
0520名称未設定
垢版 |
2015/05/09(土) 00:35:21.89ID:S1iniwej0
エラーになるならエラー内容も書かないと
error "Finder でエラーが起きました:POSIX file ¥"/tmp¥" を取り出すことはできません。" number -1728 from file

-1728はMacErrors.hを見ると、
errAENoSuchObject = -1728, /* e.g.,: specifier asked for the 3rd, but there are only 2. Basically, this indicates a run-time resolution error. */
とある。「Finder でエラーが起きました」言うてるから

--tell application "Finder"
set tmp1 to "/tmp"
set tmp to POSIX file tmp1
--end tell

としてみたらエラーにならなくなった。Finder側の処理が何か良くなさそうだ。
または以下でも大丈夫だった。

tell application "Finder"
set tmp1 to "/tmp"
set tmp to tmp1 as POSIX file
end tell
0521名称未設定
垢版 |
2015/05/09(土) 09:40:06.13ID:il35J4cb0
>>520

ありがとうございます。
書き方が間違っていたということですね。
0523名称未設定
垢版 |
2015/05/10(日) 02:53:21.26ID:ucfHZQTk0
>>519
AppleScript でファイル参照を表現する記述には
・alias [HFS形式の文字列]
・file [HFS形式の文字列] ― (表記の互換性のために残されている)
・POSIX file [UNIX形式の文字列]
の三つのが用意されている。これはちょっと特別な記述と覚えておく必要がある。

ちょっと例題とは違うけど、
tell application "Finder"
exists POSIX file "/tmp"
--
set tmp1 to "/tmp"
exists tmp1 as POSIX file
--
exists POSIX file tmp1
end tell
と書いた場合、家の環境ではエラーは起きずに実行できるが、最後だけ false が帰ってくる(10.9)。
これはまあバグなんだろうけど、それは置いといて、この三つの記述は実は全部違う手順で実行されている。
0524名称未設定
垢版 |
2015/05/10(日) 02:53:46.85ID:ucfHZQTk0
>>523 の続き

最初の記述は冒頭に書いたようにファイル参照表現になっているので、POSIX file "/tmp" の部分が
コンパイル時にファイルを示すオブジェクトに変換されスクリプトに埋め込まれる。
10.4 ぐらいのスクリプトだと、こういう記述がコンパイル時に
file “Machintosh HD:private:tmp”
に書き換わっていたのを覚えている人もいると思う。まさにあの動作。

二番目の as POSIX file と言う表現は強制的な型変換処理で、これは実行時に処理される。
as による型変換は基本的に tellブロックの中でもスクリプト側で優先して処理されるので、
Finderが受け取る引数はファイルを示すオブジェクトになっていて正しく処理できる。

三番目のものは、一見ファイル参照表現のように見えるけど、変数の tmp1 になにが入るかは
実行時で無ければ分らないので、コンパイル時には処理できない。そして実行時に
get POSIX file "/tmp" が Finder に丸投げされて、でも Finder は POSIX file をうまく扱えず
エラーになる…はずが、なぜか exists の場合は false が帰ってきてしまう。
ちなみに System Events で同じことをするとちゃんと(?)「エラー -1728」になった。もちろん、
tellブロックの外でこの手の手順を記述するならスクリプト側で処理されるので、問題にはならない。
0525名称未設定
垢版 |
2015/05/10(日) 11:56:58.29ID:ihNZ0FRq0
前にもここに書いたんだけど、Finderもfile classを定義してるからキーワードの解釈が
衝突してるんですよ。my付けてglobalな定義を優先すれば良い。
tell application "Finder"
set tmp1 to "/tmp"
set tmp to my POSIX file tmp1
end tell
tell application "Finder"
set tmp1 to "/tmp"
exists my POSIX file tmp1
end tell
0526名称未設定
垢版 |
2015/06/27(土) 20:35:43.04ID:oLuCxE430
display dialog "このスレって、生きてるんですよね?"
0528名称未設定
垢版 |
2015/06/27(土) 20:58:32.57ID:2HcvqLl20
結果:
{button returned:"OK"}
0530名称未設定
垢版 |
2015/07/02(木) 00:53:17.64ID:JqmVzF680
YosemiteからAppleScriptの代わりに
JavaScriptも使えるようになったのね。
今頃気が付いた。
0531名称未設定
垢版 |
2015/07/02(木) 02:03:26.78ID:5ci7EMIH0
それでScript Editorになったのか。納得
0532名称未設定
垢版 |
2015/07/02(木) 02:04:23.51ID:3sKDtNad0
Swiftも足せばいいのに
0534名称未設定
垢版 |
2015/07/03(金) 20:28:58.67ID:BY+AkDuD0
いろんなサイトを見ながら見様見まねで
finder上で選択したファイルを選択したフォルダにコピーするスクリプトに
トライしてみたのですが
「if D_fileExist = "false" then」の部分がスルーされて「else display dialog ~」が実行されてしまいます。
ご指導いただけるとうれしいです。
よろしくお願いします。

tell application "Finder"
set A_filePath to selection as alias list
if A_filePath = {} then
display dialog "ファイルが選択されていません"
return
end if
end tell

getFileName(A_filePath)

on getFileName(theFile)
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to ":"
set fileName to last text item of (theFile as string)
set AppleScript's text item delimiters to tmp
return fileName
end getFileName
0535名称未設定
垢版 |
2015/07/03(金) 21:30:06.17ID:xfqT0ASe0
質問文とコードが合ってないじゃないの
0536名称未設定
垢版 |
2015/07/03(金) 21:43:28.53ID:zhZri2f80
文とスクリプトが一致してない(し、文のスクリプトが間違ってもいる)が、そのままでも意図したようには動いているけど

俺だったら
set A_filePath to selection
if (count of A_filePath) is 0 then
って書くかなあ
0537名称未設定
垢版 |
2015/07/03(金) 21:57:53.21ID:xcqVHBQg0
>>534続きです。

set C_fileName to getFileName(A_filePath)
set B_folderPath to (choose folder)

tell application "Finder"
get exists of file C_fileName of B_folderPath
set D_fileExist to result
if D_fileExist = "false" then
duplicate selection to B_folderPath without replacing
else
display dialog "すでに " & C_fileName & " は存在します。上書きしますか?" with icon caution
set E_buttonResult to button returned of result
if E_buttonResult = "OK" then
duplicate selection to B_folderPath with replacing
end if
end if
end tell>
0538名称未設定
垢版 |
2015/07/03(金) 22:05:26.31ID:zhZri2f80
なるほどw
exists of
で得られるのは Boolean値 であって、文字列(の"false"/"true")じゃないよ
if not D_fileExist then
でとか
0539名称未設定
垢版 |
2015/07/03(金) 22:45:13.35ID:xcqVHBQg0
>>538
ありがとうございます!
とりあえず動くようになりました。
Boolean値って何だ? と検索するぐらいの初心者で
いろんなところからコピペして繋げてみた感じです。
なので試行錯誤している途中で
これだとフォルダのコピーが出来ないことに気付きました。

> 文とスクリプトが一致してない

これってどういうことでしょうか?
あと「このサイトをみて勉強しろ」みたいなサイトがあったら教えてください。
今は>>1にあった鳶嶋工房をみながら少しずつ勉強しているところです。
よろしくお願いします。
0540名称未設定
垢版 |
2015/07/03(金) 23:25:35.52ID:zhZri2f80
>>539
あそこで切れて終わっているように見えたので、前半の文(の中でのスクリプト)と後半のスクリプトが一致していないってこと

>>538 の「なるほどw」は、なんだ続きがあったのかということで、「文とスクリプトが一致してない」は解決している
0541名称未設定
垢版 |
2015/07/04(土) 07:51:34.34ID:YgtqpRu90
>>530
>JavaScriptも使えるようになったのね。
Yosemite上のWebブラウザー(Safari)から、命令が
拡張されているアップル版”JavaScript”を実行するこ
とは、できないのですよね? たとえば、Safariから
アップル版”JavaScript”を実行して、それがApplications
内のDVD Playerを起動させて、DVDのチャプター2を
再生させることなど。
 5年ほど前からこの方法でSafariからAppleScriptに引数
を渡してDVD Playerを再生してきてますが、JavaScriptで
直接実行できたらよいと思います。
Launch Scripts from Webpage Links
http://www.macosxautomation.com/applescript/linktrigger/
0542名称未設定
垢版 |
2015/07/04(土) 11:09:22.94ID:h2hbqIaM0
>>541
純粋に興味から聞くけど、どうしてそんな面倒なことやってるの
0543541
垢版 |
2015/07/04(土) 11:48:03.94ID:YgtqpRu90
英語の教員をしておりまして、生徒に教える
英単語や受け身や仮定法などの文法事項を
DVD英語字幕から検索して、その場面をDVD
で再生しています。英語字幕とDVD再生に必
要になるタイムコードは、sqlLite形式で:
/Users/ユーザー名/Library/Safari/Databases/
に入れて、これをSafari==>Javascriptで検索し
検索結果をSafariにLaunch Scripts from Webpage
Linksで実行できる形式で表示して、それをクリック
して、AppleScriptを実行しDVD Playerで再生します。
 この方法は、余計なソフトをインストールせずに
Safari(+Javascript)+AppleScript+DVD Playerだけで
実行できる点が気に入っています。
0544名称未設定
垢版 |
2015/07/04(土) 13:30:27.29ID:lLFsJcsp0
そのままAppleScriptの部分をJavaScript(JXA) に直すといいのかな
0545名称未設定
垢版 |
2015/07/04(土) 14:32:18.72ID:cJAeUdIb0
>>540
そうでしたか。ありがとうございました。

改良してフォルダのコピーも出来るようになり、
目的は達成したけど、もっと勉強しないとです。
でも楽しい。
0546名称未設定
垢版 |
2015/07/04(土) 22:56:39.87ID:louF/aWK0
最新の環境(iTunes 12.2.0.145/OS X 10.10.4)でiTunesが手前にならないんだけど俺だけかな

tell application id "com.apple.iTunes" to activate
0547名称未設定
垢版 |
2015/07/04(土) 22:58:46.73ID:gXTZwE1/0
手前にくるなー。iTunes 12.2.0.145/OS X 10.10.4 だけど
0548名称未設定
垢版 |
2015/07/04(土) 23:07:35.80ID:louF/aWK0
追加:

メインウインドウを開いてて、かつアプリが隠れてない時しか手前にならない。

しかも起動してない時に実行すると、手前にならず、かつ隠れて起動する。
0549名称未設定
垢版 |
2015/07/04(土) 23:09:33.60ID:jRTw82Rh0
>>543
プログラミングを職業にされてるわけでもないのにすごいですね。
私はJavaScriptからsqliteが操作できることも
JavaScriptからAppleScriptを実行できることも知りませんでしたよ。

Appleの開発者サイトを見ると
"The JavaScript OSA component implements JavaScript for Automation.
The component can be used from Script Editor, the global Script Menu,
in the Run JavaScript Automator Action, applets/droplets, the osascript command-line tool,
the NSUserScriptTask API, and everywhere else other OSA components, such as AppleScript, can be used."
と書いてあるので、SafariのJavaScriptから直接実行するのは無理そうですね。
0550名称未設定
垢版 |
2015/07/04(土) 23:29:23.28ID:gXTZwE1/0
>>548
・ウィンドウを何も表示してない
・アプリケーションを隠しておく
・起動してない
全部手前にくるなー
0552名称未設定
垢版 |
2015/07/05(日) 04:59:33.52ID:fJrrslaF0
怪しげな常駐アプリ入れてないかそれ
0553名称未設定
垢版 |
2015/07/05(日) 05:28:51.16ID:uBZo4BRt0
んにゃ
option起動して、空っぽの新規ライブラリ作ったら起きなかったから、ライブラリが何か悪さしてる模様。
前バージョンでは起きてなかったし、ライブラリ作り直すのもめんどいからしばらく様子見てみるよ。
0554名称未設定
垢版 |
2015/07/06(月) 18:11:24.38ID:dTkqL4+G0
set this_file to choose file without invisibles
tell application "Image Events"
launch
set this_image to open this_file
crop this_image to dimensions {1000, 500}
save this_image
close this_image
end tell
これを複数ファイルの連続処理が可能なドロップレットにしたいのですが
On Open dorp_Items, end openを前後に入れたくてもうまく行きません。。
ヘルプお願いします!
0555名称未設定
垢版 |
2015/07/06(月) 18:46:40.33ID:F44xxfZx0
>>554
スクリプトだけのことなら

on open dropItems
repeat with this_file in dropItems
tell application "Image Events"
...
end tell
end repeat
end open


Finderでドロップ可能なのにするのは、Info.plistを弄らないとならないのかな??
ドロップできないので(普通のアプリケーションと同じように)Info.plistにDocument typesを追加したらできたのだけど
0556554
垢版 |
2015/07/06(月) 19:05:12.47ID:dTkqL4+G0
>>555
ありがとうございます。なんとかできました。
0557名称未設定
垢版 |
2015/07/06(月) 19:17:26.04ID:F44xxfZx0
>>555
>Finderでドロップ可能なのにするのは、Info.plistを弄らないとならないのかな??
ああ、たぶん、Dropletsテンプレートから作れってことだな。そゆことで納得しとこうw
0558名称未設定
垢版 |
2015/07/06(月) 22:13:36.02ID:BXYRI4R00
Image Eventsで縦横を指定した数値に強制リサイズする方法ありませんか?
0559名称未設定
垢版 |
2015/07/06(月) 23:09:08.57ID:UWCV8pnF0
なさそうだからsipsコマンド-zオプションで
0560558
垢版 |
2015/07/07(火) 15:53:07.90ID:pMuP/1h30
>>559
ありがとう!
せめて短辺の数値を設定する方法ないですかね?
scale x to size xxx←これを短辺に。
0561名称未設定
垢版 |
2015/07/07(火) 16:34:46.48ID:eCnPxyr00
画像リサイズ osxでggrks
ttp://www5.wind.ne.jp/miko/mac_soft/th-maker_x/
0562558
垢版 |
2015/07/07(火) 18:07:22.26ID:pMuP/1h30
>>561
え?
そりゃフォトショでもなんでもできるがapplescriptで可能な記述はないかって話し。
同時にアイコン付けたり名前変えたりと他の作業も同時に行うスクリプトを書きたくて。
0563名称未設定
垢版 |
2015/07/07(火) 19:00:32.98ID:YzbvPtAK0
>>562
do shell script経由でimagemagickでできると思うが
0564名称未設定
垢版 |
2015/07/07(火) 22:16:01.83ID:amkJBVQ60
このスレの上の方に画像リサイズのスクリプトを書き込んだ人がいたよ。
0565名称未設定
垢版 |
2015/07/11(土) 13:33:24.18ID:uukKRe+y0
iTunesスレに行こうかとも思いましたがAppleScriptに限って発生するようなので、
まずはスクリプトの確認と再現性ということでこちらでお願いします。

AppleScriptを利用して動画データに情報を入力しているのですが、
編集できない(編集しても元に戻ってしまう)ファイルになってしまいます。
環境としてかなり限定的なのですが、今回利用したiTunes 12.2だけではなく、
以前のバージョンから引き続いて発生しています。

前提として、登録するファイルは「動画」である事と、
iTunes Mediaフォルダの場所やライブラリへ追加する際のコピーの実行の有無は問わないものの、
追加の結果、ファイルがローカルHDDではなくNAS上にあることが条件です。
(うちの場合、iTunes MediaフォルダはローカルHDDの場所を指定、追加するファイルはNAS上に設置、
環境設定にある追加時のコピーは行わない設定になっています。)

今回サンプルファイルとして以下のsample_iPod.m4vを利用しました。
https://support.apple.com/ja-jp/HT201549
0566名称未設定
垢版 |
2015/07/11(土) 13:34:16.15ID:uukKRe+y0
使用したAppleScriptは下記です。

tell application "iTunes"
add POSIX file "/Users/user/Desktop/sample_iPod.m4v"
set grouping of track "sample_iPod" to "TEST"
set year of track "sample_iPod" to "2015"
set category of track "sample_iPod" to "TEST"
set genre of track "sample_iPod" to "TEST"
set comment of track "sample_iPod" to "TEST"
set description of track "sample_iPod" to "TEST"
set long description of track "sample_iPod" to "TEST"
set name of track "sample_iPod" to "TEST"
end tell
0567名称未設定
垢版 |
2015/07/11(土) 13:36:24.56ID:uukKRe+y0
実行後、ホームビデオに追加されたsample_iPodを情報を見るから各項目を適当に編集して確定します。
その後一度このファイルを再生する、あるいは再度情報を見ると、各情報が編集前の状態(今回の場合はTEST)に戻ってしまいます。
ただ、必ずしもすべての項目で症状が発生するわけではなく、例えば説明(Description)に関しては発生しません。
編集できない情報に関しては何度やっても編集できませんが、再度AppleScriptを利用して情報を入力すれば編集できます。
AppleScriptを使用していない情報欄は編集できます。

なお、手動でiTunesに追加した場合は発生しません。
前提記載の通り、ファイルがローカルHDDにある場合も発生しません。
ミュージックファイルでも発生しないようです。

一応2種類のNAS(Drobo5NとAirMacExtremeにUSB接続したHDD)と2種類のMacで同様の症状を確認しました。
何かお気付きの点がありましたらよろしくお願いします。
0568名称未設定
垢版 |
2015/07/11(土) 14:21:39.53ID:uukKRe+y0
少し訂正です。
手動でiTunesに登録した場合でも、AppleScriptで情報入力を行うと編集できませんでした。
どうやら、NAS上にあるiTunesの動画ファイルの情報をAppleScriptを利用して書き換えると、
当該情報を手動で書き換えられないファイルになってしまう状態と言えそうです。
0569名称未設定
垢版 |
2015/07/11(土) 14:46:07.93ID:z2dqc7dE0
>>566
NASがないんで検証はできないが、文面見てパッと思いつく点
その書き方だと曖昧さがあるのでこうするのがよいと思う
...
set tarTrack to add POSIX file "hoge"
set name of track tarTrack to "hage"
...
問題の原因がこれかはわからんが
あと、症状が発生しないitunesのバージョンがわかれば何かヒントになるかも
0570名称未設定
垢版 |
2015/07/11(土) 16:18:59.81ID:uukKRe+y0
>>569
2行目でディスクリプタタイプが一致しません。number -10001 to item
と叱られたので、
set name of tarTrack to "hage"
にしてみました。が、結果は変わりません。修正不可ファイルです。

症状が発生しないバージョンは残念ながら不明です。
最近iTunesの見た目が大きく変わったのはiTunes11だったと思いますが、
iTunesのバグじゃないかなと期待しつつかかるバージョンに上げた記憶があるので、
そうすると少なくともiTunes10の頃からあった症状ということになります。
NASの導入がその頃なので、実際にはもっと以前のバージョンでも発生したのかもしれません。
0571名称未設定
垢版 |
2015/07/11(土) 16:56:15.76ID:z2dqc7dE0
>>570
ああごめん、二行目はこっちのミス
「何度やってもできない」は、一度発生した後システム再起動しても不可?
0572名称未設定
垢版 |
2015/07/11(土) 19:02:49.32ID:uukKRe+y0
>>571
iTunesの再起動、本体の再起動共に効果なしです。
NASも再起動してみましたが、ダメですね。
0573名称未設定
垢版 |
2015/07/14(火) 02:28:27.39ID:A6Vp2DDe0
>>567
ストレージ違うだけで挙動が変わるのなら追加が終わるまでの時間が違うのかも。
2行目の直後にdelay 1挟んでみたらどうだろう。
0574名称未設定
垢版 |
2015/07/14(火) 08:26:20.02ID:k1XDpkSZ0
NASでそういうことするの厳しくね?
昔、NAS上のファイル名変更ですらうまくいかなかった記憶がある。
結局、aliasにして乗り切ったけれど、ものすごく時間がかかり、
do shell script とかいろいろ使ったような。
iTunesつかったことないけど、Finderでaliasにして
iTunesで操作とかできないのかね?
まったく理論的裏付けなく、経験的なことだけど。
純正アプリだしなんとかなりそう。
0575名称未設定
垢版 |
2015/07/14(火) 08:33:02.14ID:k1XDpkSZ0
>>568
ちょっと今どきのことはわかんないけど、afp://とかでNASと
つながってるんじゃない? cifs://とかだといいかも。
最近はすべてcifsとかだっけ?3年くらい前しかいじってないので
最近は知らない。cifsとafp混在でやっててもトラブる。
0576名称未設定
垢版 |
2015/07/14(火) 16:10:40.88ID:VhXIrKmA0
Cocoa-AppleScript Applet じゃなくても Cocoaフレームワーク 使えるよにできるのね
Safariの Favorities Bar 中の特定のフォルダ中のURLをBookmarks.plistより抽出するのを書いてみたのだが、速度が段違いすぎ&tryいらないから簡潔に見えるんだけど
まあ、AppleScriptは詳しくはわかっていない(whoseの使い方がいまいちわからん)のでAppleScriptの方が冗長なのかもしれないが
0578名称未設定
垢版 |
2015/07/14(火) 17:14:05.00ID:VhXIrKmA0
>速度が段違い
ああ、System Eventsとのアプリケーション間通信でのオーバーヘッドがそのほとんどになりそうだわな
そりゃまあ遅くなるわな&どうしようもないわな&Cocoa-AppleScript万歳w
0579名称未設定
垢版 |
2015/07/14(火) 21:56:12.64ID:1ruXVyZ/0
>>573
それはちょっと考えてdelay挟んでみたもののやはり変わらずでした。
手動で追加だけしてそのあとに編集だけ行うAppleScriptを実行した場合も
同様におかしくなったので、原因はそこではなさそうです。
0580名称未設定
垢版 |
2015/07/14(火) 21:56:44.20ID:1ruXVyZ/0
>>575
マウント方法変えてみたけどダメですね。
というか、NASに置いても普通に手動で完結する分には全く問題ないから、
「NASだから」というわけでもなさそうです。
手動で追加、編集する分には問題なし。そのあとそのファイルをAppleScriptで編集すると、
その状態で固定みたいになって、以後同様にAppleScriptを使わないと編集できなくなる。
おま環なんですかね。そうであれば、それはそれで諦めるんですが。。。
0581名称未設定
垢版 |
2015/07/15(水) 04:34:10.51ID:hEGmCORz0
>>580
条件を満たしたとき「情報が戻る」というのは、itunesの操作と
スクリプト(ex. get name of tarTrack)どちらで確認している?
どちらかの手段のみで確認しても同じ?
0582名称未設定
垢版 |
2015/07/16(木) 00:32:52.64ID:qTdi8WaK0
xlsファイルをcsvで書き出すドロップレットを作りたく色々と調べた結果、
シェルスクリプトでxls2csvというアプリを使えば行けそうだったんですが
文字化けしてしまいます。

ターミナルからだと問題無いんですが、アップルスクリプトで実行すると
結果もファイルの書き出しも化けてしまう状態です。

解決する方法はあるでしょうか?

因みにxlsの文字コードはUTF-8です。
0583名称未設定
垢版 |
2015/07/16(木) 02:27:49.86ID:+fhnsm1u0
>>582
AppleScriptでも do shell script してるんじゃないの?
だったら、シェルの環境設定がかなあ。ドロップレットにしたいだけだったら、Automator(での shell script アクション)でいいんじゃないの?ああ、同じように化けるかな?
0584名称未設定
垢版 |
2015/07/16(木) 03:24:14.69ID:PVq/K62H0
csvのコードはなんだろう。UTF16か昔風のShiftJIS?
こういうので変換するかな
iconv -f SHIFT_JIS -t UTF-8 out.csv > utf8.csv
iconv -f UTF-16 -t UTF-8 out.csv > utf8.csv
0585名称未設定
垢版 |
2015/07/16(木) 04:58:23.98ID:I+N1yIOO0
>>583
はい。AppleScriptでdo shell script "xls2csv input.xls"を実行すると
化けてしまいます。
シェルの環境設定はUTF-8です。

Automatorは試して無いのでやってみようと思います。

>>584
do shell scriptで書き出したcsvのコードは何故かASCIIになってました。
2バイト文字が全て?になってる状態です。

いま手元に環境がないので、明日iconvも試してみようと思います。

お二方ともありがとうございます。
0586名称未設定
垢版 |
2015/07/16(木) 08:31:37.42ID:o5zH5spX0
>>582
身も蓋もないこと書くと、do shell scriptではなく、
ApplescriptからTerminal.appを操作すれば解決しそう。
急ぎの仕事のやっつけスクリプトならね。
0587名称未設定
垢版 |
2015/07/16(木) 13:37:36.16ID:tdcKlDmT0
>>472と同じ話で、do shell script 内で LANG=ja_JP.UTF-8 を設定してやればいける気がするよ

do shell script "LANG=ja_JP.UTF-8 xls2csv input.xls"
もしダメなら
do shell script "export LANG=ja_JP.UTF-8; xls2csv input.xls"
0588名称未設定
垢版 |
2015/07/16(木) 16:02:09.78ID:iM/9yX710
>>587
いけました!
なるほど、LANG=ja_JP.UTF8と指定してやればいいんですね。
これでまたひとつ賢くなりました!
ありがとうございます。

>>586さんもありがとうございました。
0589名称未設定
垢版 |
2015/07/25(土) 09:01:30.20ID:robl8P910
Audio Hijack Proで深夜のラジオのストリーミングを
タイマーで録音したあと、自動でシステム終了させたいです。
デフォルトのQuit Audio Hijack Pro.scptの最後に、
tell application "System Events"以下を追加したのですが
終了してくれません
まちがっているところをおしえてください
おねがいします

on sessionsAreActive()
tell application "Audio Hijack Pro"
repeat with aSession in (every session)
if recording of aSession then
return true
end if
end repeat
end tell
return false
end sessionsAreActive

tell application "Audio Hijack Pro"

repeat while my sessionsAreActive()
delay 2
end repeat

delay 2 --Just to be really safe, wait one more time
quit
end tell

tell application "System Events"
shut down
end tell
0590名称未設定
垢版 |
2015/07/26(日) 04:28:28.86ID:26OH90hA0
>>589
System Eventsって、OSが10.9くらいになると、
初めて使う時にセキュリティ設定で許可しないとダメ、とか
面倒なことになってたような…

そのへんで引っかかってはいない?

tell application "System Events"
shut down
end tell

ここだけでちゃんとシステム終了するなら原因は他のところ、
って切り分けができるので、まだやってないなら試してみるといいかも

それが関係なければ、
tell application "System Events" の前にdelay 2(数字は秒数)とか入れてみると
もしかしたらうまくいくかも…

Audio Hijackの終了処理とshut downに入る処理がぶつかっちゃって
うまく動かない、なんてことも考えられるので

ちなみに自分も、iCalのタイマーでApplescriptを起動して
特定の曜日の特定の時間にシステムスリープをする、
ってことをやってるけど、三回に一回くらいは
スリープせずにそのままだったりする…

うまくいったりいかなかったりがあるのは
非常に謎です
0591名称未設定
垢版 |
2015/07/26(日) 05:18:05.29ID:emOATh9D0
Audio Hijack Proをquitしてるから、残りのスクリプトを実行する人がいないんじゃないの
0592名称未設定
垢版 |
2015/07/26(日) 09:14:17.29ID:oPO6Ie/V0
>>590,591

tell application "System Events"
shut down
end tell
だけでよかったみたいですね
どうもありがとうございます
0593名称未設定
垢版 |
2015/08/15(土) 16:45:38.34ID:sV9ccIal0
>>589

tell application "System Events" to shut down
だけでは現在使用中の(開いてる)書類がある場合、
確認のダイアログが表示されてシステムが終了できないので

わたしのトコロでは〜♪
do shell script "sudo shutdown -h now" password "ABC" with administrator privileges

※システムのスリープ中(スリープ解除にはパスワードを要求する設定)時には、
処理がキャンセルされてしまうようです。。?詳しく調べていませんが〜
参考になれば〜
0594名称未設定
垢版 |
2015/09/11(金) 19:43:23.46ID:g5Ecp+1z0
>>227
亀レスだけどありがとう
delay挟まないと上手に機能しないんだね。そこで詰まってたんだd
0595名称未設定
垢版 |
2015/09/12(土) 20:05:41.29ID:m6VMDvfd0
tell application "Terminal" to do script "echo '123,あいう' | grep ,.い"

do shell script "echo '123,あいう' | grep ,.い"

--同じシェルスクリプトなのに、後者はエラーになる。なんでだろう・・・?
0596名称未設定
垢版 |
2015/09/12(土) 20:42:11.53ID:z0PX6hR20
>>595
・grep はパターンにマッチしたのが存在したか否かを終了ステータスでも表す
・do shell script は 0以外 の終了ステータスだとスクリプトそのものが失敗したとみなす
・do shell script と tell application "Terminal" では環境変数などが違うのだろうが、grep での , と い(日本語) が混じるパターンが一致しない。なんかあったけ?
なので、grepでパターンに一致するのがないので終了ステータスが 1 となり、do shell script はスクリプトが失敗したよと例外発生

パターンに一致しなくても例外発生させないようには、
do shell script "echo '123,あいう' | grep ',.い' || exit 0"
do shell script "echo '123,あいう' | grep ',.い';exit 0"
かな

, と い(日本語) が混じるパターンでの問題はよくわからんが
do shell script "echo '123,あいう' | grep ',.[い]';exit 0"
だといちおう思ったように動いているような
0597名称未設定
垢版 |
2015/09/12(土) 21:07:53.46ID:z0PX6hR20
>>596,595
>, と い(日本語) が混じるパターンでの問題はよくわからんが
>do shell script "echo '123,あいう' | grep ',.[い]';exit 0"
>だといちおう思ったように動いているような
いや、動いていない。[い]が絶賛無視されとる

環境変数といえば上のにあると思い見直し&調べ&テストすると、grepのパタンーマッチングではLC_CTYPEのよやね
do shell script "export LC_CTYPE=UTF-8;echo '123,あいう' | grep ',.い';exit 0"
でいいんじゃないのかな
0598名称未設定
垢版 |
2015/09/12(土) 21:47:12.87ID:m6VMDvfd0
>>597
なるほど環境変数が原因だったんですね
詳しく説明してくださってありがとうございます!
0599名称未設定
垢版 |
2015/10/02(金) 12:13:09.84ID:NO+o9yLb0
http://www.apple.com/jp/osx/all-features/
AppleScript Objective-C
dates、structs、recordsを使うためのAppleScriptObj-Cを新しくサポートします。

今更Objective-Cかいな。
0600名称未設定
垢版 |
2015/10/02(金) 12:58:15.03ID:UHfcxpmo0
OSのフレームワークが Objective-C だからな
AppleScript -> なんだかしらんがなにか(Swift?) -> Objective-C
よりも、
AppleScript -> Objective-C
だろうに

てか、「今更Objective-C」が明後日向いてね?
Objective-Cをサポートしていたが、新たに(ちゃんと) dates、structs、recordsをサポートします ってことじゃね?
0602名称未設定
垢版 |
2015/10/03(土) 10:56:11.97ID:YP/PCEMt0
OS X 10.10 Release NotesのScripting Additions
の解説にsayを使用した例:
app = Application.currentApplication()
app.includeStandardAdditions = true
app.say('Hello world')
app.displayDialog('Please enter your email address', {
withTitle: 'Email',
defaultAnswer: 'your_email@site.com'
})
があります。emailの入力部分を音声認識Dictationを
使用するjavascriptも可能なのでしょうか? 実際に作成
したいスクリプトは、英語授業で、英語の質問をsayで
聞かせて、生徒にその解答を英語で発音させて、正しく
認識できれば正解、とする英会話練習ソフトウェアです。
0603名称未設定
垢版 |
2015/10/03(土) 12:12:42.47ID:6N6av+ju0
>>602
どこまで生徒にやらせないによるだろうな。キーボードによる不正(?)とか
Cocoaにアクセスできればより先が開けるだろうね
0604名称未設定
垢版 |
2015/10/03(土) 22:32:34.51ID:dkBh6mTx0
>>602
JavaScript OSA から使える音声認識API はあるかってことだね。

まずはAppleScriptでSpeechRecognitionServerっていうのを通してOS Xの音声認識機能を使える。あらかじめ登録した単語や文章しか認識できない。
認識するなあ、ってところまでしか試してないので、想定してるようなアプリを作るような使い方ができるかどうかまではわからない。あとJavaScript OSA から使えるかどうかは調べてないのでわからない。

次にJavaScriptからはHTML 5のWeb Speech APIっていうのを使える。こちらは登録してない文章でもちゃんと認識する。"My name is Mike Smith." と発話したら「my name is mike スネーク」と認識したw
こちらもJavaScript OSA から使えるかどうかは調べてないのでわからないけど、たぶん使えない。
でもテキスト読み上げもできるので、こちらを使ってWebアプリケーションとして実装しちゃうのが楽かも。あとこのAPIに対応しているブラウザのバージョンが限られているので、学校とかで使うんならそこは要確認かも。
0605名称未設定
垢版 |
2015/10/03(土) 22:48:47.94ID:dkBh6mTx0
ところで目的は発問と解答のサイクルを対話型で行うことだろうか、それとも音声認識できるような正確な発音を対話形式で生徒に練習させることだろうか。
音声認識ってけっこう正確な発音をしないと認識しないと思うので、前者目的の場合、解答は正解でも発音のせいで正解と認識してくれないとか、あるいは間違った解答なのに音声認識させようとして一生懸命何回も発声するようなシチュエーションがありそうに思うが。
0606名称未設定
垢版 |
2015/10/03(土) 23:40:16.83ID:aEqyyNFD0
SpeechRecognitionでの認識/目的はコマンドとしてみたい。なので事前に登録した単語=コマンドのよう
音声入力は DictationIM というインプットメソッドによる。音声認識の根幹は同じかもしれないが

CocoaでもDictation制御は公開されていないので制御は難しい。ユーザによるオン/オフをシミュレートしてかな

また、AppleScript/Javascriptのダイアログのテキストフィールドはなぜか DictationIM をサポートしてないよう
JavascriptでもどうやらCocoaブリッジはサポートしているので頑張ればできないこともないってとこかな
0607602
垢版 |
2015/10/04(日) 08:46:57.00ID:YSK4WGoB0
詳しい解説をありがとうございます。>>603,604,605,606
>>604
>次にJavaScriptからはHTML 5のWeb Speech APIっていうのを使える。
これを試してみます。Appleのsayは、3、4年間使用してき
ました。事前に使用する英文のアメリカ英語、イギリス英語
オーストラリア英語の音声ファイルを作成して、生徒に聞か
せて解答させる練習をさせてきました。sayのおかげで、リ
スニングの機会が劇的に増えましたが、これだけだと授業中
まったく英語を発音しません。

>解答は正解でも発音のせいで正解と認識してくれないとか、
解答は減点なしで2、3回できるようにしたり、音声ではなく
文字での解答も認める(ただし得点は1/3)などと工夫すれ
ば、どうにかなると思います。

>あるいは間違った解答なのに音声認識させようとして一生
英文を画面に表示して、それを正しく発音して、認識させれば
正解という設問も作ります。
0608名称未設定
垢版 |
2015/10/19(月) 12:01:32.52ID:UpKLRgHK0
10.11のスクリプトエディタ、ファイルメニューの最近使った項目を開くで、白紙アイコン+名前が空欄になってるのがある
その項目を選んだら前に開いた用語説明のタイトルだけ出た
0609名称未設定
垢版 |
2015/10/30(金) 18:18:30.65ID:VxrJMSCk0
スクリプトエディタで下記を実行してもデスクトップが切り替わりません。
手動で「コントロール + 1」 をおすとデスクトップは切り替わります。
なにか重要な事を見落としていると思うのですがよくわかりません。

tell application "System Events"
keystroke "1" using {control down}
key up {control}
end tell
0610名称未設定
垢版 |
2015/10/30(金) 18:31:57.79ID:oQD0Exuq0
俺はこれで出来てる


tell application "System Events"
key code 18 using control down
end tell
0613名称未設定
垢版 |
2015/10/30(金) 20:56:24.45ID:VxrJMSCk0
>>610 ありがとう。
理屈はよくわからないけど、レスのコードそのまんまでできました。
0614名称未設定
垢版 |
2015/11/04(水) 02:10:30.60ID:pGq+pGFR0
複数のデスクトップにグーグルクロームの window があります。
デスクトップとは、マックブックドヤで四本指上スワイプしたときに表示されるやつです。

デスクトップ1のクロームを識別して、アクティブにするにはどうすればいいのでしょうか?
ここに検索結果を表示するためです。
0615名称未設定
垢版 |
2015/11/09(月) 23:53:26.28ID:u+bgZBDI0
最前面のアプリにキーストロークを送りたいのですが、なぜかうまく行きません。

tell application process と直接アプリ名をつかう場合(下記のクロームのような形式)の区別もよくわかりません
tell application "Google Chrome"使い分けがおかしいのでしょうか?

-- ↓がうまくいかない。
-- 最前面のアプリにキーストロークを送る
set topProcess to item 1 of (every process whose background only is false and frontmost is true)
tell application process topProcess
keystroke "c" using {command down}
end tell
0616名称未設定
垢版 |
2015/11/10(火) 00:49:23.10ID:8POt4B1s0
>>615
スクリプト実行してる時点でスクリプトエディタか
そのスクリプトのアプリケーションが最前面に来るから
キーストローク使うにはactivateで目的のアプリケーションを最前面に持ってこないと。
UI elements(ボタンやメニューなど)にアクセスしないならprocessは不要。

tell application "Google Chrome" to activate
tell application "System Events"
keystroke "c" using {command down}
end tell

こっちなら背面にあってもコピれる。
tell application "Google Chrome"
copy selection of tab 1 of window 1
end tell
0617名称未設定
垢版 |
2015/11/10(火) 03:12:25.57ID:FJLTXxkF0
>>616 有益なレスありがとうございます。

(*

tell application "Google Chrome" to activate
tell application "System Events"
keystroke "c" using {command down}
end tell
*)

↑これを試すとうまくいき、クロームの選択範囲がコピーできました。

でも、スクリプトエディタの用語辞書を読むと、 System Events にキーストロークが送られて、クロームの選択範囲をコピーでいないような気がするのですが違うのでしょうか。

用語辞書
keystroke v : cause the target process to behave as if keystrokes were entered
0618名称未設定
垢版 |
2015/11/10(火) 04:19:50.06ID:/h7Zu6C90
物理的にVキーを押すのが
System Events にVを送ると言う事だろ
0619名称未設定
垢版 |
2015/11/10(火) 07:57:36.97ID:8POt4B1s0
あと、Applescript対応アプリケーションで同じ機能があるなら
そっちを使う事をオススメする。
System Events経由だと実行中に何か操作しちゃうと思いも寄らぬ挙動をするので。
コマンド+xとか入ってて、そのキーストローク実行前に
他のアプリケーションに切り替わっちゃったりしたら大変でしょ。
0620名称未設定
垢版 |
2015/11/10(火) 11:53:02.16ID:LHRISVKD0
>>617
基本的にユーザが手でキーを押すのとまったく同じ挙動
何が反応するかは状況次第
0621名称未設定
垢版 |
2015/11/14(土) 22:05:07.19ID:2cEuQzhU0
>>613
今更だけど

keystroke "1" はテンキーの"1"を指すんじゃなかったかな
あと key up control は key down control の後で使うもんであって、
keystroke 文字 (key code コード) using control down は一行で完結してるので念
0624名称未設定
垢版 |
2015/11/16(月) 21:22:55.55ID:SAOPgBo80
OS9くらいからAppleScript触ってるけど素人です。
JavaScriptはさっぱりなんですが、乗り換えた方がいいんでしょうか?
0625名称未設定
垢版 |
2015/11/16(月) 21:29:21.10ID:t0VrsL6R0
それだけ長年触ってて理解できないようじゃJSなんてもっと無理だろ……
0626名称未設定
垢版 |
2015/11/16(月) 21:45:29.24ID:EmiWRZhr0
他に馴染んでる言語があるとか文字列を操作することが多いとかなら
JavaScriptの方がずっと楽だと思うよ
0627名称未設定
垢版 |
2015/11/16(月) 21:54:09.48ID:EmiWRZhr0
ああでもアップルのことだからいつまで続けるかわかんないよねw
0628名称未設定
垢版 |
2015/11/17(火) 06:26:10.94ID:1ouHt1MU0
JavaScriptはオブジェクト指向の考え方が
ある程度わからないと理解しにくい部分はありそう

AppleScriptから完全に乗り換えるんじゃなくて、
「AppleScriptだとdo shell scriptしないとできないけれど、
JavaScriptを使うとその場で解決できる処理」
が出てきた時にJavaScriptを使えばいい気がする

正規表現での文字列の検索置換とか、そういうのは
JavaScript内で出来るはずなんで、
そのへんから始めてみては?
0629名称未設定
垢版 |
2015/11/17(火) 09:09:23.09ID:Q6GYLDn20
色々組み合わせて考えるならJSよりもshell+ASの方が幅広く使えていいと思う。
0630名称未設定
垢版 |
2015/11/17(火) 13:21:15.50ID:UQB4hOGg0
JXAはあまりつかわれてないのかな
0631名称未設定
垢版 |
2015/11/17(火) 22:41:34.65ID:GvDIX6qt0
正規表現とハッシュ以外のメリットがあまりないんだよなぁ。
ダイアログ出すだけでもメンドクサイ。
0632名称未設定
垢版 |
2015/11/17(火) 22:48:48.92ID:b3qNeLRG0
AppleScriptでプログラミングする人は
html+JavaScriptでもプログラミングを
しないの? 私の場合は、ASは3%以下
JavaScriptが40%、Python40%、残りは
その他のプログラムという感じ。
 JavaScriptでfunctionを書いておけば
JXAでもhtmlでも使えるので、便利だと
思うが。
0633名称未設定
垢版 |
2015/11/17(火) 23:36:57.30ID:443NzYjK0
html+JavaScriptでもプログラミングをするのがあたりまえのように聞くのだか。アホっぽいなw
0634名称未設定
垢版 |
2015/11/20(金) 21:02:06.71ID:0VjuA+NT0
delay をどこにどれだけ入れればいいかなにか目安はないのでしょうか?

順番に処理されるから、delay いらない気がするのですが、下記のような
単純な script でも delay をいれないとうまく動きませんでした。
delay がないと myURL に設定したウェブページじゃなくて、へんなリダイレクトページが表示されました。

-- クロームでウェブページを表示
tell application
0635名称未設定
垢版 |
2015/11/20(金) 21:03:43.90ID:0VjuA+NT0
delay をどこにどれだけ入れればいいかなにか目安はないのでしょうか?

順番に処理されるから、delay いらない気がするのですが、下記のような
単純な script でも delay をいれないとうまく動きませんでした。
delay がないと myURL に設定したウェブページじゃなくて、へんなリダイレクトページが表示されました。

-- クロームでウェブページを表示
tell application "Google Chrome"
tell window kuroWinIndex to activate

-- delay 0.5
set myTab to make new tab at end of tabs of window kuroWinIndex
set kensakuGoku to _searchWord as text

-- delay 0.5
set myURL to "https://www.google.co.jp/search?q="; & kensakuGoku
log "myURL : " & myURL

delay 0.4
set URL of myTab to myURL
end tell
0636名称未設定
垢版 |
2015/11/20(金) 21:17:32.71ID:IkinpZgs0
>>635
その最後のdelayがなくてもkensakuGoku/searchWordでのGoogle検索結果になるけど
へんなリダイレクトページってURLなんやねん?なんかアンチウイルスソフトでも入れているとか?
0637名称未設定
垢版 |
2015/11/20(金) 21:21:50.09ID:IkinpZgs0
もしくはなんらかのプラグインかなあ
プラグインが原因だとしたらdelayはそこじゃなくmake new tabの直後に入れても効くだろう
make new tabをしないでやってみてどうとか見るとよりプラグインが原因かなあがはっきりするかな
0638名称未設定
垢版 |
2015/11/20(金) 21:32:23.10ID:0VjuA+NT0
delay いれないと下記の URL に飛ばされるけど、拡張機能の悪影響みたいですね。
chrome-extension://pkolifcipfnlmkonikcnilfhgdbbhhko/redirect.html
0639名称未設定
垢版 |
2015/11/20(金) 22:05:27.27ID:IkinpZgs0
なる。そみたいだね
そのキモい文字列はなんやねんってググってみたら、機能拡張に付けられたユニークなIDかな。Tab Nullpo+ ならば
0640名称未設定
垢版 |
2015/11/22(日) 02:57:49.95ID:Crb3hzhD0
おらのアップルスクリプトにショートカットを割り当てるのが面倒くさすぎる件

1. スクリプトエディタでスクリプト作成
myscript.scpt

2. オートメターのサービス作成
アップルスクリプトを実行を選択し、1. の内容をコピペ

3. 設定 → キーボード。2. で作成したサービスにショートカットキーを割り当て。
修飾キー3つぐらいつけた複雑なやつを割り当て。

4. karabina で、右コマンドに 3. で作成したショートカット割り当て

----- -----

上記手順で作成したアップルスクリプトにショートカットを割り当てているのですが、もうちょっと効率的にできないのでしょうか?

上記手順だと、スクリプトエディタでスクリプトを修正したら、またオートメター立ち上げて、コピペが必要となり効率悪いことこの上ない。
0641名称未設定
垢版 |
2015/11/22(日) 03:22:36.50ID:CSZfjbIO0
>>640
Sparkとかのランチャー系アプリ使えば2以降はキー設定のみで済む
というか、そもそもKarabinerにそういう機能あるだろ
(おれは使ってないが。従前からSpark使ってるので移行がめんどいから……)
Karabinerで多機能ランチャーを実現する - Qiita
ttp://qiita.com/catfist/items/ab43d06b6914418afb85

最近できたKarabinerスレは有益な書き込みが多いのでオススメ
【キーリマップ】Karabiner Part1【カスタマイズ】 [転載禁止]©2ch.net
ttp://anago.2ch.net/test/read.cgi/mac/1439014871/
0643名称未設定
垢版 |
2015/11/22(日) 04:22:29.35ID:CSZfjbIO0
ああ、BTTももちろんありだね
ランチャー系でメジャーどころといえばほかにもLaunchBar、Alfredなど
参考までに自分はKarabiner、BTT、Spark、LaunchBarを併用しているよ
Sparkはもうやめたいんだけど移行がめんどい(大事なことなので(ry
0644名称未設定
垢版 |
2015/11/22(日) 11:19:29.93ID:wjYxrbbL0
>上記手順で作成したアップルスクリプトにショートカットを割り当てているのですが、もうちょっと効率的にできないのでしょうか?

↑を自動化しちゃえばいいんじゃねえ、なんつって

FastScripts
Instant access to your scripts, by keyboard shortcut or menubar.
Free for 10 keyboard shortcuts. $9.95 for unlimited.

10.6以降対応、10.10の話はリリースノートに載ってる
10.11はわからん
0645名称未設定
垢版 |
2015/11/22(日) 19:11:06.31ID:nrMXMOab0
>>641
レスありがとう。

karabiner からAppleScript実行できたのか。
知らなかった。
これができれば、>>640 の手続きを大分省略できる。
0646名称未設定
垢版 |
2015/11/24(火) 22:10:39.87ID:lOO4yht00
コマンドの 引数に何を指定したらいいかどこを見たら良いのでしょうか?
用語説明見てもちゃんと書いてないのが多く困ってます。

例えば、duplicate コマンドの引数に何を指定するかエイリアス? posixパス? それとも hfs 形式?
移動先はフルパスを指定するのか、移動先フォルダを指定するのかとかも書いてなくて、簡単そうなとこで詰まりまくりです
0647名称未設定
垢版 |
2015/11/24(火) 22:55:00.77ID:vOhllC2P0
>>646
>duplicate v : Duplicate one or more object(s)
>duplicate specifier : the object(s) to duplicate
>[to location specifier] : the new location for the object(s)

>移動先フォルダを指定するのか
これは書いてあるじゃん
まあ指定しなかったらどうなるかは書いてないけど
常識の範疇というかちょっと試せばわかること

>何を指定するか
この場合もそうだが、たいてい必要な specifier は alias や file だわな
path 自体はただのテキストにすぎないので、コマンドは場所として認識しない
君の書いてるPOSIX pathやなんかも最終的には変換して渡すわけだね
>set tarFolderPath to "/hoge/hage" --これはただのテキスト
>set tarFolder to POSIX file tarFolderPath --これでファイルを参照できる
>get POSIX path of tarFolder --これで tarFolderPath と同じものが返る

逆に言えば、コマンドに渡すまではどの形で管理しようと自由
テキストであることを生かしてホイホイ変形できる
自分なんかは POSIX path がわかりやすいし何かと便利なのでそれで統一してる
慣れるまでは全部下記のようにして渡すと謎の行き詰まりも減るかと
(面倒なことに、file や folder と alias の違いが問題になることがある)
>set tarFolder to tarFolder as alias --つまり (POSIX file "/hoge/hage") as alias
0648名称未設定
垢版 |
2015/11/24(火) 23:02:46.20ID:vOhllC2P0
よく見たら質問の答えになってないな。すまん
>どこを見たら
確かに用語辞書だけ見てもちんぷんかんぷんだと思う
暗黙の前提がけっこうあるからね
その辺は>>1にあるサイトを眺めてつかんでいくしかないよ
0649名称未設定
垢版 |
2015/11/25(水) 01:16:34.40ID:7NRDBOtT0
>>647 役に立つレスありがとうございます

下記のコードで srcFile の指定を tell ブロックの中でやるとエラーになるのはなぜでしょうか?

今日一日の数時間の作業の成果。作業効率化のはずが非効率化してる。
デスクトップにファイルコピーするだけで数時間かかった。

-- このファイルをデスクトップにコピー
property bkItemFullpathText : "/Users/Tomo/Desktop/kopitesuto.scpt"

set srcFile to (POSIX file bkItemFullpathText)
set destDir to (path to desktop folder)

tell application "Finder"
log "----- 3 finder で 処理開始-----"
-- これがだめ — 上書きしない設定に変更できずこまった
-- duplicate srcFile to destDir with replacing false

-- 下記2つは動く
-- duplicate srcFile to destDir without replacing
duplicate srcFile to destDir with replacing
end tell
0650名称未設定
垢版 |
2015/11/25(水) 02:34:16.75ID:TCaMN6bP0
shellのほうが楽そうだな
0651名称未設定
垢版 |
2015/11/25(水) 11:14:05.31ID:gljbLSkV0
>>649
set srcFile to bkItemFullpathText as POSIX fileにすればtell〜内で動く。

それより、AでできるのにBの記述にできなくて何が問題?
A : duplicate srcFile to destDir without replacing
B : duplicate srcFile to destDir with replacing false
0652名称未設定
垢版 |
2015/11/25(水) 12:08:05.39ID:DGBNKIrw0
>>649>>651
ちゃんと用語辞書読めばそんな書き方はないとわかる
> [replacing boolean] : Specifies whether or not to replace items (ry
B はよけいな with がいかん
> duplicate srcFile to destDir replacing false
こう書けば普通に動く(コンパイル時に without の記法に直されるが)

どうでもいいが、without の記法が気に入らないならこうすればコンパイル通る
> set isFalse to false
> duplicate srcFile to destDir replacing isFalse
0653名称未設定
垢版 |
2015/11/26(木) 22:25:10.93ID:EikmtUER0
>>651
レスありがとうございます。

理由がよくわからないのですが、as を使わないと finder のfile オブジェクトととして解釈されて動かないということでしょうか?

AppleScriptの最大の問題点はパスの指定。エイリアス、posix 、ファインダーのファイル、Mac 形式とかあって意味不明すぎる。

AppleScript は一つの単語に複数の意味があって混乱する。
一つの単語に複数の意味、使い方があるような言語を使ってると馬鹿になるよ。
0654名称未設定
垢版 |
2015/11/27(金) 00:07:57.81ID:BPNuZ3Dr0
な、相手にしないほうが良かっただろ
0656名称未設定
垢版 |
2015/11/27(金) 17:20:00.86ID:5UEcuuEY0
わろた

>>653=>>646とは限らないがマジレスすると
パスの仕様は意味不明でもなんでもない
ASの問題点は存在するが、お前はそれを指摘できるレベルに達してないよw
「複数の意味」を問題にするなら、せめてtellブロックでの用語衝突などを挙げてくれ
0657名称未設定
垢版 |
2015/11/27(金) 21:22:43.35ID:/EMo4Pm00
理解してない子ほど、自分の無能を棚に上げて文句言うやつか
0658名称未設定
垢版 |
2015/12/08(火) 02:50:30.52ID:VLHPwPJ50
用語辞書のスイーツ(笑) ってなんなのでしょうか。

クラスの説明が複数スイーツに分かれてたりして分かりづらい。
0659名称未設定
垢版 |
2015/12/08(火) 11:09:05.09ID:lB4YAlKM0
都会の隠れ家的お店で、頑張った等身大の自分へ与えるご褒美です。
0660名称未設定
垢版 |
2015/12/09(水) 18:01:19.26ID:yPmT8tDJ0
基本的なとこでつまりまくるので、Kindleで hanaan著"Learn AppleScript "を買った。

4600円したが内容は素晴らしい。
余計な前置きが多いのと、後で説明する、みたいなスタイルがうざいのがたまにキズ。
0661名称未設定
垢版 |
2015/12/12(土) 13:30:37.00ID:kUyJIXaw0
>>658
標準コマンドか否かみたいな感じ
基本的に見たいものは検索で探すから無視無視
0662名称未設定
垢版 |
2016/01/01(金) 09:06:18.03ID:BJsCGmtz0
display dialog "Happy New Year!"
0663名称未設定
垢版 |
2016/01/04(月) 00:18:42.48ID:Fh/KFYvI0
なーんか最近スクリプトエディタがよく落ちる
ちょっと前にJavaScriptで間違った文を実行して落ちて以来、落ち癖がついちゃったような
今はAppleScriptのコンパイル済み.scptを開いた時に多いけど、エディタ単独で開いても時々
OS X 10.11.2 (15C50)
スクリプトエディタ 2.8.1 (183.1)
0664名称未設定
垢版 |
2016/01/04(月) 03:03:47.04ID:85GhQRWi0
リポートとコンソール確認すれば
0665名称未設定
垢版 |
2016/01/05(火) 01:26:25.47ID:p4h3jkgn0
xcode 使ったら、ブレークポイントでとめて、タップで変数の中身確認とかできないの?

スクリプトエディタだとブレークポイント作れないよね?
0666名称未設定
垢版 |
2016/01/05(火) 08:47:52.77ID:w5XIhSln0
使った事無いけどLateNightのScript Debuggerとか?
0668名称未設定
垢版 |
2016/01/21(木) 00:05:03.47ID:DbKP7fYg0
下記は重複しない保存先パスを作成する script の一部です。
日付_連番_ファイル名  このような形式のファイル名を作成しています。
exists コマンドの挙動がおかしく、常に false が返ってます。

set i to 2
repeat
tell application
0669名称未設定
垢版 |
2016/01/21(木) 00:32:22.07ID:4rMo+FcO0
構文エラー
expression、property または key form など があるべきところですが end of script が見つかりました。
0670名称未設定
垢版 |
2016/01/21(木) 01:45:11.58ID:DbKP7fYg0
set i to 2
repeat
tell application "Finder" to set isItemExists to exists (my POSIX file fullpathText)
if {isItemExists = false} then
log "存在しない"
exit repeat
else -- 存在するときの処理
set k to (i as text)
-- date_k_baseName -- /Users/Yuu/Desktop/2016_01_21_test.txt
set fullpathText to destDir & baseDateStr & k & "_" & baseNameStr
end if
set i to i + 1
end repeat
return fullpathText
0671名称未設定
垢版 |
2016/01/21(木) 02:03:39.34ID:DbKP7fYg0
>>668 です。文法が怪しいところをハンドラにして書き方変えたら自己解決しました。
>>670はif文がなぜか常に "存在しない" の方に行く。

下記なら理由はよくわからないがうまくいく。
on fileExists(fullpathText)
tell application "System Events"
if exists file fullpathText then
return true
else
return false
end if
end tell
end fileExists
0672名称未設定
垢版 |
2016/01/21(木) 09:41:56.94ID:sgs/8VkY0
if {isItemExists = false} then <- なんで{}とか使ってんの?
そもそも閉じる必要もないし。
0673名称未設定
垢版 |
2016/01/21(木) 11:22:21.54ID:ID6h33Zz0
以前AppleScriptの仕様に文句言ってた人では
見切りつけて使うのをやめたんじゃなかったのか
0674名称未設定
垢版 |
2016/01/25(月) 23:43:26.79ID:2FBTd4al0
作業完了時にチャリーンと音を鳴らすにはどうするのが良いでしょうか?

下記のしっくりこない対策しか思いつきません。

・ beep
音が気にくわない。

・ AppleScriptobjc で NSSound クラスを使う。
本に載ってる。コピペでそのまま使えそう。
でも、なにか大げさで違和感のある対策。

・ iTunes でサウンドファイル再生。
大げさ、重い。
0676名称未設定
垢版 |
2016/01/26(火) 00:07:09.92ID:OaX1S4kQ0
通知ありでも良ければ
display notification with title "終了しました" sound name ""

ユーザのライブラリ/Soundsに音源ファイル入れておけばOK
sound nameに拡張子無しのファイル名で音が出る。
名前が違えば通常の通知音が鳴る。
0677名称未設定
垢版 |
2016/01/26(火) 03:37:54.07ID:UV5S+svp0
>>675 >>676
役に立つ回答有り難うございます。

できました。
do shell script "afplay /System/Library/Sounds/Ping.aiff"
0678名称未設定
垢版 |
2016/01/29(金) 21:32:54.40ID:uUQj78VG0
>>677
afplay -v 0.1 とかでボリューム調整な
うちもそうやって通知音出してるわ
0679名称未設定
垢版 |
2016/01/30(土) 23:18:50.99ID:IOL1PbEa0
起動してウインドウ位置とウインドウサイズを固定するAutomatorのアプリをApple Scriptで作りたいのですが、一部のアプリで
tell application "アプリ名"
activate
tell front window
set bounds to {0, 0, 0, 0}
end tell
end tell
でエラーウインドウが出るだけでアプリの起動もできません。

他の方法として
tell application "System Events"
を使えばいいようですが、どんな風にかけて思った動作がするにか想像もできません…
どなたか助けていただけませんか。
0680名称未設定
垢版 |
2016/01/30(土) 23:46:59.63ID:LtqeZOXR0
「一部のアプリ」でなんだかよくわからない「エラーウインドウ」ね……
エスパー募集かな?
0681名称未設定
垢版 |
2016/01/30(土) 23:59:59.45ID:IOL1PbEa0
https://i.imgur.com/4aXhmWl.png
こんなウインドウしか出てこないのでどうすればいいのか全くわかりません。
アプリはTweetbotなどです。

特にエスパーは必要ではありません。
0683名称未設定
垢版 |
2016/01/31(日) 00:43:24.43ID:Lb5Fe+7B0
参考までに。

tell application "System Events"
set app_name to name of first item of (every application process that (frontmost is true))
tell process app_name
set a_win to (1st item of (every window that subrole is "AXStandardWindow"))
set position of a_win to {20, 60}
set size of a_win to {1600, 1200}
end tell
end tell
0684名称未設定
垢版 |
2016/01/31(日) 00:50:08.78ID:H6u9ib8G0
tell application "System Events"
tell process "アプリ名"
tell front window
set position to {x, y}
set size to {w, h}
end tell
end tell
end tell
で行けんじゃないの
0685名称未設定
垢版 |
2016/01/31(日) 19:25:53.91ID:T2G1Wg900
Mailソフトでフィルタリングされた迷惑メール複数をmeiwaku@dekyo.or.jpに添付ファイルとして、転送できるようなAppleScriptって書けないものでしょうか?

件名はjunk mail transferとしたいです。
0686名称未設定
垢版 |
2016/01/31(日) 19:30:26.66ID:8Nm40lSC0
どこまで出来たか晒しなよ
見てくれる人はいっぱいいるから
0687名称未設定
垢版 |
2016/01/31(日) 22:37:40.80ID:namoAALa0
>>685
こういう系統のスクリプトはスパムに使えるから答えをもらえないかも。
0688名称未設定
垢版 |
2016/01/31(日) 23:31:50.09ID:vPfKXtBI0
んなこたあないw
そんなこと言い出したら>>679だってイタズラ用かもしれんぞ
答えをもらえるかどうかは>>1を読んだかどうかと女子高生か否かで決まる
0689名称未設定
垢版 |
2016/02/06(土) 20:13:14.62ID:LOyohfZN0
>>685
>Mailソフトでフィルタリングされた迷惑メール
迷惑メールが収められているフォルダー内のデータ
に対して(1、2)を行うスクリプト:
1) 文字検索して
2) 検索結果をmeiwaku@dekyo.or.jpに送る
をpythonやrubyなどで書いた方が、同じ作業を
AppleScriptで書くよりも絶対に楽だと思う。
 5万円払ってくれるのなら、AppleScriptで書いて
もらえるとも思うが。
0690名称未設定
垢版 |
2016/02/06(土) 22:05:24.20ID:PZIXO4V20
細かいこと言わなきゃ 環境設定→ルール の実行パターン「メッセージを転送」で済みそうな気もするけど。

もしくは、実行パターンとして「AppleScriptを実行」てのもあるからそこ使えば作れるかも。
0691名称未設定
垢版 |
2016/02/07(日) 01:23:00.23ID:gYLu6YbZ0
AppleScriptでメーラー作ればいいんじゃない
0694名称未設定
垢版 |
2016/02/24(水) 18:45:41.19ID:PaiBzqoz0
教えてください。
ttp://hottinroof.blog54.fc2.com/blog-entry-77.html
のスクリプトを使って写真のリネームをしています。本日 El capitanにアップデートしたところ
「sh: exiftool: command not found Finder でエラーが起きました:sh: exiftool: command not found(127)」
と動かなくなりました。
exiftoolsは最新のmac用 10.11です。調べたところ、置き場所が変わったとの記述を見つけ、
スクリプトを開いて開いて POSIX path にMacintosh/usr/local/bin/exiftoolを当てようと色々試したのですが動かず的外れ
だったようです。
どなたかどうすればexiftoolが有効になるのか教えてください。お願いします。
0695名称未設定
垢版 |
2016/02/24(水) 19:33:34.55ID:PcH/7f1n0
頭の Macintosh 取って、 /usr から始めればいいんじゃない
0696名称未設定
垢版 |
2016/02/25(木) 10:01:21.68ID:cT4RuRny0
>>694
このAを各々Bと置き換えたらできないかな?
A:
set scrptMO to "exiftool -model " & cameraname
set scrptMO to "exiftool -DateTimeOriginal " & hidukejikoku

B:
set scrptMO to "sips --getProperty model " & cameraname
set scrptMO to "sips --getProperty creation " & hidukejikoku
0697名称未設定
垢版 |
2016/02/26(金) 07:53:10.85ID:/CCFtnsQ0
>>695
>>696
だめでした。pathの変更を記述しただけじゃダメみたいです。
ちょっとお手上げ。
0698名称未設定
垢版 |
2016/02/26(金) 09:09:33.85ID:xF52EGeJ0
>>697
試しにel capitanで実行しても動いたよ。>>696
変な所いじってない?
元のまま該当部分だけ置き換えた?

エラーが出るならなんてエラーが出てるかも書かないと。
0699名称未設定
垢版 |
2016/02/26(金) 16:20:14.71ID:atUtY2LD0
exiftoolいらんかったんや

と思ったけど、調べてみたら、一発で所望のリネームまでできるじゃないか
exiftool '-FileName<$model $DateTimeOriginal%+c.%e' -d '%Y%m%d %H%M%S' ファイル...
ドロップレットで処理するとしても長々いらんかったんや
0700名称未設定
垢版 |
2016/02/26(金) 18:59:39.08ID:/CCFtnsQ0
>>698

コンパイルした後、保存するの忘れてました!!
うまく動きました。

本当にありがとうございます。
これで母艦もEl Capitanに移行できます。

ありがとうございます。
0702名称未設定
垢版 |
2016/02/29(月) 18:41:06.52ID:FzgXm9MA0
上の処理をシェルスクリプトの勉強がてら書いてみたんだけど、
よくわかっていないのでイマイチすっきりしない。
どう書いたらスマートに書けるか詳しい人教えて。
for f in `ls` ; do mv $f `sips --getProperty model $f | sed -n '/[0-9: ]$/p' | sed 's/ model: //'`
0703名称未設定
垢版 |
2016/02/29(月) 18:42:34.87ID:FzgXm9MA0
なんかとちゅうで切れてるので再アップ
for f in `ls` ; do mv $f `sips --getProperty model $f | sed -n '/[0-9: ]$/p' |
sed 's/ model: //'`"_"`sips --getProperty creation $f | sed -n '/[0-9: ]$/p' |
sed 's/[^0-9]//g'`".jpg"; done
0704名称未設定
垢版 |
2016/02/29(月) 20:57:20.57ID:7rDDasVF0
おめーはよー、シェルスクリプトだけの話しかしねーならスレ違いだろボケー
このスレらしくImage Eventsで書き直した版持ってこいよ
0705名称未設定
垢版 |
2016/03/15(火) 18:33:52.75ID:D7JpzMMj0
do shell scriptを使ってpython 3を実行させたいのですが、
Aの記述の様にパスに日本語を含むファイルを実行しようとすると
can't open file '<unprintable file name>': [Errno 92] Illegal byte sequence" number 2とエラーがでます。

A: do shell script"〜.pyenv/versions/3.3.0/bin/python 〜/Desktop/テスト.py"
B: do shell script"python 〜/Desktop/テスト.py"

ファイル名に日本語を含まない場合、ターミナルから直接実行した場合、Bの記述の場合は
いずれも問題なく実行できます。

どうしたら上の記述で実行できるでしょうか?
pandasを使いたくてpython 3の方に入れたのですが、
Bの記述だとpandasが認識されず、Aの記述だとpandasが認識されます。
ターミナルから実行する場合はBでも問題なくpandasは認識されます。

pandasはpipを使って入れています。
0706名称未設定
垢版 |
2016/03/15(火) 19:05:41.06ID:8FCCxXqP0
例のあれ、LANG=ja_JP.UTF-8 設定して解決じゃないの
0707名称未設定
垢版 |
2016/03/16(水) 02:06:49.60ID:SCX7A7Ur0
$ "hoge -hoge '/日本語/日本語'"
ってするんじゃないの
0708名称未設定
垢版 |
2016/03/16(水) 02:30:44.77ID:uKUS3Bk/0
           |
            |  彡⌒ミ
           \ (´・ω・`)またhageの話してる
             (|   |)::::
              (γ /:::::::
               し \:::
                  \
0709名称未設定
垢版 |
2016/03/16(水) 08:57:16.32ID:wz/7bs1s0
>706
localeはLANG=ja_JP.UTF-8になっています。

>707
シングルクォートの事でしょうか? 囲っても囲まなくても結果は同じでした。
0710名称未設定
垢版 |
2016/03/16(水) 08:59:05.73ID:aX1+TI1t0
>>709
いやコマンドのコードに書き込めよ
中に書いてあっても読み込まないよ。
0711名称未設定
垢版 |
2016/03/16(水) 09:14:46.67ID:wz/7bs1s0
>710
コマンドに入れたらできました!
ありがとうございます。次からはおまじないで入れとくことにします。
0712名称未設定
垢版 |
2016/03/16(水) 10:42:50.80ID:gHrb8tu60
テキストエディットで文末に表示とカーソルを移動させたいのですが、
どこをどう直せばよいですか?

tell application "TextEdit"
activate
tell front document
set selection to last paragraph
end tell
end tell
0713名称未設定
垢版 |
2016/03/16(水) 11:40:47.13ID:wz/7bs1s0
>>712
詳しく知らないけど、ぱっと見それらしい命令がないので無理じゃないかな?
最終目的がわからないけど直接テキストデータいじった方が早いかも。
0714名称未設定
垢版 |
2016/03/16(水) 11:51:48.56ID:4r7QBeuW0
キーバインドで操作出来るんじゃないの
0715名称未設定
垢版 |
2016/03/16(水) 12:48:41.48ID:gHrb8tu60
>>713-714
ありがとうございます

特定のテキストファイルに
コピーしたメモを貼り付けておきたいのですが、
文末にどんどん追加していきたいので、
そのテキストファイルを開いたら、カーソルが一番下に行くようにしたかったです。

Alfredのトリガーで「そのファイルを開いて、スクリプトで文末に移動」
というのを登録して使おうと思いました。

やっぱり、素直にこうするのがいいのかもしれませんね・・・

tell application "TextEdit"
activate
tell front document
tell application "System Events" to key code 125 using {command down}
end tell
end tell
0716名称未設定
垢版 |
2016/03/16(水) 13:14:48.69ID:wz/7bs1s0
コピーってのがクリップボードへのコピーならカーソルを移動しなくてもこれでできる。
tell document 1 of application "TextEdit" to set every text to every text & return & (the clipboard)
0717名称未設定
垢版 |
2016/03/17(木) 02:02:48.03ID:tknj+PfJ0
速度的にはどうなんだろ
on replaceReg(str, fnd, opt, rep)
set JsScr to "
var str = " & quoted form of str & ";
var fnd = new RegExp(" & quoted form of fnd & "," & quoted form of opt & ");
var rep = " & quoted form of rep & ";
str.replace(fnd, rep);
"
set ret to run script JsScr in "Javascript"
return ret
end replaceReg
0718名称未設定
垢版 |
2016/03/17(木) 05:32:07.90ID:U21OisUH0
>>717
どうもapplescriptに見えんなーと思ったらapplescriptじゃなかった
JS使いにとってはASで素直に置換ができない問題がこれで解消されるわけか?
まあしかしASだけでルーチン組むのとあんまり変わらんから
やっぱり速度の問題になるよね
0719名称未設定
垢版 |
2016/03/17(木) 06:23:24.08ID:nfY5T6ih0
Doublequoteはescape必要に見えるけど、大丈夫?
0720名称未設定
垢版 |
2016/03/17(木) 07:12:42.55ID:3oRdLlSm0
失礼、勘違いだった。
0721名称未設定
垢版 |
2016/03/17(木) 09:20:51.65ID:DWzTlfih0
>>717
いいね、これ

前に似たようなことやりたくて、JSで書いたやつを~/Library/Script Librariesに置いてASから使おうとしてダメだったから諦めてた
代わりにuse framework "Foundation" ... NSRegularExpressionで書いて使ったけど見た目ごちゃごちゃしてるしマンドクサかった
0722名称未設定
垢版 |
2016/03/17(木) 20:45:27.45ID:tknj+PfJ0
721です。昨日から触り始めたので、目新しいことばかりです。
配列やオブジェクトがlistやrecordとして返ってくるのは
ちょっと嬉しい。今更かもしれませんが。

set JsScr to "
var obj = {str:'apple', arr:['ふじ','レッドデリシャス']};
obj
"
set ret to run script JsScr in "Javascript"
log "class of ret:" & class of ret
log "class of arr of ret:" & class of arr of ret
repeat with i in arr of ret
log i
end repeat
0723名称未設定
垢版 |
2016/03/17(木) 20:50:16.07ID:tknj+PfJ0
721さんではなくて717でした、失礼
0725名称未設定
垢版 |
2016/03/29(火) 21:22:05.25ID:0SkJ9rAs0
>>711
NSRegularRexpression をラップしてたマンドくさくないシンプルなインタフェースのライブラリをつくればいいのではないかしら。
0726名称未設定
垢版 |
2016/04/22(金) 15:37:59.52ID:hRzbi5SJ0
ASOCでウインドウをフローティング(常に前面)にしたいのですが、
どこでどう設定したらいいんでしょう?
0727名称未設定
垢版 |
2016/04/22(金) 20:48:33.70ID:OU5jWO7P0
>>726
  property win : missing value --xivでウィンドウど接続
--初期化で
  win's setLevel_(3)
0728726
垢版 |
2016/04/25(月) 10:29:40.54ID:H7rkWOxZ0
>>727
すみません。エラーも起きませんが、フローティングにもなりません。
現在記述してあるのは、下記のみです。xcode 3.2.6 os10.6.8
script UntitledAppDelegate
property parent : class "NSObject"
property _win : missing value
on applicationWillFinishLaunching_(aNotification)
_win's setLevel(3)
end applicationWillFinishLaunching_
on applicationShouldTerminate_(sender)
return current application's NSTerminateNow
end applicationShouldTerminate_
end script
0729726
垢版 |
2016/04/25(月) 10:44:02.50ID:H7rkWOxZ0
アンダーバーが抜けていました。アンダーバー入れてもフローティングにはなりません。
_win's setLevel_(3)
0730名称未設定
垢版 |
2016/04/25(月) 14:24:15.74ID:pJvZnNc40
>>728
  on applicationWillFinishLaunching_(aNotification)
   set aB to current application's NSBackingStoreBuffered
   set aRect to {{300, 300}, {300, 300}}
   tell current application's NSWindow's alloc()
    tell initWithContentRect_styleMask_backing_defer_(aRect, 7, aB, false)
     tell current application's NSView's alloc()
      tell initWithFrame_(aRect)
        setNeedsDisplay_(true)
        set aView to it
      end tell
     end tell
     setContentView_(aView)
     setDelegate_(me)
     setTitle_("TEST")
     setLevel_(3)
     makeKeyAndOrderFront_(me)
    end tell
   end tell
  end applicationWillFinishLaunching_

xiv怪しいから試しにwinnow作ってやってみて
これで出来ると思う
0731726
垢版 |
2016/04/25(月) 15:54:15.90ID:H7rkWOxZ0
>>730
ありがとうございます。
test windowはちゃんとフローティングになりました。
自分で作成したwindowはどこをどう設定したらいいんでしょう?
0732名称未設定
垢版 |
2016/04/25(月) 22:43:08.77ID:pJvZnNc40
>>731
xivのバグでoutlet接続しても接続されないってのがある、これはALを切ったりxivの設定を触ってると治る事がある
ただこれの場合はunrecognized functionとエラーログが出るのでおそらく別の問題。
通常、初期状態のxivのwindowをoutletを繋いでsetLevel_を呼び出せば、表示レベルが変更される。
マクロの定数をキャストしてな事による定数誤差の場合、>>730のコードも適用されないのでこれも違う
よってxivの設定が間違っている可能性が濃厚
0733726
垢版 |
2016/04/26(火) 09:37:28.68ID:TnaIN42b0
>>732
たびたびありがとうございます。
バグの可能性を聞いて、接続したり切ったり、設定を変えたりして
いじっていたらできることがありました。(2回成功しました)
ただ、これといった確実な方法が見つからずほとんどの場合はできません。
フローティングにならない場合でも同じ設定でエラーは出ません。
手動でoutletsの設定したい場合はどうしたらいいのでしょう?
0734726
垢版 |
2016/04/26(火) 09:53:27.89ID:TnaIN42b0
連投すみません。
絶対とは言えないのですが、高確率で成功する方法を見つけました。
property win : missing valueとwin's setLevel_(3)の両方を書いてからoutletsに接続すると成功率が高いようです。
property win : missing valueを設定してwin's setLevel_を実行する前にoutletsに接続してしまうと高確率で失敗します。
0735名称未設定
垢版 |
2016/04/26(火) 11:06:47.77ID:g47x2a7n0
>>734
Visible At Launchをオフにしてコードでwindowを表示してみましょう。
もし表示出来たならOutletが正しく接続されているので他に原因がある事になります。
_win's makeKeyAndOrderFront_(me)
_win's setTitle_("TEST")--ついでにタイトルも変えてみましょう

xivのwindowは、初期設定状態でしょうか
例えばxivでwindowのHidesOnDeactivateをonにしていると、他のアプリに移動した時にウィンドウが消えます。
0736726
垢版 |
2016/04/26(火) 14:07:33.25ID:TnaIN42b0
とりあえず新規プロジェクトで実験しているので初期設定状態のままです。
_win's makeKeyAndOrderFront_(me)
_win's setTitle_("TEST")
を試した後からなぜか突然フローティングに失敗しなくなりました。
新規で作ってさっきまでうまくいなかったやり方で試しても大丈夫です。
よくわからないけど助かりました。ありがとうございます。
0737名称未設定
垢版 |
2016/04/29(金) 22:34:11.86ID:YksCyGws0
# sed - put commas at the end of every line in stdin
# awk - pass to awk to remove the linefeeds
# sed - remove the comma from the last line
# sed - turn all spaces into pluses
address=`sed -e "s/$/,/g" | awk '{ str1=str1 $0 " "}END{ print str1 }' | sed -e "s/, $//g" | sed -e "s/ /\+/g"`
open "http://www.amazon.co.jp/s?field-keywords=$address";

Automatorのサービスで右クリックできるようにしたのですが、
これをつねにfirefoxで開くようにしたいです。
どのように付けくわえればよいでしょうか?
0738名称未設定
垢版 |
2016/04/29(金) 23:50:36.50ID:mmmN9YIf0
デフォルトブラウザがFirefoxならそのまま行くんじゃないの
それかopen -a Firefoxにするか
0739名称未設定
垢版 |
2016/04/30(土) 02:41:26.48ID:6hA5ZwKI0
または open -b org.mozilla.firefox
0740名称未設定
垢版 |
2016/04/30(土) 08:23:41.53ID:7vBWrPt20
>>738,739
ありがとうございます
デフォルトはSafariです
amazonの検索だけFirefoxにしたかったのです

教えてもらった行を最後に付けくわえてみたら、
Firefoxは起動するけど、検索自体はSafariのままでした。
付けくわえかた間違ってるのでしょうか・・・?
0741名称未設定
垢版 |
2016/04/30(土) 10:25:24.23ID:OIJSFV4t0
加えるんじゃなくて、最後の行のopenを置き換え
0742名称未設定
垢版 |
2016/04/30(土) 10:42:10.10ID:7vBWrPt20
>>741
ありがとうございます!
うまくいきました、助かりました。
0743名称未設定
垢版 |
2016/05/12(木) 13:39:13.01ID:OI34QQdR0
すごく単純な質問かもしれませんがご容赦ください
display dialogのテキストフィールドに、ユーザーが計算式を入力して、スクリプトに計算させるにはどうしたらいいでしょうか

例えば1/2+12/24と入力すると1と返ってくるようにしたいのです
0744名称未設定
垢版 |
2016/05/12(木) 14:20:47.24ID:U+AgI3Kr0
set r to "1/2+12/24"
run script r
0745名称未設定
垢版 |
2016/05/12(木) 14:23:56.87ID:OI34QQdR0
>>744
ありがとうございました! 助かります!
全く思いつきませんでした!
0746名称未設定
垢版 |
2016/06/09(木) 22:46:54.30ID:e2kQHPZ50
クリップボード内のテキストを置換や挿入削除するのを使っています。
これを改造して、改行も文字と同じように置換や挿入削除したいのですがどのようにすればいいのでしょうか?
例えば「ほげほげ」を

「ほげ
ほげ」

に置換、またその逆もなんですが。
改行そのものは""で括らず「ASCII character 13」などと書けばいいのまではわかりました。

try
set the clipboard to «class ktxt» of ((the clipboard as text) as record)
set orig_txt to the clipboard as text
if orig_txt is not "" then
set orig_txt to FindAndReplace(orig_txt, "hoge", "ほげ")
set orig_txt to FindAndReplace(orig_txt, ASCII character 13, "★改行消したよ★")
set the clipboard to orig_txt as text
else
error "The clipboard is empty..." number 1
end if
on error err_msg number err_num
reportErr(err_num, err_msg)
end try
on FindAndReplace(targetStr, pre, pro)
set CurDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to pre
set targetStr to text items of targetStr
set AppleScript's text item delimiters to pro
set targetStr to targetStr as string
set AppleScript's text item delimiters to CurDelim
return targetStr
end FindAndReplace
0747名称未設定
垢版 |
2016/06/10(金) 01:04:00.29ID:izjeg4LE0
set orig_txt to FindAndReplace(orig_txt, "ほげ", "ほげ" & return) -- ただしイマイチ
「ほげほげ」
 ↓
「ほげ
ほげ


set orig_txt to FindAndReplace(orig_txt, return, "")
「ほげ
ほげ

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

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

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

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

一応pbpaste使った場合。>>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

do shell script scriptCommand
end repeat

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

e.g.
set theDate to current date
set theYearString to do shell script "date +%Y"
set (year of theDate) to theYearString
...
0814名称未設定
垢版 |
2016/09/07(水) 04:47:46.77ID:3MTRzdxL0
OS10.9以上なら、Rubyのdateオブジェクトで西暦和暦変換ができるみたいです
ただ、和暦はドット区切り、西暦はスラッシュ区切り固定のようなので、
入力する日付を自分でその形式に変換しておく必要あり
(AppleScript's text item delimiters とif文を組み合わせればできる)

というか、本題からズレてたらすいません…


--和暦→西暦変換(ドット区切り・H(平成)・S(昭和)・T(大正)・M(明治)対応)
set theDateStringJp to "S10.9.6"
set theRubyScript to "require 'date';puts Date.parse(\"" & theDateStringJp & "\").strftime(\"%Y/%m/%d\")"
set theDateString to do shell script "ruby -Ku -e " & quoted form of theRubyScript

--西暦→和暦変換(スラッシュ区切り・H(平成)・S(昭和)・T(大正)・M(明治)対応)
set theDateString to "1935/09/06"
set theRubyScript to "require 'date';puts Date.parse(\"" & theDateString & "\").jisx0301"
set theDateStringJp to do shell script "ruby -Ku -e " & quoted form of theRubyScript
0815名称未設定
垢版 |
2016/09/07(水) 08:09:40.71ID:3MTRzdxL0
>>809
set theDateString to "2016/9/6"
set theDate to date theDateString

set yearString to characters 1 thru 4 of theDateString as text
set (year of theDate) to yearString

log theDate

やっつけ仕事っぽいけど、
システムの設定が和暦だろうが西暦だろうが、
theDateStringの最初の4文字を切り出して
dateオブジェクト「theDate」のyearに代入しちゃえば、
西暦2016年(和暦表記だと平成28年)に上書きできますた
0816名称未設定
垢版 |
2016/09/07(水) 11:05:58.56ID:FhgBYBLX0
平成やHの文字が出てくると決めつけてるとすぐ使えなくなる可能性が…
0817名称未設定
垢版 |
2016/09/07(水) 11:31:39.64ID:ngYUIGtT0
>>809
結局最終的に何が得たいの? 日付を西暦にした文字列? 日付同士の計算がしたい?

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

ちなみに10.6.8だと>>809のは和暦にすると動かないんだが。
0818名称未設定
垢版 |
2016/09/07(水) 11:41:37.76ID:CoRxCYwF0
新年号なんだろうな?
0819名称未設定
垢版 |
2016/09/17(土) 05:04:41.42ID:WAphUahl0
入力時点で表記を統一させるか、例外な表記は統一する関数でも書けよ
0820名称未設定
垢版 |
2016/09/18(日) 17:17:15.66ID:P6TC9ipg0
image eventsで適当な画像をpictで保存したいのですがerror 1708がでてうまくいきません.
どのようにしたらいいでしょうか??

set afile to choose file
set adesk to (path to desktop) as text
tell application "Image Events"
launch
set the_image to open afile
try
save the_image as PICT in (file (adesk & "a.pict"))
end try
close the_image
end tell
0821名称未設定
垢版 |
2016/09/18(日) 18:54:18.94ID:ZyunKvGT0
pictは扱えなさそうな感じ
代わりにsipsコマンドでやると Error: Unsupported output format com.apple.pict
0822名称未設定
垢版 |
2016/09/18(日) 22:05:15.44ID:RKOguUii0
標準のコマンドがダメなら brew install imagemagick して
convert コマンドを使う手もある
ImageMagick は PICT 形式に対応してるよ

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

on doWithTimeout(uiScript, timeoutSeconds)
set endDate to (current date) + timeoutSeconds
repeat
try
run script "tell application \"System Events\"
" & uiScript & "
end tell"
exit repeat
on error errorMessage
if ((current date) > endDate) then
error "Can not " & uiScript
end if
end try
end repeat
end doWithTimeout

記録したものはこんな感じです。
0829名称未設定
垢版 |
2016/11/08(火) 18:59:43.47ID:BsKEIaRN0
>>828で済むならいいけど書く場合

tell application id "com.apple.systemevents"
tell application "Google Chrome" to activate --これは呼び出し方によっては不要
tell process "Google Chrome"'s first menu bar's menu bar item "ウインドウ"'s menu "ウインドウ"'s menu item "ズーム" to click
end tell
0831名称未設定
垢版 |
2016/11/18(金) 11:49:53.23ID:0sQ3zW0a0
いつの間にかiTunesでdisplay dialogとdisplay alertのcancel buttonが効かなくなってる
0832名称未設定
垢版 |
2016/11/18(金) 15:06:19.50ID:FWfCUeTi0
>>830
やべぇよやべぇよ……
ほんこれ >Another nail in the coffin of macOS being a tool for professionals.
0833名称未設定
垢版 |
2016/11/18(金) 21:18:06.86ID:GUceBYRw0
Rhapsody発表時にAppleScriptも廃止する予定とジョブズが言ったとたん
じゃぁもうMac使ってる意味ねーよ安いAT機買うからとプロ業界から総スカンをくらい
なんと思い直したというMac自動化の歴史も、彼なき後、遂に終焉を迎えるわけですな
0834名称未設定
垢版 |
2016/11/21(月) 20:23:02.65ID:7ymhH/7S0
Swiftインタプリタでなんとかしてくれるの?
0836名称未設定
垢版 |
2016/11/22(火) 23:21:03.30ID:ICQ6tb5N0
相談です。
最近、iTunes用の以下のスクリプトで動画ファイルの種類を変更しようとするとパラメーターのエラーです、というエラーが出てしまいます。
なぜか、TV showへの変更はうまくいき、movieやmusic videoへの変更が失敗します。

tell application "iTunes"
--return (item 1 of selection)
set video kind of (item 1 of selection) to movie
end tell
0837名称未設定
垢版 |
2016/11/23(水) 03:04:10.30ID:enXikOrW0
home video/‌movie/‌music video/‌TV show

どれに変えてもエラーにならなかった
0838名称未設定
垢版 |
2016/11/23(水) 12:49:43.28ID:WM8UhP380
ありがとうございます。
環境依存っぽいですね。
0839名称未設定
垢版 |
2016/11/23(水) 13:51:26.26ID:tAdkg8UK0
バージョンは? コンパイルしなおしたか? できるファイルもあるのか? 何かの tell ブロックに入れ子になってたりして用語衝突してないか?
0840名称未設定
垢版 |
2016/11/23(水) 17:09:26.13ID:sz1Dt2/Q0
Mac OS X 10.9.5
AppleScript 2.3.2
iTunes 12.4.3.1
でした。
いくつかのファイルを試しましたが、やはりTV showへの変更しかできませんでした。
他はエラーが返ります。
「iTunesでエラーが起きました:パラメーターのエラーです」
入れ子ではなく、スクリプトエディタでそのまま実行してもエラーになります。
0841名称未設定
垢版 |
2016/11/23(水) 18:37:33.33ID:60Z7tgsL0
iTunes上で直接変更はできるの?
0842名称未設定
垢版 |
2016/11/23(水) 20:59:45.08ID:sz1Dt2/Q0
はい、可能です。
今は手動でやってます。
0843名称未設定
垢版 |
2016/11/24(木) 04:46:23.72ID:QhkCG5JO0
気になる話があった
http://dougscripts.com/410
Set Video Kind of Selected v5.2
WARNING: a possible bug in iTunes 12.4.1 and later prevents this script from working. Until Apple confirms and/or addresses this issue, I do not recommend using this script.
0844名称未設定
垢版 |
2016/11/24(木) 15:10:30.69ID:ZN/5pbPK0
Doug氏がそう言うんならそうなんだろうな
0845名称未設定
垢版 |
2016/11/24(木) 16:39:48.30ID:5Qm7ZEkl0
原因不明で回避方法もないということでしょうか。
残念。
0846名称未設定
垢版 |
2016/11/24(木) 17:14:49.09ID:ZN/5pbPK0
不明というか、iTunes側のバグって話かと
0847名称未設定
垢版 |
2016/11/25(金) 14:24:33.44ID:muoB3U8+0
os 10.11です
デフォルトプリンタとデフォルトの用紙の設定をアップルスクリプトから制御したいのですが、プリンター設定ユーティリティがなくなってしまい、以前使っていたスクリプトが動かなくなりました
System Eventsからorg.cups.PrintingPrefs.plistを直接いじればいけるかなと思ったのですが、エラーになって設定できません
何かいい方法はありませんでしょうか
0848847
垢版 |
2016/11/25(金) 17:43:59.31ID:muoB3U8+0
shell script でデフォルトのプリンターの変更ができるものを検索して見つけました
ですがデフォルト用紙は見つけられませんでした…
0850847
垢版 |
2016/11/28(月) 09:10:20.17ID:WITPAloA0
>>849
大変有益な情報ありがとうございました
シェルスクリプトは不慣れで検索の仕方もわからないレベルだったので助かりました
0851名称未設定
垢版 |
2016/12/02(金) 22:24:00.84ID:iTWJ/avd0
最近気付いたこと。
InDesignの変形でのabsoluteは実態はrelativeだったこと。
真っ青になってこっそり書き換え中。
0855名称未設定
垢版 |
2017/01/22(日) 15:50:43.50ID:0xkJ26tQ0
質問です
コトノコという辞書アプリで「単語」という言葉を調べたいとき、

tell application "kotonoko"
activate
set searchword to "単語"
end tell

ではうまくいかないです
set searchword to ""
じゃなくて、なにか別なのあるのでしょうか?
わかるかたいたら教えてください
0856名称未設定
垢版 |
2017/01/22(日) 16:11:31.04ID:td2KFX3W0
用語説明を開いて調べた方がいいんじゃないの
0857名称未設定
垢版 |
2017/01/23(月) 00:15:44.76ID:WyTEuYSu0
>>855
そもそもどうしてその文でいけると思ったのかわからない
俺の知ってるコトノコ.appはスクリプト対応してない気がするが
きっと俺の知らないバージョンか同名アプリなんだろうな〜
0858名称未設定
垢版 |
2017/01/23(月) 10:23:28.37ID:ujaelEHZ0
頭悪すぎるよなw
俺も知らないバージョンか同名アプリなんだろうw
0859名称未設定
垢版 |
2017/01/24(火) 00:06:20.84ID:vmSJnrn50
GUI scriptingくらいヒントとして教えてやれよ。
0860名称未設定
垢版 |
2017/01/24(火) 10:04:39.57ID:aDsRhBS90
じゃあお前最後まで面倒見てやれよ
0862名称未設定
垢版 |
2017/01/24(火) 10:37:00.51ID:O0Kd4L+D0
PreFab Player使えばいいんじゃね?
0863名称未設定
垢版 |
2017/01/24(火) 12:06:36.92ID:75F0HRla0
ふと思い出したけどQuickeysってどうなってる?
0864sage
垢版 |
2017/01/24(火) 13:15:59.08ID:Dbp78suS0
AppleScriptをJavascriptに変換するソフトはありますか?
100%変換しなくても80%程度変換してもらえれば
後の手作業が楽になるので。
0865名称未設定
垢版 |
2017/01/29(日) 11:29:22.45ID:WKy5QlLf0
助言を下さい。
10.11まで動かせていたgui script applicationを、10.12に対応させられず苦労しています。
developerIDは持ってないので、自分環境専用です。調べた範囲ではこれ以上は見つかりませんでした。

これまで試したこと
1.
xattr -cr guiスクリプト名.app
2.
chmod a-w guiスクリプト名.app/Contents/Resources/Scripts/main.scpt
3.
codesign -s - -i com.apple.ScriptEditor.id.guiスクリプト名 -f guiスクリプト名.app
4.
セキュリティとプライバシー/プライバシー/アクセシビリティにて、guiスクリプト名.appを追加


これで、実行すると
System Eventsでエラーが起きました:guiスクリプト名には補助アクセスは許可されません。(-1719)
となります。
0866名称未設定
垢版 |
2017/01/29(日) 13:31:25.37ID:ivFV2MIT0
1.〜3.って必要なの?

アプリで保存して4.だけでいけるけど
実行専用で保存しても4.だけ
0867名称未設定
垢版 |
2017/01/29(日) 16:38:25.66ID:4Zu53BEN0
>>865
*まず、これまでとは異なるアプリケーションと認識されるように新規書類作成⇒ソースコピペで別名の.appを作成します
*次に1〜4の操作は*せずに*.appを起動します。「許可されません」ダイアログが出るでしょう
*その結果シス環アクセシビリティのリストにチェックが外れた状態で新しい.appが載ったはず
*そのチェックを入れてシス環を閉じ、もう一度.appを起動

これでどうかな?
0868名称未設定
垢版 |
2017/01/29(日) 19:16:38.24ID:WKy5QlLf0
>866-867
動きました。ありがとうございました。
以前のOSXの時にこの手のcodesign関連手順を踏まないと動かないと記憶していたんですが、自分で使う分にはいらなかったんですね。

大体OSアップグレードのたびにこの手の試行錯誤してたのがバカみたい...
0869名称未設定
垢版 |
2017/02/04(土) 11:24:47.26ID:ZlWYx5rz0
どうやってみんなはAppleScript覚えたの?
0870名称未設定
垢版 |
2017/02/04(土) 18:12:07.11ID:8/+Y2Wh60
テキストエディタのマクロを改造することから始めて、
ファイルドロップでファイル名を変える、とかの
Finder操作系に徐々に手を広げていった感じ

もうネットがある時代だったから、
文法とかはググって覚えた

最近は、AppleScriptの処理の遅さや
機能の貧弱さが気になりだして、
ダイアログなんかのインターフェースだけ
AppleScriptで作って、中身はだいたいRubyに投げるように
なってきちゃった
0871名称未設定
垢版 |
2017/02/05(日) 01:01:57.57ID:Tos4a9S+0
ネットのない時代は大変だった。
AppleScript道入門という本にAppleScript日本語版がバンドルされていて、それを自分で組み込んで使って勉強した。
インターネットはまだ日本に上陸していなかった。
ひたすらトライアンドエラーだった。
0872名称未設定
垢版 |
2017/02/05(日) 02:19:53.02ID:ZaqFZUa40
TAO of AppleScript、原書で買ったなあ
ミニミニリファレンスは開きすぎて分解しちゃった
0873名称未設定
垢版 |
2017/02/05(日) 04:14:23.45ID:b5zj9RT50
月刊MAC POWERだったかな。AppleScript講座の連載やってたな。
0874869
垢版 |
2017/02/05(日) 08:14:26.18ID:TRL4BVZg0
すげーーなおっさん達
マジそうゆうとこ見習わないと
楽に取得する方法なんてなかった…1から勉強します
0875名称未設定
垢版 |
2017/02/05(日) 11:03:52.13ID:W7vZBcxp0
俺はまだおっさんじゃないけど
>>1に挙がってる日本語サイトだけでもそこそこ組めるようになるよ
基本がわかったら後はやりたいことをどうやって実現するか
目的ごとに地道に調べるだけでしょ。その過程で英語情報の使い方も自ずとわかってくる
0876名称未設定
垢版 |
2017/02/05(日) 11:28:43.92ID:b6zU4uPZ0
>>874
AppleScriptって、頑張って勉強して覚えるタイプの
言語じゃない気がする

「毎回やってるこの処理、自動化できたら楽なのに!」
って状況があって、その処理がAppleScriptでできないかググる
→それっぽいサンプルが見つかる

大抵、サンプルは自分のやりたいこととちょっと違うので、
いくつかのサンプルの使えそうな部分を組み合わせて動くまで頑張る

「できたっ! なにこれ、超便利! じゃあ、あの処理も自動化できるかも!」
って、なにもわざわざAppleScriptでやらなくても…という細かい処理まで
スクリプトを組んでやるようになる

→気がつくと基本的な文法を覚えてて、簡単な処理なら自分で書けるように

自分はこんな感じだった

うまく動かなくて試行錯誤してる間はそれなりにつらいけれども、
やりたいことができた時の喜びで吹っ飛ぶので、苦労した記憶は残らない
0877名称未設定
垢版 |
2017/02/05(日) 11:34:51.80ID:W7vZBcxp0
そうだよね。有名言語は言語を知ってること自体に価値があるけどASはそうじゃない
もっと身近で、対症療法的に使いながら覚えていくものだよね
0878名称未設定
垢版 |
2017/02/05(日) 22:51:55.72ID:Xb7bVEd50
むかしは、AppleScript対応アプリケーションが多かったからマウス操作の自動記録でスラスラとScriptが自動生成されてたから、それでファインダ操作やアプリケーション内の操作のサンプルが取れて
スクリプトの最適化とか改造で覚えやすかったんだけどね

Excel立ち上げて、セル操作して数式入力
それらをAppleScriptでやれたから楽だった

それが今では自動記録がうまく動いてくれない


Autometerも中身はAppleScriptみたいなものなんでしょ?
0879名称未設定
垢版 |
2017/02/06(月) 07:19:12.26ID:OwbhFoed0
今も自動記録は使える気がするが、具体的に何ができなくなってる?
0880名称未設定
垢版 |
2017/02/07(火) 01:05:15.09ID:5n8Mf6Us0
>>879
むむむ
ファイダー操作がちゃんと記録されてる・・
QuickTimeは未対応なのか
0882名称未設定
垢版 |
2017/02/18(土) 22:48:19.52ID:G4+IScJH0
初めまして。クリップボードを拡張するソフトを作りたいと考えました。
今の所これでキーを打てるのはわかりました。
tell application "System Events"
keystroke down command
keystroke up command
end tell
が、押されている装飾キーを取得するにはどうすればいいのでしょうか?
お助けください。
0883名称未設定
垢版 |
2017/02/18(土) 23:47:12.63ID:qHdDG3B70
>押されている修飾キーを取得
https://discussionsjapan.apple.com/thread/10151030


修飾キーを押した状態で何か入力したいのなら
keystroke “c” using command down
でコピーとか
keystroke “ac” using command down
で全てを選択してコピーとか

keystroke じゃなくて key codeってのも使える。
key code(8) using command down
key codeは文字以外のキーも使える。
コード番号はmac key codeとかでググれば出てくるよ。

修飾キーが複数組み合わさる場合は
using {command down, shift down}
のようにすればOK
(keystrokeは大文字で書いてshiftキー押した状態の入力にすることも可能)
0884名称未設定
垢版 |
2017/02/19(日) 02:35:48.35ID:aQXqCxKb0?2BP(1000)

詳しくありがとうございます!
ですが教えてもらったurlのrubyが動かずで・・
具体的にはcapsロックがオンのとき、
数字キーでペースト、command+数字キーでコピーするソフトを考えていたのですがAppleScriptで作るのは難しいでしょうか・・?
親切に漬け込んでいてすみません
0885名称未設定
垢版 |
2017/02/19(日) 09:09:13.32ID:JTN2GxVk0
サンプルのコードとかでhogeってのを見るけど何故にhoge使うの?⚪︎とか△ではあかんの?
アホな質問でごめん
0886名称未設定
垢版 |
2017/02/19(日) 10:59:15.00ID:AMvGzm3X0
色々初めてっぽそうなのにそんなあっさり出来たら苦労しないよ
じっくり漬け込まないと、時間かけて
0887名称未設定
垢版 |
2017/02/19(日) 19:05:55.34ID:h2sgOzYO0
>>885
ものごとをホゲホゲと表現するのがカッコいいと思ったダセークソオタクが始めやがって
無反省にそれを受け入れ、さらに広めたバカなクソオタクどもがうじゃうじゃ居たからなんだぜ

初めて見るやつにとっては、ホゲとかフーバーとか意味不明だしバカジャネーノ?の一言だよな
ひねりもなにもないけど、変数123とか定数ABCとか名付ければ、第三者にも分かりやすいのにな

あんさんの言うとおり、マルでもサンカクでも良いんだぜ!
今もそうなのかはわからんけど、昔のアンク氏のHTML辞典などではそういう表現をしていて、私としては好感が持てたな
0888名称未設定
垢版 |
2017/02/19(日) 20:56:09.70ID:JTN2GxVk0
へぇーそういう歴史があったのか
hogeってなにかの頭文字かと思ってたけど
1人が言い始めたのが流行っただけだったんやww
0889名称未設定
垢版 |
2017/02/19(日) 22:45:45.76ID:PMUXWJPh0
>>884
待機していて任意のキーで発動するのはApplescriptでは難しいな。
0890名称未設定
垢版 |
2017/02/20(月) 00:13:42.81ID:47moyOp40
>>888
まさかとは思うけど
本気にすんなよ
0891名称未設定
垢版 |
2017/02/21(火) 00:32:39.46ID:gphoZadF0
appkitで装飾キーは取れたけど数字キーが取れない・・
>>888
こうゆうのは何で書かれているんですか?
0892名称未設定
垢版 |
2017/02/21(火) 09:22:11.98ID:MlMOQbWh0
>>887 そんなのが前提なく出てくる本とかあるもんな。
0893名称未設定
垢版 |
2017/02/21(火) 16:15:18.04ID:/M36k0iH0
俺もhogeやfoobar嫌い
無駄に業界用語とかビジネス用語多用する人と同じ方向性を感じる
0894名称未設定
垢版 |
2017/02/21(火) 17:08:28.68ID:JRq74LQc0
業界用語なんて大げさな
それ使っておけばいいというのが楽だから皆使ってるんじゃないの
0896名称未設定
垢版 |
2017/02/21(火) 17:13:47.34ID:jfmoKTXy0
ほにゃららを多用するよりまし
0897名称未設定
垢版 |
2017/02/21(火) 18:16:05.67ID:hlKC2Ktr0
>>896
あー、私もホニャララ大嫌い
世界一受けたい授業というテレビ番組を観ていると、ホニャララが多すぎてげんなりする

不明確、不特定なものごとをどのように表現すべきかは悩ましいところだよな
「なにがし」以外にも分かりやすい言葉があれば良いな
0898名称未設定
垢版 |
2017/02/21(火) 19:27:32.79ID:Rvqi1a1W0
ほにゃららって、〜を読んでいるだけだよね。
目くじら立てるほどのことかなあ?
AppleScriptでは使わないけどね。
hogeとかは予約語とかぶる心配がないから都合が良いんだろう。
文字数が多いので多用すると面倒そう。
0899名称未設定
垢版 |
2017/02/21(火) 19:58:02.09ID:qf3U6U1S0
>>898
まぁ言われてみれば、そこまで嫌うほどのものでなもなかったね
ごめんね(*´・ω・)(・ω・`*)

私としてはhogeよりもpiyoのほうが可愛くて好きだけど、右手の小指と中指を伸ばして入力するのがめんどくさいのが難点かな
0902名称未設定
垢版 |
2017/02/23(木) 07:27:01.55ID:f78VjTtz0
打ちやすそうでいいね。
でも、エラーが出た時に、ハゲが定義されていませんとか表示されると想像すると、ちょつと躊躇する。
0903名称未設定
垢版 |
2017/02/23(木) 19:27:23.17ID:+sWj+QGX0
髪の毛がありません(エラー4949)
0905名称未設定
垢版 |
2017/02/23(木) 20:38:52.44ID:JV8Ry8/Y0
残ってる髪の毛全部抜いてあげてー
0907名称未設定
垢版 |
2017/02/25(土) 22:49:52.87ID:1G+hzadu0
           |
            |  彡⌒ミ
           \ (´・ω・`)また髪の話してる
             (|   |)::::
              (γ /:::::::
               し \:::
                  \
0908名称未設定
垢版 |
2017/02/27(月) 21:29:30.69ID:jEA9HVwo0
作ったスクリプトを直接、Automator、
Alfred、Keyboard Maestroから動かすと
動かない、動きが変わる、動きが遅いなど
それぞれに違いが出ますね。難しい。
今日はAlfredがハンドラのところで
止まってしまいました。
あとAutomatorだと起動に時間がかかるのは
そんなものですか?
0909名称未設定
垢版 |
2017/03/01(水) 02:07:15.84ID:9hpvaXhO0
質問です。
do shell script からPythonを動かす時につける「-c」って
どういう意味があるのですか?
-c以外もあるんですか?
pythonを使っている方がいたらよろしくお願いします。
0910名称未設定
垢版 |
2017/03/01(水) 02:27:25.97ID:sHurp95n0
ターミナルでman python2.7くらいしろよ
COMMAND LINE OPTIONS
-c command
Specify the command to execute (see next section). This termi-
nates the option list (following options are passed as arguments
to the command).
0911名称未設定
垢版 |
2017/03/01(水) 21:58:22.85ID:9hpvaXhO0
>>910
ありがとうございました。
コマンドだからmanみればよかったのか
思いつかなかった、ごめんなさい。
0912名称未設定
垢版 |
2017/03/02(木) 00:20:38.96ID:C1xnLsj40
910はぶっきらぼうだけど優しい奴だな
0913名称未設定
垢版 |
2017/03/08(水) 22:22:26.01ID:59BN6uhm0
久しぶりにドロップレットち作ろうかと思ったら書き方忘れてたw
1時間もかかったよ、非効率化だー
0914名称未設定
垢版 |
2017/03/08(水) 22:29:50.60ID:nROONUNy0
あるあるw
自動化せずに手動のほうが早かったんじゃねってことけっこうあるけど
楽しかったし勉強になったから……と納得することにしてる
0915名称未設定
垢版 |
2017/03/09(木) 01:19:44.16ID:8eGoFs150
on drop droppedItems
end
とか書いてコンパイル通らず、ググったことあったわw
0916名称未設定
垢版 |
2017/03/09(木) 07:44:54.20ID:ZDRZpiq50
>>915
何が間違いなのか気がつくまで5秒だった。
0917名称未設定
垢版 |
2017/03/09(木) 11:55:01.56ID:r10Q2kpv0
表示しているウィンドウを画面の中央に移動するAppleScript教えてください

検索して以下を試してみたけどSierraでは動かなかったです・・・

tell application "Finder" to set ScreenSz to bounds of window of desktop --- ディスプレイの解像度を取得する。
tell ScreenSz to set {ScreenSz3, ScreenSz4} to {item 3, item 4}

tell application "System Events"
set ActApp to name of every process whose frontmost is true --- アクティブなアプリを取得する。
set ActApp to item 1 of ActApp
tell process ActApp
tell window 1
set CurentSz to size --- アクティブなウインドウの縦横のサイズを取得する。
set x to (ScreenSz3 - (item 1 of CurentSz)) / 2
set y to (ScreenSz4 - (item 2 of CurentSz)) / 2
set position to {x, y} --- ウインドウの位置を移動する。
end tell
end tell
end tell
0918名称未設定
垢版 |
2017/03/09(木) 12:37:59.16ID:299t67qt0
スクリプトメニューからやってみたら動くようだけどSierraで
Safari、TextEdit、Preview、Firefox等々

やってないけどAlfredとかからでも動くんじゃなあい?
0920名称未設定
垢版 |
2017/03/09(木) 14:12:02.84ID:ddnQYnkB0
>>917
どうやって実行してんの?
エラー出てないなら、対象にしたいアプリが最前面になってないだけなんじゃないの
0921名称未設定
垢版 |
2017/03/09(木) 17:01:48.60ID:r10Q2kpv0
>>919
それオフになっていました
すみません、みなさん失礼しました・・・
0923名称未設定
垢版 |
2017/03/10(金) 02:48:26.40ID:QySajRz30
ファインダーで選択したものを処理する時に
フォルダでもファイルでも両方扱いたいとして
途中でexist of file とか exist of folder とか
扱いを少しづつ変えないといけない場合
if で条件分けして
2重にスクリプトを書けば出来るんだけど
何か上手いやり方とかコツってあるものですか?

よろしくお願いします。
0924名称未設定
垢版 |
2017/03/10(金) 02:53:44.79ID:QySajRz30
exist じゃなくてexists でした。すいません。
0925名称未設定
垢版 |
2017/03/10(金) 05:26:38.84ID:LHdLuZKq0
扱いを変える部分がどうなってるのか分からないとなんとも言えないけど。
共通する部分をハンドラ(関数)にする。
例)
tell application "Finder"
set selected_items to selection
repeat with current_item in selected_items
set message to ""
set item_name to my getname(current_item)
if class of current_item is folder then
set message to "フォルダ" & item_name & "には" & (count of files of current_item) & "個のファイルがあります"
else
set message to item_name
end if
display dialog message
end repeat
end tell

on getname(target_item)
return name of target_item
end getname
0926名称未設定
垢版 |
2017/03/10(金) 05:49:44.14ID:LHdLuZKq0
久々にApplescriptいじって結構忘れちゃってるんだけど
Finderのselectionてフィルタ参照できないんだっけ?

あとこういうのもダメだったっけ?
set aaa to {{name:"aaa1"}, {name:"bbb1"}, {name:"aaa2"}, {name:"bbb1"}} whose name starts with "aaa"
0927名称未設定
垢版 |
2017/03/10(金) 20:04:07.93ID:QySajRz30
>>925
ありがとうございます!
ハンドラ色々試して見ます。

repeatを使えば簡単に名前を取得出来るんですね。
知りませんでした。
これだけでも凄くスクリプトを短くする事が出来ました。
まだまだハンドラの前に勉強する事が色々がありそうです。
勉強になるサンプルありがとうございます。
0928名称未設定
垢版 |
2017/03/12(日) 12:29:51.83ID:gNaWOdyE0
set theFolder to choose folder
のようにフォルダを選択するときに、フォルダ検索をかける方法はないでしょうか?
右上の検索ボックスらしきものは表示されてますが、なにも入力できないし、
choose folderにも検索を有効にするオプションが見当たらないのですが……
(画像を大量のフォルダのいずれかに仕分けするような用途を想定しています)
0930928
垢版 |
2017/03/12(日) 12:53:49.02ID:gNaWOdyE0
>>929
すみません。
tell application "Finder"
end tell
で囲まず処理してました。解決しました。ありがとうございます。
0931名称未設定
垢版 |
2017/03/13(月) 11:25:20.43ID:ke+gv2mg0
>>928
最初はとっつきにくいかもしれんけど、
rubyあたりでやった方が処理も速いし書くのもラクだよ。
0932名称未設定
垢版 |
2017/03/13(月) 12:11:46.66ID:gmYvW2HT0
>>931
ruby はchoose folder みたいな事が出来ちゃうのですか?
0933名称未設定
垢版 |
2017/03/13(月) 13:56:12.84ID:ke+gv2mg0
>>932
そこはASに任せればいい。逆に言えばそこだけAS使って後はrubyで書けばいい。
0934名称未設定
垢版 |
2017/03/13(月) 14:15:03.70ID:qRuWGLnq0
なんでそんな面倒なことしなくちゃならんの
0935名称未設定
垢版 |
2017/03/13(月) 14:51:56.63ID:FjeaRWoU0
まだ初心者さんみたいだから、
rubyとかの外部スクリプトをまぜるのは
少々難易度が高いかも…

do shell script "ruby -Ku -e 〜"
って直接AppleScript内に書く場合は、
ダブルクォートなんかのエスケープが面倒くさいし、
.rbファイルを実行するにしても、.app内にファイルを置くかどうかで
パスの書き方が変わってきたりして…

>>934
横レスだけど、AppleScriptでやるより処理が速いし、
正規表現でファイル名置換したりできるのは便利ですよ
0936名称未設定
垢版 |
2017/03/13(月) 15:38:50.36ID:ke+gv2mg0
>>934
慣れないうちはそう思うけど、慣れると逆にASで書く方がなにかと面倒くさい。
0937名称未設定
垢版 |
2017/03/13(月) 15:44:33.66ID:cpb4aFeg0
guiめも

CocoaDialog
Platypus
inquirer.rb
terminal-notifier
0938名称未設定
垢版 |
2017/03/13(月) 16:21:42.20ID:qRuWGLnq0
そんな速度求めてないんじゃないの
デバッグするにしてもどっちかで完結した方がいいっしょ
0939名称未設定
垢版 |
2017/03/13(月) 20:41:59.39ID:3TX8S6Vu0
ASの基本もおぼつかない人を捕まえてRubyを薦めるなんて、非効率化道へ誘導しようとしているとしか思えない
0940名称未設定
垢版 |
2017/03/13(月) 21:41:50.59ID:1rIqXrQG0
ruby使えるだけで威張れるからこのスレ好きです
これからもrubyを薦めます
0941名称未設定
垢版 |
2017/03/14(火) 06:16:41.81ID:SBhQzKOi0
時代はpython
>>939
ほんそれ。使う人によって効率は変わってくるっていう基本がわかってない
0942名称未設定
垢版 |
2017/03/14(火) 09:00:44.40ID:b/L7QY/Q0
いや、どうせどっちもわかってないんだから
rubyなりpythonあたりから覚えても一緒じゃん。
0943名称未設定
垢版 |
2017/03/14(火) 09:50:59.34ID:zmKBWmXS0
でもこのスレで話すのはノーサンキュー
語りたい奴は既存のスレ移動するか、自分でスレ立てろよ
0945名称未設定
垢版 |
2017/03/14(火) 19:35:52.25ID:2q4HZx6M0
仲良くすれば良いのに
0946名称未設定
垢版 |
2017/03/14(火) 19:38:31.45ID:bKIqYbDL0
見つめ合うと素直におしゃべり出来ないし
0947名称未設定
垢版 |
2017/03/15(水) 11:30:38.37ID:BUZg/Ykg0
言いたいことも言えないこんな世の中じゃ
0949名称未設定
垢版 |
2017/03/19(日) 22:48:52.31ID:jSXW0ufR0
asが便利なのってマックリソース込みのファイル移動とかコピーだよな
0950名称未設定
垢版 |
2017/03/20(月) 10:59:37.70ID:K0kH9iJa0
そんなことにASなんか使う必要ないでしょ
10.4までなら MvMac/CpMac コマンドとか使えばいいし
10.4以降は mv/cp でよい
ASの特色はそういうレベルじゃない
0951名称未設定
垢版 |
2017/03/20(月) 13:21:14.05ID:E5J2xdb70
対象のファイルが複数のフォルダーに散在している場合や、
同一フォルダー内でも縦横無尽に散らばっている場合で、
それらをまとめて処理するようなときには、

コマンドファイルでも、
アップルスクリプトでも、
オートメーターでも、
自分の好みにあわせてどれでも利用すれば良いじゃない
もちろんコマンドファイルが処理速度などの点でいちばん有利なんだろうと思うけど、操作結果のフィードバックが目立たなさすぎるので不安な人もいるだろうし

確かにアップルスクリプトの特色はファイル操作だけじゃないけど、
だからといってファイル操作ごときにアップルスクリプトを使うな、コマンドを使え、というのはおかしくないかね?
0952名称未設定
垢版 |
2017/03/20(月) 13:28:37.64ID:tNIG8sod0
リソース込みの移動やコピーなんて
今はOS添付のコマンドラインなら普通に出来るから
リソースがどうのというのは前提条件が間違ってますよ
という指摘でしょう
0953名称未設定
垢版 |
2017/03/20(月) 15:16:23.72ID:K0kH9iJa0
>>931みたいにAS以外を押しつけてくる輩もいるから敏感になってるのかな
別にASを否定したつもりはないよ

>>952の補足してくれた(ありがとう)とおりで、使うな、ではなく
その条件では別に必要ない(使ってもよい)ということ
ASを推す気持ちはわかるけど理由が理由になってないから……
0954名称未設定
垢版 |
2017/03/20(月) 17:56:11.71ID:aJV3VVNJ0
他人がどんな言語選択するかなんて好き勝手すればいいじゃないか
そういうのは他所で議論してください
0955名称未設定
垢版 |
2017/03/20(月) 21:50:12.65ID:aRKmkiIl0
シェル使っていいならjava でもなんでもいいけど
0956名称未設定
垢版 |
2017/03/20(月) 22:27:46.15ID:JAHXB/GD0
こういうのが続くと
do shell scriptが絡んだ質問がしにくくなるなあ

必要に迫られてjava使ってみたけど
普段スクリプト言語ばかりだから
爆速に驚いたよ
スレチすいません
0957名称未設定
垢版 |
2017/03/21(火) 05:24:56.46ID:YDLfwtgb0
個人的にASの有難みを痛感したのは、WindowsでiTunesをスクリプト処理しようとした時だったな
0958名称未設定
垢版 |
2017/03/21(火) 09:22:39.42ID:y5Ac/8600
ファイルコピーやら移動やらするにも、ASだと色々と自分で処理を考えてやらなきゃいけないけど、
shell系なら色々と処理が用意されてるから圧倒的に楽に書けると思うが。
0960名称未設定
垢版 |
2017/03/21(火) 20:14:46.17ID:qE2C4R2r0
なんかようわからん流れ
0961名称未設定
垢版 |
2017/03/22(水) 06:00:01.60ID:lgNGAT+b0
68KやPowerPC時代はApple Script一択だったけど
今は選択肢増えたんだし
慣れたのでいいと思う
0962名称未設定
垢版 |
2017/03/23(木) 20:37:28.14ID:7HvdunIZ0
ただの慣れの問題だろ
ASだから考える時間が増えるとは一概に言えない
0963名称未設定
垢版 |
2017/03/23(木) 20:48:16.61ID:x+CSrVz+0
AppleScriptのファイルコピーって挙動があやしくない?
バッティングしたのかしらんがスルーされるときがある
0964名称未設定
垢版 |
2017/03/23(木) 21:17:39.69ID:7HvdunIZ0
そもそも、ここはapplescriptのスレなんだから
どの言語が使い易いとか便利とかは関係ないだろう
そういう話になるならobjcの方が楽に書けるし自由度もある訳だから比較にならない
しかしapplescriptの便利さをただのファイル移動としてしか理解されてない人間に
だよな、とか自信満々に書かれても「違うわ」と言いたくなる気持ちも分かる
0965名称未設定
垢版 |
2017/03/23(木) 23:23:39.87ID:Hx/4F5AA0
俺はファイル移動よりもpythonとか言ってるやつのほうがわかってない気がする。
とケチをつけるくせに更に勿体つけてみる。
0966名称未設定
垢版 |
2017/03/24(金) 00:43:30.67ID:753en8Rq0
>>963
AppleScriptというよりfinderが、じゃないの?
0967名称未設定
垢版 |
2017/03/24(金) 00:45:59.63ID:+ajPYzNh0
pythonとか言ってるやつってどれだよ
0968名称未設定
垢版 |
2017/03/24(金) 11:25:36.85ID:kAphza5X0
>>966
ファインダーなのかなぁ
普通同じフォルダに複数同時コピーしても処理するよね?もち別名ファイル
0969名称未設定
垢版 |
2017/03/24(金) 16:57:44.81ID:+ajPYzNh0
>>968
エラーは出ないの?
挙動怪しいは俺もそう思うけど、そういう場合たいていはエラー吐いてるけどなあ
まあエラーで原因がちゃんとわかるかっていうとそれは別の問題だけどw
0970名称未設定
垢版 |
2017/03/24(金) 21:58:16.85ID:7fFI+lWa0
もしファイルが既にあった場合の対処はしていないのかな?

ベースの部分が出来たーと思ってから
もしもの場合に備えていくと
スクリプトがどんどん膨らんでいくよね
0971名称未設定
垢版 |
2017/03/29(水) 10:17:01.61ID:iAZHQzNY0
初歩的で申し訳ないんですが
エラーログどこでみれますか?
0972名称未設定
垢版 |
2017/03/29(水) 10:53:58.42ID:Z1/VUf2c0
>>971
スクリプトエディタの下のほうに
「返された値」ってタブみたいのがあって、
実行したあとそこをクリックすると処理の流れは追えるけど、
それではダメ?

あとは、

log 変数
log "ここまではちゃんと動いてる"

みたいに、log文を自分で仕込んでチェック
(返された値のところに表示される)
0973名称未設定
垢版 |
2017/03/29(水) 20:04:44.19ID:l0pCiKKj0
>>971
メニューバー>ウインドウ>ログの履歴 というのもある
0974名称未設定
垢版 |
2017/03/29(水) 21:34:41.79ID:cKhIeBfJ0
最近気が付いたけど
tell application の中でdo shell scriptを実行すると
ログ見るとエラーメッセージが出てるのね
問題ないらしいけど
0975名称未設定
垢版 |
2017/03/30(木) 00:38:44.03ID:TSN5GLbj0
>>974
applicationに対してdo shell scriptの命令を送って、
それに答えられないからtellブロックの外で命令を実行、
みたいな動作だよね

だったら、do shell script命令に応えられるアプリが
あるってことなのだろうか…
0976名称未設定
垢版 |
2017/03/30(木) 16:59:47.19ID:7Vur2NxS0
>>974-975
そういう仕様だから仕方ないとはいえちょっと気持ち悪いよね
0977名無し募集中。。。
垢版 |
2017/03/31(金) 01:14:47.24ID:Z+59Vv5J0
tell me to do shell script "..."
ってやるとエラー出ない
0978名称未設定
垢版 |
2017/03/31(金) 01:29:26.65ID:fsk4tUbD0
TN2065
Does it make a difference which application I tell to do shell script?
For the most predictable results, always put do shell script calls outside of any tell block, or use tell me. In
practice, it usually doesn’t matter unless 以下省略
0979名称未設定
垢版 |
2017/03/31(金) 01:57:25.58ID:67Umxyuk0
あー、にゃるほど。
最初からtellブロックの外(スクリプトオブジェクト)に向かって
do shell scriptメッセージ送っちゃえばいいわけか。

thx
勉強になった。
0980名称未設定
垢版 |
2017/04/01(土) 08:11:10.41ID:Pa22lWRm0
最初から do shell script の解釈が tell me で固定されてればいいだけの話なんだけどね
こんなんよそに tell できたとしてもトラブルの種にしかならないし
0983名称未設定
垢版 |
2017/04/01(土) 13:12:52.80ID:Th6oGGes0
乙です
たまには新機能付けてくれれば盛り上がるのに

Automator にある選択テキストの取得
みたいなの付けてくれるとか
まあキーストロークで行けるんだけど
0984名称未設定
垢版 |
2017/04/02(日) 00:52:36.56ID:jddYfO370
一応OSメジャーアップデートのたびに地味に新機能ついてるけど、知ってた?
ぶっちゃけもうASはほとんど完成されてるし、それ自体の機能より
AS未対応のアプリが対応するとかの方がインパクトある気がする
0985名称未設定
垢版 |
2017/04/02(日) 00:56:32.73ID:K0logwwW0
知りませんでした。ゴメンなさい。
0986名称未設定
垢版 |
2017/04/02(日) 01:50:24.64ID:LTdBmP/H0
OSXになってゴッソリ機能が減った印象だったんだけどどうなんだ
record機能が秀逸だった記憶しかないけど
0990名称未設定
垢版 |
2017/04/13(木) 20:57:48.12ID:+p8dZwLu0
次立ってるしうめまっしょい
0991名称未設定
垢版 |
2017/04/14(金) 00:58:59.92ID:ueTGfWAJ0
applescript://com.apple.scripteditor?script=say%20%22%E5%9F%8B%E3%82%81%22
0992名称未設定
垢版 |
2017/04/14(金) 01:05:26.83ID:e/21lBVI0
repeat 9 times
display dialog "うめ" buttons {"おk"}
end repeat
0993名称未設定
垢版 |
2017/04/14(金) 01:15:35.68ID:MoWkfgnX0
repeat 8 times
display dialog "うめ" buttons {"おk"}
end repeat
0994名称未設定
垢版 |
2017/04/14(金) 01:29:10.19ID:ZmBUMfxw0
repeat while resNum < 1000
display dialog "Ume" buttons {"OK"} default button 1
end repeat
0995名称未設定
垢版 |
2017/04/14(金) 02:04:44.78ID:eaWvlN6o0
>>991は英語ボイスにしとると鳴らんからこれで

say "Woo-meh"
0996名称未設定
垢版 |
2017/04/15(土) 18:50:20.05ID:vi5T35Fd0
try
say "うめ"
on error
say "Go to next"
end try
0997名称未設定
垢版 |
2017/04/15(土) 20:14:30.40ID:xurLJNJL0
applescript://com.apple.scripteditor?script=open%20location%20%22https%3A%2F%2Fegg.2ch.net%2Ftest%2Fread.cgi%2Fmac%2F1491018171%2F%22
1000名称未設定
垢版 |
2017/04/15(土) 22:32:19.49ID:PpLFiK4M0
on quit
display dialog "次スレは>>981です。" buttons {"OK"} default button 1
continue quit
end quit
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 1211日 0時間 41分 34秒
10021002
垢版 |
Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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