このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

スクリプト間でデータの受け渡しってできますか?

発言者:ebi
( Date Friday, January 24, 1997 16:54:08 )


いつも拝見させてもらっています。

さっそく質問ですが・・・
アップルスクリプト間でのデータの受け渡しってできるのでしょうか?
たとえば
AスクリプトからBスクリプトを起動させて、Aスクリプト内部の情報を
Bスクリプトに渡たす(または、その逆)のようなことですが・・・

アップルスクリプト初心者なもので、的外れな質問かもしれませんが・・・
ご回答よろしくお願いいたします(^^;)

田中求之 さんからのコメント
( Friday, January 24, 1997 17:41:26 )

A, B のスクリプトをスクリプトオブジェクトとしてセーブしておき
(コンパイル済みのスクリプトファイルにしておくということですが)、
データは property として保存するようにしておくと、お望みの
ことは可能です(ずっと保持する必要がないのならパラメーターで
渡してしまえばOKです)。

具体的にどのような処理をなさりたいのか不明ですので、一般的な
回答ですが。


ebi さんからのコメント
( Friday, January 24, 1997 23:38:57 )

田中さん、さっそくのご回答ありがとうございます(^^)

「パラメータでデータを受け渡しできる」とのことですが、
「tell application」で起動したスクリプトに、パラメータを
不可することは可能なんですか?
(要は、別プロセスとして起動したアップルスクリプトにパラメータを
渡したいのですが・・・(^^;))

田中求之 さんからのコメント
( Saturday, January 25, 1997 02:16:53 )

Tell application で起動したスクリプト、というのは、ようするにアプリケーション
形式になったスクリプト( StayOpen のアプレット)ですよね?

もちろん可能です。アプリケーション側に property なり、データを受け取るための
ハンドラーを用意しておけばいいのです。

property であれば、直接変更できますし、ハンドラーの場合でしたらメッセージを
送るだけのことです。

アプリケーションになっていても、あくまでも AppleScript のオブジェクトなの
ですから、スクリプト・オブジェクトなどと全く同じように扱えます。


簡単な例を示します。以下のスクリプトを StayOpen (実行後終了しない)のアプリ
ケーションとしてセーブしてください。名前は Bob にでもしておいてください。

---
property lastPeople : ""

on hello(name)
  activate me
  display dialog "Hello, " & name
  if lastPeople is not "" then
    display dialog "Do you know " & lastPeople & "?"
  end if
  set lastPeople to name
end hello

---

で、Bob をたち上げておいて、スクリプトエディタから

 tell application "Bob" to hello("Tanaka")

とやってみてください。

また、何度か試した後で、

set people to lastPeople of application "Bob"

も試してみてください。

ebi さんからのコメント
( Saturday, January 25, 1997 12:49:05 )

回答ありがとうございました。

アプリケーション形態でもオブジェクトとして
扱えるという発想は、まったく頭にありませんでした。

どうもありがとうございました