おもろい、めずらしいアップルスクリプト発表会 6

このエントリーをはてなブックマークに追加
928名称未設定:2006/12/17(日) 00:17:27 ID:E1f87bwq0
初心者なんですが、
{a,b,c}と{d,e,f}という2つのリストを
{{a,b,c},{d,e,f}}のような形にするには
どうすればいいのでしょうか。
929名称未設定:2006/12/17(日) 08:16:12 ID:oGl4vDy40
最近tigerにしたんだけど
___ctl-t とかでショートカット設定できなくなっちゃったの?
930sage:2006/12/17(日) 16:23:19 ID:cJIHguLoO
はじめますて。超初心者です。
Mail.appのルールでスクリプトを指定して実行できるみたいなんだけど、
届いたメールを自動で印刷とか可能ですか?
教えていただけたらと。
スクリプト覚えたいです。
931名称未設定:2006/12/18(月) 01:36:18 ID:iJJx9Ykl0
君んところはスパムとか来ないのか
932名称未設定:2006/12/18(月) 03:54:07 ID:ctln39cs0
>>928
まず
set theList to {}
と空のリストを宣言して、
set end of theList to hoge
と、なにかを順次格納していく。
-- 検証コード
set theList to {}
set end of theList to {1, 3, 5}
set end of theList to {2, 4, 6}
theList
933名称未設定:2006/12/18(月) 21:57:06 ID:EJmnkHip0
set theList1 to {1, 2, 3}
set theList2 to {4, 5, 6}
set finalList to {theList1, theList2}
934名称未設定:2006/12/19(火) 00:08:18 ID:PDW9qp5C0
>>932
どーもです。
普通にリストを結合しても、思うように行かなかったもんで。
助かりました。ありがとうございます。
935名称未設定:2006/12/19(火) 12:34:21 ID:H46l0VSY0
そのへんのリストの扱いは、AppleScript Parkに詳しい記述があったような。
936名称未設定:2006/12/21(木) 21:28:47 ID:8zr6VPSP0
ファインダーでクリックして開いたファイルを掴むにはどうしたらいいですか?
そのファイルを開いた、という情報が取得したいです。
937名称未設定:2006/12/21(木) 22:04:38 ID:hH+3Fjvo0
通知を受け取る機能がないから無理だけど、
>そのファイルを開いた、という情報が取得したいです。
その先で具体的に何がしたいの?
938名称未設定:2006/12/21(木) 22:32:57 ID:JPn2VnqX0
>>937
どのファイルを開いたのか記録したいんです。
結果的にはそれを、コメント欄に回数として記入したいと思います。
939名称未設定:2006/12/22(金) 00:00:41 ID:Ihg9Qcd30
標準的には出来そうにない気がする。

