みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
FileMaker Server12 : Mac mini Server OS X 10.8
FileMaker Pro12をWindows7にインストール
日々の入力・閲覧はWindows7 2台と、iPad、iPhone5の10台で利用しています。
ファイルメーカーのインストールされていないWindows XPの共有フォルダに、csvファイルが圧縮(lzh)されて保存されています。
1日1回、サーバーのMac miniからそのフォルダにアクセスして、圧縮ファイルを解凍して、csvファイルをファイルメーカーに取り込みたいのですがやり方がわかりません。
ファイルメーカーのヘルプには、以下のように説明されていました。
--------------------------------------------------------------------------
FileMaker Server スケジュールスクリプトで [レコードのインポート] スクリプトステップまたは [レコードのエクスポート] スクリプトステップを使用する場合は、次のことに注意してください。
• 指定されたファイルはすべて FileMaker Server ドキュメントフォルダ内、または FileMaker Server ドキュメントフォルダあるいはテンポラリフォルダのいずれかの子フォルダ内にある必要があります。 たとえば、以下はすべて .csv ファイルに対して有効なパスです。
<Documents>/file.csv
<Temporary Path>/file.csv
<Documents>/Folder1/file.csv
<Temporary Path>/Folder1/Folder2/Folder3/Folder4/file.csv
• ファイルに対して完全でないパスを指定した場合 (たとえば、
/Library/FileMaker Server/Data/Documents/<0 以上のディレクトリ>/<filename> ) は、テンポラリパスと同じであると評価されます。
• 「..」を含むパスはすべて無効とみなされます。
--------------------------------------------------------------------------
サーバーのスケジュールスクリプトを利用するためには、ファイルの選択、コピー、ペースト、解凍の部分までAppleScriptで書くのかな?と思っていますが、勉強を始めたばかりでつまづいてしまいました。
ネットの情報を参考に、下記のスクリプトで練習としてMac内のファイルはコピーできましたが、共有フォルダ内のファイルの場合はどう指定したらよいですか?
tell application "Finder"
set tgtFile to file "○○○.csv" of folder "□□□" of folder "△△△" of startup disk
duplicate tgtFile to folder "Documents" of folder "FileMaker Server" of folder "Library" of startup disk
end tell
それと、lzhファイルの解凍部分もわからないので教えて下さい。
よろしくお願いします。
startup disk の代りにディスク名を書けばいいと思うけど
lzhの解凍はmacではソフトを入れないと無理では?セキュリティ上廃れた形式なので、zipにできないの?
tim様
お返事ありがとうございます。
> startup disk の代りにディスク名を書けばいいと思うけど
startup diskのところに ”○○○PC” と書いてみましたが構文エラーになってしまいました。
共有フォルダのあるパソコン名ではダメだったのですが、どのように書いたらよいですか?
> lzhの解凍はmacではソフトを入れないと無理では?セキュリティ上廃れた形式なので、zipにできないの?
解凍ソフトをインストールして、そのソフトを起動する、ということですか?
lzhはお客さんの方で圧縮していますので、変更はしてもらえないと思います・・・。
お時間がございまいsたら、引き続きご指導よろしくお願いいたします。
lzhの解凍は
tell application "StuffIt Expander"
expand "/Volumes/ファイルのパス/ファイル名.lzh"
end tell
で、圧縮ファイルと同じ場所に解凍されます。
回答されたファイルを所定の場所に移動させればいいかな。
Offline
disk "ディスク名"
PCじゃなくディスク名(共有名)
yaya様
ご回答ありがとうございます。
「The Unarchiver」という解凍ソフトを入れたので、以下のように書いてみたのですが、エラーが出てしまいました。
tell application "The Unarchiver"
expand "/Volumes/共有フォルダ名/ファイル名.lzh"
end tell
エラーの内容は、expand の後ろの「"」にカーソルが当てられ、
「構文エラー end of line があるべきところですが、""が見つかりました」と表示しました。
lzhファイルをApplescriptのエディタにドラッグすると、パスが /Volumes/共有名/ファイル名.lzh となっています。
どこが間違っているのか、ネットでいろいろ検索してみたのですが、まだまだ知識がなくわかりませんでした。
申し訳ありませんが、もう少し教えていてただけないでしょうか?
宜しくお願いいたします。
tim様
ご回答ありがとうございます。
PCを指定しなくても共有名で探してもらえるんですね。
tell application "Finder"
set tgtFile to file "20140331.lzh" of "共有名"
duplicate tgtFile to folder "Documents" of folder "FileMaker Server" of folder "Library" of startup disk
end tell
上記の内容で試してみたところ、エラーが出てしまいました。
エラーの内容は、file "20140331.lzh" の部分が青くハイライトされ、
「AppleScriptエラー "20140331.lzh" のタイプを integer に変換できません。」
変数の型のことですか?
ネットで検索をしてみましたが、こちらもわからなかったので、恐れ入りますがもう一度教えていただけますようお願いいたします。
宜しくお願いいたします。
of "共有名"じゃなく of disk "共有名"
エラーの出方がおかしいけどこっちの問題
AppleScriptエディタで用語説明を開くと分かりますがThe Unarchiverを使うなら
tell application "The Unarchiver"
unarchive "/Volumes/共有フォルダ名/ファイル名.lzh"
end tell
です。手元で試してみましたが、毎回、環境設定ウィンドウが出てしまいますね。
Finderの方でもお悩みですが、パスは
"ディスク名:Library:FileMaker Server:Documents"
のように":"で繋いで書けますよ。
Offline
解凍が問題なら、Windows XPの共有フォルダに解凍してから入れておけば、Macでやる必要ないですよね。
tim様 yaya様
できました!できました〜!!
tim様ご指摘の of disk "共有名" も昨夜試してみて、違うエラーが出ていたのですが、どこかつづりをミスっていたのかもしてません。
lzhファイルはお客さんの方から提供されたAccessのシステムによって、圧縮したものを共有フォルダに保存される仕組みになっていてあまり自由がきかないんです^^;
yaya様ご指摘の「用語説明」も勉強になりました。
環境設定がいちいち出てしまうのは困るので、yaya様の教えて下さったStuffIt Expanderでばっちり解凍できました!
お二方には何度も重ねてご教示いただきまして、本当に感謝しています。
初めてAppleScriptというものに触れて、少々パニックを起こしましたがお二人のお陰で一歩進むことができました。
また行き詰まった時は相談させて下さい。
どうもありがとうございましたm(_ _)m
お世話になります。
その節はありがとうございました。
一度、解決した相談でしたが、続きのような質問なのでこちらに投稿させていただきました。
今回、またAppleScriptで行き詰まってしまったのでご指導をよろしくお願いします。
yaya様に教えていただいた「StuffIt Expander」での解凍に成功しまして、次は解凍後に圧縮ファイルを削除したいと思いまして、用語説明を参考に試してみたのですがうまくいきません。。。
用語説明には、以下のように記載されています。
---------------------------------------------------
expand v : Expand archives
expand list of file : item or list of archives to be expanded
[move originals to trash boolean] : after successful expansion, the archives will be moved to the trash (default is false)
---------------------------------------------------
それで、下記のようにやってみたのですが・・・
tell application "StuffIt Expander"
expand "/Library/FileMaker Server/Documents/" & Fname ← Fnameにファイル名を代入しています
set originals to Fname ← originals変数にファイル名を入れてみました
move originals to trash
end tell
エラー内容は、「error "StuffIt Expander でエラーが起きました:\"○○○.lzh\" は“move”メッセージを認識できません。" number -1708 from "○○○.lzh"」
スクリプトの書き方の問題で非常に初歩的な質問かも知れませんが、ご指導よろしくお願いいたします。
Offline
moveはfinderの用語なのでは?
違った
expand filename true
ということですね
ぽけ様
ありがとうございます。
違った
expand filename true
ということですね
すみません。
知識が足りず、教えていただいたことが理解できません(汗)
expand filename true と書けばよいということですか?
お手間をおかけして恐縮ですが、お時間がございましたら、引き続きご指導いただけますようお願いいたします。
Offline
横から失礼します。
ファイル削除の方は、あえて外部ASを使わずとも、FM標準の「フィールド内容のエキスポート」でできませんか?
フィールドを指定せずに目的のファイルパスあてに出力すれば、目的ファイルが削除されませんか。
(ただし、動作検証環境も共有ファイルへの適用経験もありません、アイディアだけでごめんなさい)
Offline
削除はその方が簡単でしょう。Applescriptが実行終わってから次のステップに行ってくれれば問題ないけど、どうだったかな。
expand が動詞(v)で、filenameのリストと、オプションでbooleanが引数という意味ですよね。用語辞書は今一文法が不明瞭なんで
ASもServerの事も分からないけど、スタンドアローン機で
tell application "StuffIt Expander"
set Fpath to "Macintosh HD:Users:ユーザ名:・・・・・"
expand Fpath as alias
end tell
tell application "Finder"
move Fpath to trash
end tell
とやったら動いたよ。
Offline
Hiro様 tim様 旅人様
お三方の皆様、お礼が遅くなってすみません。
「フィールド内容のエキスポート」ですか!今、ちょっと調べてみました。
そんなに快適な機能があるんですね。
後ほど、試してみたいと思います。
ありがとうございました。
旅人様の教えて下さった記述で出来ました!
ぽけ様がおっしゃっていた「moveはfinderの用語なのでは?」というのはそういうことだったんですね。
まだ全然、用語辞書も理解できなくてどうしようかと思っていましたが、本当に助かりました。
すっきりしました〜!
皆様、どうもありがとうございました。
今後ともご指導宜しくお願いします。
Offline
Pages: 1
[ Generated in 0.012 seconds, 9 queries executed - Memory usage: 614.97 KiB (Peak: 631.51 KiB) ]