AppleScript アップルスクリプト 質問、発表 7 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
今日SierraからHigh Sierraにしんだけど、スクリプトメニューから実行した時、
アプリケーション形式じゃないとdisplay notification動作しなくなってる んー、2台あるうちの1台ではscptでも動作してる
ただどっちもsound nameは効いてない 10.13.4 Combo Update入れて再起動したらscptでも通知自体は出るようになった applescript 初心者です
safari > 環境設定 > 一般 > ホームページ
のURLを設定したいのですがどうすればよいのかわかりません
every UI Elements で調べても環境設定...までしか見れなくて困ってます 一般を開いた状態での構造はこういう感じのようだけどSafari 11.1
tell application "System Events"
tell application process "Safari"
tell window "一般"
tell group 1
tell group 1
tell text field "ホームページ:"
value
end tell
end tell
end tell
end tell
end tell
end tell Xcode入れてそこからAccessibility Inspector使った方が楽かもよ
そのためだけに5GBとかダウンロードするのもアレだけど 皆さんありがとうございます
色々試して調べてみます HighSierra+Xcode9.3にしたところ、昔作った自作のAppleScriptObjcアプリがエラーするようになりデバッグしようとしています。
NSDictionaryの引数がどうのというエラーです。HighSierraでのバグらしく、スクリプト側の書き換えが必要だとか。
これのxcode プロジェクトを開いてAppleScriptのファイルを編集したのですが、
CleanしてBuild+runしても、症状が変わらずソースの編集が反映されない様に見えます。
久々でASOCの編集で諸々忘れているので、
どこをチェックすべきかコメント頂けますでしょうか。 145です。直りました。
AppleScriptのコメント化の文法勘違いでした
単にコンパイル通ってなかっただけの様です( ´△`)
ブランクがあると厳しいな。 Project Builder&Interface Builder AppleScript―Mac OS Xアプリケーション開発技法 Mac OS Xアプリケーション開発技法
そういやこの間古本屋じゃない書店で売ってて笑った
何年前のだよ 最近用語説明見てなかったけどいつの間にかASCII characterとASCII numberがcharacter idとidに置き換わってる >>148
Amazonからコピペ?後ろの重複具合から
2002かなんかすごい昔 アプリで保存したスクリプトを
スクリプトエディタの開くダイアログで開いて修正しても
動作が修正されていないので
パッケージを開くから中のスクリプトを開くと
修正前のスクリプトのままでした
開くダイアログやドラッグドロップした時に
エディタは何を修正しているんですか? ありがとうございます
自分のmacが不調なんですね
よく見たらmain.scptの他にmain.rtfという
ファイルが出来てました 試すのめんどいんで applescript main.scpt main.rtf でググったw
ちょっと古いけど https://jp.tidbits.com/TidBITS-jp-1137.html#lnk4 >>155
ありがとうございます
main.rtfは削除しておきました
参考になりました
何処かの段階でシンタックスエラーとか
何かやってしまったんですね 実行後に終了しない.appだと、
アプリ動作中にmain.scptを修正しても、
アプリ終了→アプリ再起動、ってやると
修正前のスクリプトに戻っちゃったような… すいません。昔、AppleScriptのソースの中身をSpotlightで検索するためのプラグインがあったように思うのですが、まだどこかに落ちていないでしょうか? ググったら 「ちまちまとMacをいじるブログ | SpotlightでAppleScriptファイルの内容を ...」 があって、そこの google-toolbox-for-mac のリンク先 https://github.com/google/google-toolbox-for-mac
バージョン 1.6.0 に含まれてるようだった
バージョン 2.0.0 で構成変わったようでぱっと見にないんでわからない
最初の「ちまちまと〜」のページはググってくれ
fc2のblogだからか、リンク貼ったらNGワードで書けない Wed Sep 09 2015 00:53:47 GMT+0900
に、
Kill off the Spotlight and Xcode plugins as they haven't been maintained.
で、消されたよう。そこの一つ前まで遡ればか、現在はビルドは提供されていないので、1.6の入っているのを使うだね 2008/08/21 に追加されてそれから何も変更されずっていう、マジほっぽらかし(まあ、変える必要がない完成度/機能性の少なさなんだろけど)なので、
1.6のでも全く同じではあるな(ビルドしたXcodeが古いってだけで。それもあんま関係ないだろう) Finderでフォルダの表示を切り替える行為を記録したのですが実行するとエラーが出てしまいます。
記録で書かれた内容なので違うとも思えないのですが、どのように書き直せば狙い通りに動くでしょうか?
MacOSX 10.8.5
やりたいこと:Finderでリスト表示フォルダのソート順を違う物から作成日の新しい順に切り替える
(多数のフォルダを一括でリネームしたらソート順がデフォになってしまったのをrepeatで一気に直すつもりです)
記録された内容:
tell application "Finder"
activate
set sort column of list view options of Finder window 1 to creation date column
set sort direction of column id creation date column of list view options of Finder window 1 to normal
end tell
set sort column of list viewの行で
error "Finder でエラーが起きました:ソート列にするには、その列が可視状態である必要があります。" number -10000
と言われてしまいます。
作成日は可視状態です。
よろしくお願いします。 記述が足りない。10.8はさすがにだが同じだろう
set sort column of list view options of Finder window 1 to column creation date column of list view options of Finder window 1
(sort column に設定してもダイレクトには変わらないので、一度ウィンドウを閉じて開いてが常套手段なのかな) >>165
回答ありがとうございます。
試したところ、同じエラーが出て上手く行きませんでした・・・。
ちょっと感情的になり、そんなに言うなら(意味がないけど)入れてやるわ!って以下を先に入れたら上手く動きました。
set visible of column id creation date column of list view options of Finder window 1 to true
ASは現状をチェックしない、という事ならソレはソレで何で最初ので動かないのか腑に落ちませんが
何とか動いたので良かったです。
お手を煩わせてすみませんでした。 set the clipboard to "A" & return & "B"
returnは未だにCRなのか まあ、今時改行がCRでないと困るというのは皆無だからLFにしちゃっていいとは思うけど
もよほど特殊(?)でもないとCRでもLFでもどっちでもいいようにして(必要なら適時変換して)成り立ってしまってるので変える必要もないってとこか 最近MavericksからSierraにアップデートしたのですが、loadしたスクリプトへのtellがうまく動かないことがあります。
何か仕様が変わっていますか? JXAからアドビのjs呼び出す事ってできないんでしょうか?
色々試したけどわかりませんでした。もしできるなら引数の渡し方も併せて教えてください。 POSIX file aPath と aPath as POSIX fileで挙動が違うのですが、こういうものですか? >>173
どのアドビのjsのことを言っているのか。とりあえずPhotoshop CS6なんぞだとして
Javascriptを動かしているエンジン(及びその環境/仕組み)が違うから直接は無理だろう。Photoshop CS6はAppleScriptに対応していて当然のようにJXAでソレを使え、その中にdo javascriptなんぞがあるようなのでそれでだろう
具体的に動く方法とかは、
http://blog.kanemu.net/2008/02/applescriptadobejavascript.html
なんぞとか、PhotoshopのAppleScriptでdo javascriptをググってJXAに書き換えればわかるだろう
>>174
違ったような気もする、違ったことがあるような気もする。が、なんだったかなあ。
POSIX file "/Users/hoge/Desktop/hoge.jsx"
/Users/hoge/Desktop/hoge.jsx" as POSIX file
いちおう、得られる結果は同じだな。
class of POSIX file "/Users/hoge/Desktop/hoge.jsx"
class of (/Users/hoge/Desktop/hoge.jsx" as POSIX file)
としても得られる結果は同じようだが、POSIX file ~ の方はMacintoshパスに書き換えられるから挙動は違うな。まあ、そんなもんということで >>175
基本イラレ、インデザインですが、今まで作成したjsxファイルを使ってshellやアプリ間の連携をさせたいので。
今まではASでやっていたのですが、JXAで書けるなら色々とラクなので。
以下のスクリプトを試しましたが、下2つは動作しません。
INDD = Application("Adobe InDesign CC 2018");
INDD.includeStandardAdditions = true;
INDD.displayAlert('alert("Hello from the other side")');
INDD.doJavaScript('alert("Hello from the other side")');
INDD.doScript('/Users/hoge/Desktop/hello.jsx'); >>176
なんだ、AppleScriptをJXAに書き換えられないってだけか
Adobeの公開しているAppleScriptドキュメントではInDesignはdo scriptのようだけど、公開しているドキュメントが古くて新しいのはdo javascriptもサポートしてんのか??
と、しょーーーーがないから試用版入れてみたら... InDesignにdo javascriptなんてないやんっ!
そもそもAppleScriptでできてたやっていたのかとすら疑わしいとすら思うぞ、>>177の言うとおり用語説明にちゃんと書いてあるやんだし
用語説明がわからない(わからいづらいのはわかる)、AppleScriptをJXAに書き換えるのがわからない(わかりづらいのはわかる)けどな 最後力尽きてた。ってのならわかるけどな
>>176
ググっての do script には、後ろに language javascript ってあって値がないオプション?かと思ったら、javascript が/の部分が値やん
INDD.doScript( theScript, { language: "javascript" } );
で、動くだろう、動いた。theScript は javascript文字列でもファイルパス文字列でも
とりあえず language javascript ということにしとけw ということ=必須ということ
>>179
しょうがない?? 小説ぐらい読もうな。そしたら読めるようになると思うぞwたぶん
ラノベじゃなくてな スレ内容に関係ないことだけに沸くねえ。関係ないというか無内容のレスをって、いろいろ可哀想な人ってのだけはわかるけどさ >>178
わざわざ試用版まで入れてありがとうございます。
用語説明の見方(使い方)は全然わかっていません。ネットでサンプルを探して目的にあった書き方を探してる感じです。
INDD.doScript( theScript, { language: "javascript" } );で動きました。
しかし、今度は引数の渡し方がわかりません。
下の様な書き方では駄目でした。parametersをargumentsにしても同じでした。
INDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), { language: "javascript",parameters:[1,2]}); なんかさあ、当てずっぽうに書いて動かないだ駄目だ繰り返してるだけじゃん
もっと事実を調べなさいよ >>186
>用語説明の見方(使い方)は全然わかっていません
まあ、わからないでもない
>ネットでサンプルを探して目的にあった書き方を探してる
まあ、間違ってはいない。
が、
>今度は引数の渡し方がわかりません...parameters:
なんでそうなる。どうして、用語説明の見方(使い方)は全然わかってないからネットでサンプルを探して目的にあった書き方を探して、から、用語説明の見方をわかる努力にならないのか
だから、>>187と言われるんだよ。俺も全く同じに思う
用語説明にパラメータも載ってるでしょ。parameters:なんてないでしょ。InDesignの用語説明のはJavascript表記が出ないようだけど、AppleScriptからJavascript表記にはほぼ機械的にだよ。さあ、用語説明を見てみよう&これから用語説明をまずはみよう 用語説明を見てwithArgumentsとしてみましたが、やっぱり駄目です。
書き方も合っているかわからないので2通り試してみましたが駄目でした。
NDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), {language: "javascript",withArguments:[1,2]});
INDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), {language: "javascript"},{withArguments:[1,2]}); /Users/hage/Desktop/hello.jsx
の受け側がちゃんとしてんの?InDesign消したからめんどくさいなめんどくさいなめんどくさいなあw まあ、見てみるよ 一番目のでええやん...それじゃAppleScriptで同じように書いても駄目って話だろう
もー、>>187のまんまやんっ
site:www.adobe.com InDesign AppleScript
で、ググって、ドキュメントを読めっ!(日本語訳ドキュメントがあるし、目的のとこがとてもみつけやすいだろに)
ドキュメント読んでもとかドキュメントどこにとかならわかるが、そこを省いてってありえないぞ
(まだ付き合ってもいいけど、ちゃんと終わりなら終わりって言ってね。InDesign消すから。無応答だと1日後に消す) ハイシエラでプレビューのHEIF変換機能を利用してシステムフォトライブラリのJPGとPNGをHEIF化出来ますか? プレビューってAppleScriptに対応してないだろ
Automatorのアクションに何か用意してあるかもしれないけど http://www.macotakara.jp/blog/mac_os_x/entry-34719.html
らしい。sipsコマンドも変換はまだらしい。クリックとかSystem Eventで地道にPreviewを操作すればできないことはないかなあ
https://eclecticlight.co/2017/10/20/converttoheif-a-contributed-script-and-automator-workflow-to-convert-jpeg-images-to-heif/comment-page-1/
こんなのあった。まるっきりただのシェルスクリプトだけだが
変換なんぞffmpegを使ってる。必要なコマンド(バイナリのffmpegとwriterapp/シェルスクリプトのconvertToHEIF)はWorkflow(パッケージ)に同梱されているのでまんまWorkflowとして動くのだろう >>191
すみません。パスがダミーのままでした。(;^_^A
できました。何度もありがとうございました。助かりました。
おかげでjxaも少し理解しました。asをjsに置き換えて使ってる感じなんですね。 小人よりこっちなので
-- AppleScript
set theResult to {}
set savedDemimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to "/"
repeat with theURL in input
set theItems to every text item of theURL
set theResult to theResult & ((items 4 thru -1 of theItems) as string)
end repeat
set AppleScript's text item delimiters to savedDemimiters
return theResult -- AppleScriptObjC
use framework "Foundation"
set theResult to {}
set regex to current application's NSRegularExpression's regularExpressionWithPattern:"^[^/]*//[^/]*/" options:0 |error|:(missing value)
repeat with theURL in input
set theResult to theResult & {(regex's stringByReplacingMatchesInString:theURL options:0 range:{location:0, |length|:(length of theURL)} withTemplate:"") as text}
end repeat
return theResult // JXA ObjC
theResult = [];
regex = $.NSRegularExpression.regularExpressionWithPatternOptionsError('^[^/]*//[^/]*/', 0, $());
input.forEach(function ( theURL ) {
theResult.push(regex.stringByReplacingMatchesInStringOptionsRangeWithTemplate(theURL, 0, $.NSMakeRange(0, theURL.length), '').js);
});
return theResult; // JXA っ(ていうかただのJavaScript)
theResult = [];
input.forEach(function ( theURL ) {
theResult.push(theURL.replace(/^[^/]*¥/¥/[^/]*¥//, ''));
});
return theResult BathyScaphe向け、画像をimgurに上げるスクリプト
macOS Sierra 10.12.6で作成したもの
・~/Library/Application Support/BathyScaphe/Scripts/ に置く
・実行するとファイルを開くダイアログが出るので、画像を一つ選ぶ
・書き込みウインドウが前面に出ていれば、画像のリンクをテキストの最後に付ける
なければダイアログにリンクを表示する
・上げた画像を削除するようなら、ターミナルでたとえば
log show --info --style syslog --predicate 'eventMessage contains "X DELETE"' --last 1d
して表示されるcurl以降、行末の ' までをそのまま実行する
== スクリプトここから
-- ref. https://apidocs.imgur.com
property apiUrl : "https://api.imgur.com/3/image"
property authHead : " -H 'Authorization: Client-ID cc2c5a0c5e345d1'"
use framework "Foundation"
use scripting additions
set imgUrl to ""
set imgFile to choose file of type {"public.image"} default location (path to desktop) without multiple selections allowed
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:imgFile options:0 |error|:(reference)
if imgData is missing value then
displayError(|error|'s localizedDescription as string)
end if
set base64Data to (imgData's base64EncodedStringWithOptions:0) as string
try
set respJson to do shell script "curl " & apiUrl & authHead & " -F image=" & quoted form of base64Data
set respRec to run script "JSON.parse(" & quoted form of respJson & ");" in "JavaScript"
on error |error|
displayError(|error|)
end try if success of respRec then
set imgUrl to link of |data| of respRec
set imgDelUrl to apiUrl & "/" & deleteHash of |data| of respRec
current application's NSLog("image uploaded to " & imgUrl & "; to delete, do curl -X DELETE " & imgDelUrl & authHead)
else
displayError(|error| of |data| of respRec)
end if
tell application "BathyScaphe"
if (count of documents) is not 0 and class of front document is reply document then
set text of front document to text of front document & imgUrl
return
end if
end tell
display dialog imgUrl buttons {"Cancel", "Copy to Clipboard"} default button 2 cancel button 1
set the clipboard to imgUrl
on displayError(|error|)
display dialog |error| buttons {"OK"} default button 1 cancel button 1
end displayError
== スクリプトここまで もういいやらしいけどw、
-[NSAppleEventDescriptor getFileSystemRepresentation:maxLength:]: unrecognized selector sent to instance 0x610000426ba0
なんのこっちゃだが、NSData's dataWithContentsOfFile: でかな?ググったところでは
古いのだとimgFile を適正に POSIX Path な NSString に変換してない/できないとかかなあ
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:(POSIX path of imgFile) options:0 |error|:(reference)
でとか 修正ありがとう
10.10を復元して、現象とその修正後の動作OKを確認しましたわ >>207,208
え?>>202,203でちゃんとおっぱいアップ出来たけど、なんか違ってるの? >>210
そっか、10.10ってOSのことなのね >>208
10.10を復元っ!作り、確認。お疲れ様です。いいねっ! 500kくらいのでエラるので、なんでかなーと思ったら引数が大きすぎると
じゃ、標準入力で受け取るように&だったらbase64化はコマンドでかなと思ったら、curlはbase64化もしてくれるだった
set {imgData, |error|} 〜
から
set respJson to do shell script "curl "
を
set respJson to do shell script "curl " & apiUrl & authHead & " -F image=@" & quoted form of (POSIX path of imgFile)
もしくは
set respJson to do shell script "cat " & quoted form of (POSIX path of imgFile) & " | curl " & apiUrl & authHead & " -F image=@-"
でいいみたい もう、こんなのはAppleScriptじゃないよ。 AppleScriptObjC
名前にAppleScript付いてるけど全然AppleScriptじゃないし 俺の知らないことだからってだけでよう文句言えるw AppleScriptだよ、どう見たって
Base64を作らなくてもいいならその嫌ってるObjCのとこなんて無いじゃん。唯一NSLogが残るくらいか。「AppleScriptじゃない」と言えるほど純粋AppleScriptをすらわかってなさげ いい年して顔真っ赤にしながらレスなんて恥ずかしいよ >>217
「パッと見だとまるで普通の英語の文章のように思える」のがAppleScriptが所謂超高級言語と呼ばれる所以だろ
このコードにはその側面が感じられない。プログラムのソースコードに見える
ってことだと思うんです。おれ>>215じゃないけどw
ちなみに超高級言語には他にMax/MSPなんかがある >>219
何を言いたいのかわからないなあ。それじゃ、do shell scriptでシェルスクリプトも書いちゃダメなの?do javascript でJavaScript書いちゃダメなの?同じだよ。純粋AppleScriptでできないからソレを使うだけけど、AppleScriptはAppleScript、メインは
超高級言語wだから、current application's とかくっそめんどくさかったりするから、やっぱそこもAppleScriptだろう そんな唐突にAppleScriptじゃないとか、AppleScriptは超高級言語でそういう記法じゃない(?)とか言える感覚が全くわからんので、具体的に
例えば、
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:imgFile options:0 |error|:(reference)
が
set imgData to current application's NSData's dataWithContentsOfFile_options_error( imgFile, 0, |error| )
もしくは
set imgData to dataWithContentsOfFile_options_error( imgFile, 0, |error| ) of NSData of current application
だったらいいの?全然変わらんと思うけど超高級言語云々では。てかObjective-C記法の方がその超高級言語に近いんじゃないかとさえ思えるけど >>220
多分もっと説明しても君には分からないと思う
美意識の問題だから >>222
いや、その美意識で同じことを書いてみてよ。美意識...よくまあなんていうか...正直キモいのでわからなくていいです 別人だけど、ジジイもとい初期のASからいじってたせいか、何となくどちらの言っていることも分かる気がする。
自然言語記述は、最初の頃は頑張ってたけど、途中で挫折した感じだったなあって笑 AppleScript好きだからあえて言うけど言語の試用が時代にあってないよね
扱える桁数とかさ オリジナルは「使える」ので自分用ライブラリにしてた。できる限り元のまま(敬意を込めて)でとしたが、まあ全く原型は無くなってしまったw
https://paste2.org/ZCaVK6vt
File Type UTI を比較するのがない(探せない)ので
do shell script でエラー文字列が得られない(探せない)ので
curlで得られるのがそれなら、じゃ、これでparseでええやん
ってことで、全文AppleScriptObjCにしたぞw
よくわからん美意識とかどうでもいいー、それも具体性ゼロなんてクソだっw
AppleScriptからCocoa呼べるなんて最高じゃん、なんでもできそうで。まあ、AppleScriptの記法はめんどくさいからJXAの方がと傾いているが、それでもAppleScriptも好き 綺麗に書けるならそれに越したことはないけど純ASだけでなんでもできるわけじゃないんだからしゃーない
「ASObjCだと読みやすいAS的記法からだいぶ変わっちゃうね」ってだけの話でしょ
文句つけてるor噛みついてるような発言に取れなくもないけどそんなイライラしなさんな
AppleはもうASに力入れてないでしょ
むしろいつ廃止しようか様子見してるぐらいじゃない?
個人的にはSwiftコード実行できるにして欲しいけど
do shell script "printf 'print(¥"Hello¥")' | swift"
で呼べなくもないけど立ち上がりが遅いし出力に余計なのが含まれるし使えるとは言い難い >>228
イライラは別にしてないけど。何言ってんの?ってことでしかない
「読みやすい」って何?>>221で話を具体手に膨らませてほしいな。おれおれ純粋AppleScriptのサブルーチンともそんなに変わらないし
>むしろいつ廃止しようか様子見してるぐらいじゃない
何年も前にも言われているねえ。まあJXAの方になるかもだが。なんで急にSwift? JXAすら「全然使われてねえ作るんじゃなかった」って思ってそうな気もするが
set imgData to contents of imgFile
set base64Data to base64 of imgData
こんなふうに、他の言語のメソッド呼び出してる感なく書ければいいなってことじゃないのかね ググったら、AppleScriptの頃より使われている気がするけどね。さすがJavaScriptの方を元々使ってた人が多いのかと思ってたけど
それは「言語」としてサポートしていたらのでしょ。てか、そうだとしたら、サブルーチンどうしてんだろ?AppleScriptらしくないと嫌な思いしながら書いて使ってるのかなあ??
OSAXでもやればできるんじゃないのかなあ。OSAXはよく知らんが。ナイナイものねだりというか、文句言うくらいだったらOSAX作れよって感じかな。んなの作らなくても使えるだけで最高だけどな、俺は
なんか勝手な思いで勝手に文句だけ言っているだけにしか見えないなあ 日本語AppleScriptの時代を知っているが、あれから比べたら全く別の言語みたいなもの。
別の言語を習得するのはもうきつい年代になった。 >>231
横から突然すみません
お詳しそうなので、宜しければ別スレで解決できなかった質問にご回答いただきたいのですが、
iMacに外部ディスプレイを繋げていて、そのディスプレイでWEBブラウザ経由で映画を観る際に
iMac本体側のディスプレイをOFFにしたいのですがどうやれば良いでしょうか?
真っ黒な画面だと明るさがあるので駄目なんです
AppleScriptは全くの初心者ですが‥‥
iMac Late 2015, Sierraです
外部ディスプレイはminiDPで繋いでます ■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。 ■ このスレッドは過去ログ倉庫に格納されています