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/
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

記録したものはこんな感じです。
■ このスレッドは過去ログ倉庫に格納されています

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