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

このエントリーをはてなブックマークに追加
1名無しさん
HP@`CGI板のパクリです。
便利なのも大歓迎。
2名無しさん:2000/05/02(火) 11:54
田中さんが実験的に作ったAppleScript製のWebサーバには目から鱗の思いでした
NetEvents使ってやるんだけど、ちょっとびっくりした
3名無しさん:2000/05/02(火) 16:03
アップルスクリプトといったらふーちー君とかわーいMCKという
DTPむけのツールしか思い当たらない(^^;)あのツールも目から鱗でした
4>2:2000/05/02(火) 16:18
田中求之氏のページはレベルが高いですね。
私もいつも参考にさせてもらってます。

# 2chにも田中氏の掲示板みたいなレベルの高い議論ができる場所が欲しいな・・・。
# 下らない煽りが多すぎて最近ウンザリ。
5>4:2000/05/02(火) 16:22
そのページってどこ?
64>5:2000/05/02(火) 17:02
ここにURLを書くと荒らされそうだから書きたくありません。あしからず。m(_ _)m
7MACオタ:2000/05/02(火) 17:11
どっから拾ったか忘れたすけど@`Yahooから株価を引張ってくるスクリプトす

on run
set dlgReply to (display dialog "Get a Yahoo! stock quote for this symbol:" default answer "AAPL" buttons {"Get Quote"@` "Cancel"} default button 1 giving up after 30)
if button returned of dlgReply is "Cancel" then return
set daSymbol to allCaps(text returned of dlgReply)
-- make a temp file
set myFile to ((path to temporary items) as string) & "Stock Quote Script Temp"
-- fetch quote page
tell application "URL Access Scripting"
download "http://finance.yahoo.com/q" to file myFile replacing yes form data "s=" & daSymbol & "&d=v1"
quit
end tell
-- read HTML into a variable
open for access file myFile
set quoteHTML to (read file myFile to (get eof file myFile))
close access file myFile
-- find the lines with the last trade date and last price
-- Note: Yahoo changes their HTML format@` this needs to change too.
set startTag to daSymbol & "</a></td>" & (ASCII character 10)
set daStart to (the offset of startTag in quoteHTML) + (the length of startTag)
set daCount to 1
copy "" to lastTrade
copy "" to lastPrice
repeat
if text from character (daStart + daCount) to (daStart + daCount + 1) of quoteHTML is "/t" then
if lastTrade is "" then
set lastTrade to text from character daStart to (daStart + daCount - 2) of quoteHTML
set daStart to daStart + daCount + 5
set daCount to 1
else
set lastPrice to text from character daStart to (daStart + daCount - 2) of quoteHTML
exit repeat
end if
end if
set daCount to daCount + 1
end repeat
--
tell application "Finder" to delete file myFile
set lastTrade to stripHTMLTags(lastTrade)
if lastTrade contains ":" then
-- markets are open@` so it's a time
set lastTrade to "at " & lastTrade
else
-- martets are closed@` so it's a date
set lastTrade to "on " & lastTrade
end if
display dialog "Yahoo says " & daSymbol & " last traded " & lastTrade & " at $" & stripHTMLTags(lastPrice) & "." with icon 1 buttons "OK" default button 1 giving up after 30
end run


on allCaps(daText)
-- very messy capitalization routine
copy "" to newText
repeat with i from 1 to the count of character in daText
set curChar to character i of daText
set curNum to ASCII number curChar
if (curNum > 96) and (curNum < 123) then
set newText to (newText & (ASCII character (curNum - 32))) as string
else
set newText to (newText & curChar) as string
end if
end repeat
return newText
end allCaps


on stripHTMLTags(HTML)
-- slow@` and fails on bad HTML that doesn't use entities for < and >
-- but@` requires no OSAXen and is good enough for now.
set intag to false
set newText to ""
repeat with i from 1 to count of character in HTML
set curChar to character i of HTML
if curChar is "<" then set intag to true
if not intag then set newText to (newText & curChar) as string
if curChar is ">" then set intag to false
end repeat
return newText
end stripHTMLTags
8重千代:2000/05/02(火) 17:53
へえURL Access scriptingなんていうアプリがあるんだねえ。
ようしスクリプトでブラウザでも作成すっか!!(うそ)
9名無しさん:2000/05/02(火) 18:03
有名なサイトだから、検索ですぐ出てくるよ。
あとMacオタ、長すぎ(本人かどうだかしらんが)。
10MACオタ:2000/05/02(火) 18:13
長くて済みません。URL AccessはOS 9には標準でついてるすよ。
HelpがHTMLになった頃からOS標準の筈す。
11名無しさん:2000/05/02(火) 23:12
アプリケーション”Finder"について
アクティベート
すべてのファイルをゴミ箱に入れる
ゴミ箱を空にする
以上
12>11:2000/05/02(火) 23:19
今どき日本語で書くなよ。
13最近Mac使わなくなった人間:2000/05/03(水) 00:26
アップルスクリプト書けるマッカーっておれは見た事ない。
おれも勉強しようと本屋に行ったが、本が無かった。
Macコミュニティにはウイザードと呼べる人間はほとんどいない。
14>13:2000/05/03(水) 00:47
なにゆーてんねん。iMac初心者とかはしらないが、まともに使いこなしてる奴はたいがいある程度書けるだろ?
基本的にバッチファイルみたいなもんだから、単純な動作なら簡単よ?
(複雑なことしようと思ったら勉強必須)

とゆーかAppleScriptなんて使える程度でウィザードとか言ってるの?
15名無しさん:2000/05/03(水) 00:50
昨日も本屋いったが、本もいっぱいあるぞ? 田舎?
16うげー:2000/05/03(水) 02:35
OS9付属の�AppleScript 1.4 はどの程度動作が速いのでしょうか?
1.4をなんとかしてOS8.1で使いたいのだが、使えない。
carbon lib を入れても「carbon lib」が見つかりませんだしなぁ。
そもそもシステム自体が違うから、どだい無理な話か。
どうにかならんかなぁ。8.1付属の1.1.2は遅すぎ。
17名無しさん:2000/05/03(水) 02:42
PowerPCネイティブになったのは8.5付属
のやつからだっけ?
18>16:2000/05/03(水) 04:22
ASって速くなったといっても、PerlとかTclに比べると
文字列処理とかなんだか遅く感じるのねん。
19>18:2000/05/03(水) 04:52
とゆうか、遅いです。
文字列処理とか込み入ったことするときは現状ではMacPerlとかでやるべきでしょうね
ただAppleScriptは手軽であります
2016:2000/05/03(水) 05:03
>18.19
文字列以外のファインダーやアプリ制御関係の処理はどうですか?
21名無しさん:2000/05/03(水) 05:11
みんな、OSA Menu使ってるよね。最強のユーティリティだね。
http://www.lazerware.com/software.html
22>20:2000/05/03(水) 05:30
そういうことするには実に向いています。
手動でやった動作をトレースしてスクリプト化することができるので、
その機能を使えばらくちんのようです
23ふごがが:2000/05/03(水) 06:11
>19
MacPerl と連動させるってのも一つの手だよね。
そういうのに詳しいサイト知らない?
24楊大人:2000/05/03(水) 06:58
ダウンロードしたいファイルのURLをテキストエディタで列記して、そのファイルをドラッグ&ドロップすることによって、iCabでファイルを連続ダウンロードするスクリプト アル。
テキストファイルの行の先頭が "#" の行はコメントと解釈されるアル。

# Down Down DX とかの代わりに使ってるアル。


---------------------- ここから ------------------
on open theList
repeat with x in theList
set FilePath to x
DownloadGo(FilePath as string)
end repeat
end open

on run
set FilePath to (choose file with prompt "ダウンロードするファイルのURLを記述したファイルを選択してください。")

DownloadGo(FilePath as string)
end run

on DownloadGo(FilePath)
--設定ファイルを読み込む
try
open for access file FilePath -- 設定ファイルを開く
set LinesBuf to every paragraph of (read file FilePath) -- 行毎に読み込む
close access file FilePath -- 設定ファイルを閉じる
on error
display dialog (FilePath as string) & " が設定されていません" -- エラーだぜ
set LinesBuf to ""
end try

--ファイル解析
repeat with lineBuf in LinesBuf
-- コメントでも空行でも無ければ実行
if (lineBuf does not start with "#") and (number of (every word of lineBuf) > 0) then

--アプリケーションを使ってダウンロード(ここを書き換えれば、他のアプリでもダウンロード可)
tell application "iCab"
--activate
try
fetchurl lineBuf -- ダウンロード
end try
end tell
end if

end repeat

end DownloadGo
25楊大人:2000/05/03(水) 06:59
長くなってしまったアル。すまんアル。
26楊大人>24:2000/05/03(水) 07:06
注意事項を忘れてたアル。
このスクリプトは、途中終了は(なぜか)出来ないアル。
とゆーわけで、URLを100個とか書いたりすると、かなりイヤな状況になるかもアル。
27名無しさん:2000/05/04(木) 23:15
age
28>23:2000/05/05(金) 04:17
http://www2a.biglobe.ne.jp/~hora/for_macperl/ AppleScriptからMacPerlを使う技術
http://mtlab.ecn.fpu.ac.jp/webcon.mtxt 会議室アーカイブにいろいろありそう
2916:2000/05/05(金) 04:43
気がつきました。
QuickeysでAppleScriptのスクリプトを組んで動かしたほうが速いですね。
ウチの8.1では。
30>28:2000/05/05(金) 05:01
AppleScriptからMacRubyを呼び出して利用するってのもできますね
(とゆーかそういう使い方が現状のMacのRubyでは妥当か?)
31楊大人:2000/05/06(土) 12:50
今一つ盛り上がらないアルね。
AppleScriptを使ってる人って少ないアルか?
# 使わないのはもったいないアル。
32>31:2000/05/06(土) 13:38
多分、業務で使ってる人が多いんじゃないかな。
普段、使うってのないんだよねぇ。
一つ、二つは作ろうかっていうネタがあるんだけど、
まぁ無くても困らないから、作ってない、えへえへ
33ふごがが:2000/05/06(土) 13:55
>28
さんきゅー!ありがとう!!
34助けてゲイツ:2000/05/08(月) 02:10
on run
tell application "Netscape Communicator (tm)"
set currenturl to URL of window 1
end tell
tell application "Internet Explorer"
Activate
OpenURL currenturl
end tell
end run
35名無しさん:2000/05/08(月) 12:05
>34
ほほー、ネスケでのURLをIEで再度開くっていうスクリプトですな。
コピペすりゃいいじゃーん。とツッコミたくなるけど、
スクリプトってーのは、個人の欲求に基づいて作るものなんで、
ちゃんと理由は存在するもんですよね。

ところで、個人的に欲しいのは、起動時にRAMディスクにことえりの辞書を
コピーするっていうスクリプトなんだけど。
ただ、ちょっと分からないのは、ことえり辞書って機能拡張フォルダに
入って無くてもオッケーなんだっけ?
36名無しさん:2000/05/08(月) 12:33
>31>32
デザイナーとかオペレータが使う、クォークエクスプレスを
補助するスクリプトが沢山でまわってるから、そっち業界向けってイメージつよいね。

37>35:2000/05/08(月) 20:30
エイリアス使えばいいんでない?
38名無しさん:2000/05/08(月) 21:14
AppleScriptウイルスはまだ出ていないの?
39ゲイツァー:2000/05/09(火) 02:08
34のスクリプトの利点は、操作がワンタッチでできるということ。
なによりクリップボードを使わずに済むということ。です。
個人的にはIEじゃないと見れないページを見るとき、
ページをWAFF形式で保存したいときに使っています。

>35 どこかのサイトに、起動時に辞書をRAMディスクにコピーし、
終了時に保存するスクリプトがあったような気が・・・
AS関係のサイトを回ればあると思います。あとはベクターで探すとか。

>38 一時、Hotlineでそんなトロイが出回っていました。
Filesフォルダの中味を全部捨てちゃうごく単純なやつ。
40名無しさん:2000/05/30(火) 21:39
だれかポップアップウィンドウのタブのサイズを換える為の構文があるか
どうか知りませんか?
41名無しさん:2000/05/31(水) 03:13
>40
IEの?
なら、ない。
ウインドウのサイズや位置は変えられるけど。
42>38:2000/05/31(水) 15:30
俺作ってみたよ。
でも分かる人ならすぐ見破られるいんちきだけど。
4340>41:2000/05/31(水) 15:46
いや、Finderのです。ポップアップウィンドウの間が狭いとそこにタブをドラッグ
するとタブ幅が小さくなりますがそんなことをせずポップアップウィンドウの位置
とタブ幅を制御したいのです。
ディスプレーの解像度を換えるとポップアップウィンドウのサイズが変わってしまったり
閉じてしまったりしますが解像度を戻した後、スクリプトで簡単に元の状態に戻したいのです。
44名無しさん:2000/05/31(水) 19:03
--Gooの英和辞書を使う
--クリップボードにコピーされている英単語をGooの英和辞書サービスで検索する
tell application "Finder"
activate
(the clipboard)
set tango to result as text
end tell
tell application "Internet Explorer"
OpenURL "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=" & tango & "&sw=0"
end tell

某サイトからのコピペですが、けっこうつかえます。

45重千代:2000/06/03(土) 09:06
アッシも作ってみました。スクリプトやってて、
いちいちスクリプトエディタから用語辞書を開くの
めんどくさく感じたことないですか?
これは、それを解消するスクリプトです。
ただし、OSA Menuから使ってね。要は現在アクティブなアプリの
用語辞書を開くってやつです。
(ついでにスクリプトエディタも起動してくれます。)
--frontmostのアプリケーションの用語辞書を開く
tell application "Finder"
set the script_editor to application file id "ToyS"
set file_path to path to frontmost application
ignoring application responses
open file_path using script_editor
end ignoring
end tell
--ここまで

おっと、OSA Menuは、MacOSのCDROMに入ってます。結構、便利。
46ちょっと教えて:2000/06/03(土) 15:57
ブラウザーのキャッシュ、クッキー、ヒストリーを消すスクリプト作って
使っているんだけど、クッキーはない時も在るでしょ。そうするとエラー
起こしてアップリケーションメニューが点滅するのよ。

これを回避というか、無視してスクリプト終了する構文、教えてちょ。
今はこんな感じ

tell application "Finder"
activate
select every item of container window of folder "Cache ト" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk
delete selection
select {file "MagicCookie" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk@` file "Netscape History" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk}
delete selection
empty trash
end tell
47楊大人>46:2000/06/03(土) 16:27
エラーが起きる部分を以下の形式で書けばエラーが出ても無視されるようになるアルよ。

try
(ここにやりたい処理を書く)
on error
(ここにエラーが起きたときの処理を書く、必要なければ書かなくても良い)
end try

#JAVAの try 〜 catch と同じよーなもんアル。
それから、Finder で、 select 〜 を使うスクリプトは、Finderを使ってる最中だと
誤動作を起こしやすいので、お勧めはしないアル。
理由は select でファイル等を選択した直後に、ユーザーがFinder上で他のファイル選択すると
selectに入ってるファイルが変わってしまうからアル。

だから、上記のスクリプトは以下のように書いたらどうアルか?
-----------------------------------------
tell application "Finder"
activate
try
delete every item of container window of folder "Cache ト" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk
delete {file "MagicCookie" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk@` file "Netscape History" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk}
end try
empty trash
end tell
---------------------------
ディスクの階層がウチの環境とは違うので、動作テストはしてないアル。
empty trash を消して、動作テストすることをお勧めするアル。
4846>47:2000/06/04(日) 15:41
サンクスです。お蔭様で快適になりました。

49楊大人>48:2000/06/04(日) 20:36
なんとなく、一つのtryブロックにエラーが起きる可能性のある命令を二つ連続で書くのは間違ってるような気がしてきたので、ちょっと改良するアル。

tell application "Finder"
activate
try
delete every item of container window of folder "Cache ト" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk
end try
try
delete {file "MagicCookie" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk@` file "Netscape History" of folder "omanko" of folder "Netscape Users" of folder "初期設定" of folder "システムフォルダ" of startup disk}
end try
empty trash
end tell

これなら、一発目のdelete がエラーになっても二発目のdeleteはちゃんと実行されるアル。(^^)
50名無しさん:2000/06/09(金) 13:28
途中までトライしたのですができませんでした。
あるフォルダに入っているファイルのファイルタイプと
クリエーターをまとめて変換するスクリプトありませんか?
51MACオタ:2000/06/09(金) 17:43
52>46〜49:2000/06/11(日) 00:04
誰でも使えるように汎用性を持たせてみました。
いかがなもんでしょ。
--
property User : ""
on run
if User = "" then
tell application "Finder"
set usernamelist to name of every folder of folder "Netscape Users" of preferences folder
end tell
set User to item 1 of (choose from list usernamelist with prompt "Userを指定して下さい。")
end if
tell application "Finder"
try
delete every item of folder "Cache ト" of folder User of folder "Netscape Users" of preferences folder
delete file "MagicCookie" of folder User of folder "Netscape Users" of preferences folder
end try
end tell
end run
--
53>50:2000/06/11(日) 00:17
6行でOK。
--
set crt to text returned of (display dialog "クリエータは何にしますか?" default answer "")
set fltp to text returned of (display dialog "ファイルタイプは何にしますか?" default answer "")
set fld to choose folder with prompt "指定したフォルダ内の、全てのファイルのタイプとクリエータを変換します:"
tell application "Finder"
set file type of every file of fld to fltp
set creator type of every file of fld to crt
end tell
--
5453:2000/06/11(日) 00:19
...7行だった...(^^;
55>49:2000/06/11(日) 00:38
>一つのtryブロックにエラーが起きる可能性のある命令を二つ連続で書くのは
>間違ってるような気がしてきた

そんな事ないですよ。
3つだと問題になりますけど。
3つ以上なら、私だったら削除したい項目をリストにして、

repeat with 変数 in リスト名
try
delete file 変数
end try
end repeat

にするかな。
56Macオタ:2000/06/14(水) 18:15
age
57超初心者:2000/06/17(土) 02:11
ジョークです。仕事に疲れたら、Wクリックして下さい。

tell application "Finder"
activate
display dialog "( ゚Д゚)ノ<逝ってよし!" buttons {"逝く"} default button 1
end tell
58総帥>超初心者:2000/06/17(土) 05:38
こうしたらびっくりするでしょ
---------------------------
tell application "Finder"
activate
display dialog "( ゚Д゚)ノ<逝ってよし!" buttons {"逝く"} default button 1
end tell
tell application "Finder"
shut down
end tell
59総帥:2000/06/17(土) 05:43
う〜ん、これだったらジョークにならんな。虚しいだけだし。
せめてshut downをrestartにしておくかな?
---------------------------
tell application "Finder"
activate
display dialog "( ゚Д゚)ノ<逝ってよし!" buttons {"逝く"} default button 1
end tell
tell application "Finder"
restart
end tell
60名無しさん:2000/06/22(木) 01:18
34さんのスクリプトが為になりました。
iCabを使っているのですが時々画像が表示されないので、そういう時に便利ですね。
ファンクションキーに割り当てて使ってます。
61
コマンド+オプション+コントロール+で出てくるMacOSTeamの
スクリーンセーバー?を表示させるスクリプトって書ける?。