別手段として、このTrackerとか使えば情報は収集出来るのかも。ここの英文、
俺にはどうにも読みこなせないが。
ttp://rixstep.com/4/0/tracker/
940名称未設定:2006/12/22(金) 00:09:32 ID:zbHmjtWQ0
似たような感じで、スクリプトエディタの記録が使える環境なら
open document file の部分を抜き出してカウントできる。
941名称未設定:2006/12/22(金) 04:28:51 ID:viuUar760
そういえば昔、AppleEventを記録するようなソフトあったよね。
942名称未設定:2006/12/22(金) 08:04:13 ID:3eOgjxUy0
SpotlightはkMDItemLastUsedDateというMetadata Attributeにオープンした
時刻を記録してる。mdlsコマンドで確認できる。
AppleScriptから利用するのは難しいけど、OSAXかヘルパーアプリを書けば
アクセスできる。
943名称未設定:2006/12/25(月) 08:52:12 ID:Kv6YEQdi0
do shell scriptではだめそうなの?
944名称未設定:2006/12/25(月) 21:02:34 ID:avuDy7cv0
おいらの力じゃ書けないっす
945名称未設定:2006/12/27(水) 20:12:28 ID:T0rh068Z0
(*************************************************************************************
  FinderウインドウをOS 9のポップアップウインドウのようにするスクリプト
  自動的に終了しないアプリケーションとして保存する事
*************************************************************************************)
on run
return
end run
on idle
try
with timeout of 35791394 seconds
tell application "Finder"
set |window list| to every Finder window
repeat with |Finder window| in |window list|
if (frontmost is false) or ((index of |Finder window|) is not 1) then
set (collapsed of |Finder window|) to true
end if
end repeat
end tell
end timeout
end try
return 3
end idle
on quit
continue quit
end quit
946名称未設定:2006/12/28(木) 00:43:54 ID:N+Pputka0
今、プレビューで開いてる画像を再度開けるようにワークスペースの保存みたいのってできないですかね?
947名称未設定:2006/12/28(木) 12:46:41 ID:5eF7fDOZ0
>>946
プレビューはアップルスクリプト非対応。対応してりゃ何でもできるって訳でもないけど。
GUIスクリプティング使ってブックマークでもしとけば?
948名称未設定:2006/12/28(木) 14:43:31 ID:1BQu06HN0
>>947
非対応か…。ファインダーで指定ファイルを開いた方が早そうだな。
949名称未設定:2006/12/28(木) 16:58:20 ID:Ae8HJiM90
一応、open、quitぐらいはできるよ。
PantherのPreviewはできないけど、TigerのPreviewはprintも理解する。
基本的に、どのアプリでもそのくらいはできるようになっているわけだが。

tell app "preview"
open (choose file)
end tell

以下のGUI Scriptingの手法でPreviewで開いてるファイルのパスのリストが取得できる。
(事情でPantherのPreviewで試してんだけど……)

set values to {}
activate application "Preview"
tell application "System Events"
tell process "preview"
repeat with i in windows
set values to values & value of attribute "AXDocument" of i
end repeat
end tell
end tell

後はがんばってくれ。

GUI Scriptingだからお膳立てが必要だよ。詳しくはググれ。
950名称未設定:2007/01/04(木) 23:01:01 ID:PEh8CLR50
AppleScript Shell
http://hayne.net/MacDev/Ash/

Ashだって。
951名称未設定:2007/01/07(日) 12:31:14 ID:cjj4q7kw0
Mail.app で多言語を含むメールを作成する場合、
Mail.app のエンコーディング (最小文字セット) の
選定アルゴリズムがおかしいようで、ISO2022JP
で送信してしまうようです。
メニューから手動で「UTF-8」を選択してから送信
すれば問題無いのですが、それをうっかり忘れると
先方から「読めない」と指摘されることになります。

そこで、新規メール作成ウインドウを開き、UTF-8
に設定するスクリプトを作ろうと考えたのですが、
肝心の「UTF-8」を指定する方法が分かりません。
良い方法があったら教えていただけないでしょうか?

tell application "Mail"
  set newMessage to make new outgoing message
  set visible of newMessage to true
  make new to recipient at end of to recipients of newMessage with properties {address:"user@domain"}
end tell
952名称未設定:2007/01/07(日) 13:14:52 ID:4A/jLrmY0
953名称未設定:2007/01/07(日) 14:09:11 ID:cjj4q7kw0
>>952

そうでしたね。ありがとうございました。一応、成果物。

tell application "Mail"
  set newMessage to make new outgoing message
  set visible of newMessage to true
  make new to recipient at end of to recipients of newMessage with properties {address:"user@domain"}
end tell
tell application "System Events"
  pick (menu item "Unicode(UTF-8)" of
   menu "テキストエンコーディング" of
   menu item "テキストエンコーディング" of
   menu "メッセージ" of
   menu bar item "メッセージ" of
   menu bar 1 of
   application process "Mail")
end tell
954名称未設定:2007/01/24(水) 08:07:02 ID:uMGeKA4R0
ウインドウのサイズとか見た目を特定のものにするスクリプト書いたんだけど
それ使ってそのまま閉じてしまうと次開いた時、設定が反映されてない
使った後ちょっとカーソルで窓を動かしたりすれば反映されるんですが

