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/
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&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 " & 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
・ウィンドウを何も表示してない
・アプリケーションを隠しておく
・起動してない
全部手前にくるなー
■ このスレッドは過去ログ倉庫に格納されています

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