X



AppleScript アップルスクリプト 質問、発表 6
■ このスレッドは過去ログ倉庫に格納されています
0001名称未設定
垢版 |
2013/12/21(土) 21:50:45.07ID:1PJJFexL0
質問、発表どっちでもスレ。

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

■参考
AppleScript Language Guide
https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
TN2065: do shell script
https://developer.apple.com/library/mac/technotes/tn2065/
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
MacWiki - AppleScript
http://macwiki.sourceforge.jp/wiki/index.php/AppleScript
鳶嶋工房 / AppleScript
http://tonbi.jp/AppleScript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ
1 http://pc11.2ch.net/test/read.cgi/mac/1174045850/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
5 http://anago.2ch.net/test/read.cgi/mac/1330350325/
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 " & quoted form of myScript & " " & 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に対応しているブラウザのバージョンが限られているので、学校とかで使うんならそこは要確認かも。
■ このスレッドは過去ログ倉庫に格納されています

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