そのへんの設定は.DS_Storeに保存されているという噂を聞いたんだけど
.DS_Storeが更新されてないっていうことでしょーか
だとするとスクリプトだけで.DS_Storeが更新されるようにするにはどうすれば良いんでしょう?
955名称未設定:2007/01/24(水) 13:00:49 ID:onicjvkw0
よー知らんけど、updateイベント送ってみたら?
956名称未設定:2007/01/25(木) 12:07:37 ID:gb7wVTgp0
>>954
> ウインドウのサイズとか見た目を特定のものにするスクリプト書いたんだけど
> それ使ってそのまま閉じてしまうと次開いた時、設定が反映されてない
> 使った後ちょっとカーソルで窓を動かしたりすれば反映されるんですが

俺もその対処で悩んだことある。
ツールバーの表示ON/OFFを一度切り替えたらウインドウサイズが保存されたけど、その後しばらくすると
ウインドウの内容が再描画されなくなった。同じような感じで何か別の表示を切り替えるといいかも。

> そのへんの設定は.DS_Storeに保存されているという噂を聞いたんだけど
> .DS_Storeが更新されてないっていうことでしょーか
> だとするとスクリプトだけで.DS_Storeが更新されるようにするにはどうすれば良いんでしょう?

試してないけど事前に.DS_Store削除しちゃえば強制的に作成されるかも。
ただ、Appleは.DS_Storeの仕様を公開していないので、直接.DS_Storeを操作するようなことはしないほうがいいと思う。
957954:2007/01/25(木) 18:24:19 ID:9VQoCFYe0
>>955-956
サンクス
まだ直せてないけど
参考にしていろいろ試してみます
958348:2007/02/01(木) 00:18:59 ID:qan9JakM0
ファイルをシェルスクリプトで処理した後にアップルスクリプトに渡して,
またそこで処理をしたいのだけど,上手くファイルパスを渡せません。
ファイルパスに日本語が入っているとアップするスクリプト側で
execution error: Can't make file "..." into aliasとエラー。
アルファベットだけのファイルパスだと問題ないので,
コード変換に問題があるのかも知れないけど,
具体的な原因が判らないので対策もわかりません。
とりあえず以下のようなシェルスクリプトでエラーです。

#!/bin/sh
filepath='/Users/フルパス/ほげほげ.jpg'

cat << EOS|iconv -f UTF8 -t SJIS|osascript
tell application "Finder"
set myFile to (POSIX file "${filepath}") as alias
copy comment of myFile as Unicode text to content
display dialog content
end tell
EOS
959名称未設定:2007/02/01(木) 00:26:36 ID:ApIWqajD0
>>958
>filepath='/Users/フルパス/ほげほげ.jpg'

パスストリングをコマンドラインに渡すんであれば、
(quoted form of posix path of HogehogePath)
でワンセットにしてみたらどうよ。
960348:2007/02/01(木) 00:52:36 ID:qan9JakM0
>>958
コマンドラインに渡したいのではなくアップルスクリプト側に渡したいのです。
処理対象のファイルをPOSIX path型からalias型にしたいのだけれど,その変換中にエラーが出るらしい。
961名称未設定:2007/02/01(木) 01:05:16 ID:xjo41QvB0
>>958
set myFile to (POSIX file ("${filepath}"as Unicode text)) as alias
でどうですか?
962348:2007/02/01(木) 01:22:51 ID:qan9JakM0
>>961
うまくいきました。ありがとさんです。

で,ついでに,as Unicode text とするのだから,コード変換は必要ないかなと実験しましたが,
cat << EOS|osascript も osascript << EOSとしてもエラーが出てしまいます。
(シェルスクリプト自体はUTF8です。)

