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

アイドルプログラムの作成について御質問

発言者:koby
( Date Friday, May 08, 1998 12:21:08 )


過去にお世話になりました、kobyです。

今回、悩んでいるので、できれば、また、アドバイスいただけませんか?

「一番のネックになっているのはファイルが存在するかしないかをチェック
 するscriptの記述方法と、外部からEasyBBSのフォルダにファイルを追加
 しても平気なんでしょうか?」

というものです。具体的には、ファイルメーカで(MacとWin関係なしに)書か
れている日報のcsv(もしくはTAB区切り)のデータを特定のフォルダに一気に
溜めておき、アクセスがあったときにそのファイル群を既存のファイルに追加
して表示したいのです。

元を辿れば、WinでもMacでも利用されているファイルメーカの日報データをそ
のままEasyBBSの会議室のHTML形式に書き出したかった、というのが発端です。
ところが、ファイルメーカではレコードの書き出しのファイル名にフィールド
の内容が繁栄できないため常にファイル名が決められているのでMSG_日付時
刻.htmlという名前で書き出せません。

そこで、MacのAppleScriptと思い付いたのですが、Windowsではそのscriptが機
能しないため、2つの方法が思い付きました。常にアイドルリングでフォルダ
を監視して特定のファイルが書かれたときにサーバ側で処理する方法と、アク
セスがあったときのみサーバ側で処理する方法です。

そこで、一番のネックになっているのはファイルが存在するかしないかを
チェックする部分です。
これをAppleScriptの中で処理するにはどうすればいいんでしょうか?

また、こういう形でWeb上で追加しないページをEasyBBSのフォルダにポイっと
加えていっても平気なんでしょうか?
今のところ問題なく使えていますが・・・。

P.S. 日報がファイルメーカになっているのは日報の印刷の形がある程度
   手書きの頃から決められれているのでその形に似せるためです。

重松修 さんからのコメント
( Friday, May 08, 1998 13:07:02 )

on idleっていうのがあったような気がしますけど、これで、1分間隔とかで
特定のワークフォルダの中身を見るのじゃまずいんですか。
ファイルがあるかどうかは、ただ単に強引に開きにいって、try〜on error
でトラップすればいいのでは。

先に変換するか、その都度変換するかは、どの程度利用されるかによるん
じゃあないでしょうか?AppleScriptで毎回やってると時間の無駄だから、
最初の1回だけ変換して、それをリソースフォークに書き出せば、次から、
リソースを見て、データがなければ、変換をするってのでいいと思います。
この方法なら使いもしないデータを変換するために、定期的にチェックする
作業を行わなくて済むから。

P.S.「ご質問」って日本語変な気が。「私の_お_名前」っていわないのと
同じで。。。(^^;;

田中求之 さんからのコメント
( Friday, May 08, 1998 13:39:46 )

まず、EasyBBS は、使用中であってもファイルの追加やフォルダー(会議室)の追加は
自在にできます。

次にファイルの存在の確認ですが、一番まっとうな方法は Finder に exits で確認
させる方法で、

tell application "Finder"
  set myFlg to exists (file myFile)
end tell

で、もし myFile が存在すれば myFlg は true になります。

しかし、Finder を呼んでいると処理が遅くなりますので、手っ取り早いのはファイルに
アクセスするコマンド(osax)を呼んでエラーになるかどうかを調べます。スクリプトは
長くなりますが、

try
  info for (file myFile)
  set myFlg to true
on error errMsg number errNum
  if errNum = -43 then
    set myFlg to false
  else
    error errMsg number errNum
  end if
end try

で、myFlg に myFile が存在しているかどうかが返ります。

田中求之 さんからのコメント
( Friday, May 08, 1998 13:44:37 )

(勝手ながら Koby さんの発言に改行を入れさせてもらいました)

>ところが、ファイルメーカではレコードの書き出しのファイル名にフィールド
>の内容が繁栄できないため

AppleScript で書き出すようにすれば可能ですよ (^_^)

koby さんからのコメント
( Friday, May 08, 1998 20:44:03 )

みなさん、お答え有り難うございます。

はじめは、ファイルメーカにAppleScriptを喋らせて解決だったのですが、なんと、Winでファイルを開くと
まったく利用できない(当然ですが)ので、サーバに処理させる事を思い付いたわけなんです。

で、AppleScript上でエラーを取りたかったのです。で、書き込んでから、tryを思い出して取り掛かったのですが、
どうやったら&エラー番号とか取り出したりするのか、全然資料が無かったので悩んでいたところです。
ありがとうございます。
田中さんの記述が簡単(コピーで利用できそう)なんでまずそれでやってみます。リソースの方も興味あるので
余力ができしだい利用してみたいです。

ところで、AppleScirptではinfo for (file myFile)のfileとかas stringとかっていう強制的な型宣言をよく見かけま
すが、この辺がいまいち分からないんです。特にchar 1 of last wordみたいな処理をさせようと思うとき、
|変数| で定義されるもの、as text, as string, 等々、いまいちわからないんです。
何かいい参考書ありますか?

koby

koby さんからのコメント
( Friday, May 08, 1998 20:47:47 )

そうそう、EasyBBS、やはり横からデータを追加しても大丈夫でしたか。
これでBBSの活用法が一層広がりました。日報をBBSにしておくと、
各自の行動へのフォローがメンバー全体でできるので便利になります。
忙しくないときはみんなを集めて話し合えるのですが、忙しくなると
朝会って夕方まで詳しく相談している時間が取れないとき多いですから。

ちなみに、EasyBBSのアプリ版を利用させてもらってます。
有り難うございます。

田中求之 さんからのコメント
( Saturday, May 09, 1998 01:05:40 )

>何かいい参考書ありますか?

英語でよければ、アップルのサイトからダウンロードできる AppleScript Language
Guide でしょうね。

これの翻訳が国内で発売されていますので、お金に余裕があるなら持っておいて
損はないと思います。ただ、確か安くなかったように思うのですが… それと翻訳のデキ
については見たことがないので知りません。

読んでいて楽しい本ではありませんが、なんといっても公式ガイドですから、必要な
ことはきちんと書かれています。

koby さんからのコメント
( Saturday, May 09, 1998 12:36:19 )

;英語でよければ、アップルのサイトからダウンロードできる AppleScript LanguageGuide でしょうね。

ありがとうございます。探してみます。

結局、AppleScriptで1分おきにフォルダをチェックするという方法をとり、色分けしてMSGファイルにすることにしました。
プログラムも完成し、無事目的のデータができました。有り難うございました。

田中求之 さんからのコメント
( Saturday, May 09, 1998 19:56:17 )

AppleScript Languge Guide は以下のページです。

→  AppleScript Language Guide