963名称未設定:2007/02/01(木) 03:03:03 ID:nGX93S0h0
>>962
osascriptは標準入力&テキスト形式のスクリプトでは
unicodeを受け付けなかったと思うぞ。
あと、display dialogとかのユーザーインタラクションも
osascript経由では使えないはず。
964名称未設定:2007/02/01(木) 04:38:16 ID:fCwPeITd0
> あと、display dialogとかのユーザーインタラクションも
> osascript経由では使えないはず。

tell application "Finder" の中だから一応使えるだろ。
965名称未設定:2007/02/02(金) 21:02:30 ID:PiX7os3k0
>>964
こんなん?

MESSAGE="hoge¥n"

display_message () {
osascript <<-EOF
tell application "Finder"
activate
set dd to display dialog "$MESSAGE" giving up after 30
set UserResponse to button returned of dd
end tell
EOF
}

res=`display_message`
966名称未設定:2007/02/03(土) 03:01:21 ID:QN6wgMDq0
Finderじゃなくてもいいんだけどね
echo 'tell app "System Events" to display dialog "Hoge"' | osascript
967名称未設定:2007/02/03(土) 19:31:59 ID:SOWzu8cZ0
教えて下さい!
テキスト内の特定のワードを全て置き換えるにはどう書けばよいですか?
テキストファイルの「AAAA」というワードを「CCCC」に置き換えるスクリプトを作りたいです。
968名称未設定:2007/02/03(土) 19:40:47 ID:3dlQaoE10
使てるエディタの辞書を見れ。
969名称未設定:2007/02/03(土) 21:37:37 ID:SOWzu8cZ0
すみません。見たのですがどうすればよいのかわかりませんでした。
Find/Replace を使えばできそうな気はするのですが具体的にどう書けばよいのか…
Jedit3使ってます。
970名称未設定:2007/02/03(土) 22:11:23 ID:ne7VDeyI0
古…

Jeditならスクリプトマニュアルって付いてない?
replace 命令。例も書いてある。4だけど。これも結構古いかw

もしマニュアル付いてなければ、ここで適当なの漁って。
ttp://www.artman21.net/product/Jedit3/Jedit3Script.html
971名称未設定:2007/02/04(日) 23:01:53 ID:vt9VHor20
ありがとうございました。
色々調べている途中ではありますがJeditを使用せずに
アップルスクリプトだけで置き換えができないものかと
考えています。アドバイスお願いします。
972名称未設定:2007/02/04(日) 23:21:45 ID:DOW/ezez0
日本語はエディタに任せた方が安心、面倒がないと思うけどなあ。

ま、一応。ページの一番下、Replacing Characters in a String
ttp://www.apple.com/applescript/guidebook/sbrt/pgs/sbrt.07.htm
973名称未設定:2007/02/05(月) 00:11:53 ID:e6Q4Kzpy0
AppleScriptでなく他の言語であれば…なんだがな。
974名称未設定:2007/02/05(月) 04:00:27 ID:tqi8tuWU0
文字・テキストの単純な置換は、AppleScriptよりも、Perlの方が速くてラクチン。
10万行以上でも数秒で終わるのと数時間かかるくらい違う、文字色を着けるとか以外は。
975名称未設定:2007/02/05(月) 04:52:01 ID:e6Q4Kzpy0
スレ違いだけどrubyでも置いておく。
文字列fooをbarに置換するスクリプトとして、
任意のファイル名hoge.rbを作成し以下のように記述。

#!/usr/bin/ruby -i
while gets
gsub!('foo', 'bar')
print
end

で、ターミナルから「ruby hoge.rb 置換対象のファイル名」。
976名称未設定:2007/02/05(月) 12:11:36 ID:3M0LCzLZ0
みなさん、ありがとうございます!!!
AppleScript何で勉強しなかったのだろうかとハゲしく後悔。
Perlという手もあるのですね。名前は聞いたことありますが
??のモノでした。
アドバイス頂いたこと勉強してきます。
977名称未設定
>>967-976
ttp://www.vector.co.jp/soft/mac/util/se362780.html
みたいなソフト使った方が楽だと思う
フォルダ突っ込んで一括置換も出来るし
これも中身はPerlだけど