初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-07-11 22:13:31

FM初心者
Guest

スクリプトによるフォルダの作成方法

初めまして。
他のサイトで「スクリプトからのフォルダの作成」方法を見つけました。
下記のスクリプトが記載されていたので、試してみたところ確かに動作しました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
<フォルダの存在を調べたり、存在しなければ作るという操作をする方法>
存在しなければ作り、存在すれば現状維持(上書きされない)になります。
スクリプト
Eventを送信
計算
"cmd /c md " & Quote ( Replace ( Get ( ドキュメントパス ) ; 1 ; 1 ; "" ) & "fld1" )
でドキュメントに fld1 というフォルダが作られます。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
これを私が作りたい、記録簿に応用したいのですが、初心者でスクリプトの書き方がよくわかりません。
欲しいスクリプトは
「フォルダ」ボタンを押すと、記録簿の通し番号(受付番号(例:1)など)の番号のフォルダを「(ドキュメントパス)」
から探し、存在すれば「1」フォルダを開く、なければ「フォルダを作成しますか?(Y/N)」となり、「Y」を選ぶと、
「1」のフォルダを作成し、そのフォルダを開く。
記録簿のデーター毎でPDFや写真等のファイルを保存しておきたい場合に利用したいと考えています。
スクリプト以外で簡単な方法があるようでしたら、そちらでも結構ですのでご教示願えませんでしょうか?

よろしくお願いいたします。FM13pro win7

#2 2014-07-12 00:45:14

旅人
Member

Re: スクリプトによるフォルダの作成方法

Winは全く分からないも同然だけど
フォルダパスをフィールドに入れておくと「URLを開く」ステップでそのフォルダ
が開きます。無い場合は作ってから開く事になるので
エラー処理 オン
URLを開く--パスを入れたフィールドを指定
If[Get(最終エラー)≠0]
  フォルダを作るためのEvent送信のステップ
  スクリプト実行---このスクリプト--出来たてフォルダを開くため
End If
としたらいいみたい。

Offline

#3 2014-07-12 02:31:43

Hiro
Member

Re: スクリプトによるフォルダの作成方法

コマンドプロンプトからだと、md ~ && rd ~ && explorer ~ と3コマンドを1行にマトメられたけど、
FMからだと2Event送信しないとダメみたい。

2ステップスクリプトで、
●Eventを送信[「aevt」;「odoc」;
    "cmd /c md " & Quote(Replace(Get(ドキュメントパス);1;1;"") & 受付番号 & "/dumy")  &
      " && cmd /c rd " & Quote(Replace(Get(ドキュメントパス);1;1;"") & 受付番号 & "/dumy")

●Eventを送信[「aevt」;「odoc」;
    "iexplore " & Quote(Replace(Get(ドキュメントパス);1;1;"") & 受付番号)

Last edited by Hiro (2014-07-12 02:32:54)

Offline

#4 2014-07-14 12:49:04

FM初心者
Guest

Re: スクリプトによるフォルダの作成方法

旅人様・Hiro様 早々のお答えを頂き、感激しています。ありがとうございます。

週末~パソコンを触れる環境ではなかったので、お礼が遅くなり申し訳ございません。
内容の方ですが、まだまだファイルメーカーを使い切っていませんので、旅人様の答えについては、まだ試せていませんが、
時間を取って確認させていただきたいと思います。

Hiro様の答えが、元々のスクリプトに似ているので、試してみましたが、なぜか「受付番号」が青色反転になり「指定されたテーブルが見つかりません。」のエラーとなります。私のファイルのテーブルの設定が悪いのでしょうか??
「受付番号」のフィールドと、フォルダ作成用ボタンのみのファイルをテスト用に作成しました。受付番号テーブルはテキスト・数字どちらにしても結果は同じです。

ためしに、1行目だけで”受付番号”(””で囲むとエラーは出ない→下記の構文)として実行すると、マイドキュメント内に「受付番号」フォルダができて、その配下に「dumy」フォルダができました。
受付番号だけのフォルダが欲しいのですが・・・””で囲むと当然「受付番号」ってフォルダができますよね。
"cmd /c md " & Quote ( Replace ( Get ( ドキュメントパス ) ; 1 ; 1 ; "" ) & "受付番号" & "/dumy")
どのような設定にすればよいのか?よくわかりません。お手数ですが、もう少しおつきあいをお願いできますでしょうか?よろしくお願いいたします。

#5 2014-07-14 12:55:27

tim
Guest

Re: スクリプトによるフォルダの作成方法

>「受付番号」が青色反転になり「指定されたテーブルが見つかりません。」
フィールド名でなくテーブル名と認識されてるんで、そのままフィールドリストからダブルクリックで選択して置き換えればOK

#6 2014-07-14 13:05:51

Hiro
Member

Re: スクリプトによるフォルダの作成方法

スクリプト中のフィールド指定は、完全修飾形式でないといけないので「テーブル名::フィールド名」にして下さい。
Event送信の計算式の設定ダイヤログからフィールド指定すれば自動的に完全修飾形式になるはずなのですが...?

Offline

#7 2014-07-14 19:16:41

FM初心者
Guest

Re: スクリプトによるフォルダの作成方法

tim様
Hiro様

いつも直ぐにお答えをいただきありがとうございます。

また、お忙しい中、私の超ミスにおつきあい及びお答えを下さり本当にありがとうございます。
「テーブル名::フィールド名」なのですね。。。(tim様→フィールドリストから選べたのですね。すみません)
動作しました。(^0^)アリガトウゴザイマス
ほぼ解決に近いのですが、もう少し甘えさせてください。

Hiro様のお答えの中で「FMからだと2Event送信しないとダメみたい。」との記載がありますね。
1つのボタン(Eventを送信)で2つのEventを続けられる方法ってあるのでしょうか?
上記のテストがOKだったのは、ボタンを2つ作って順番に押しました。

それと、フォルダが無いときは「メッセージボックス」で「フォルダを作成しますか?(Y/N)」と聞いてくれるような機能はFileMakerにはありませんでしょうか?

色々と教えてもらってばかりで申し訳ございませんが、よろしくお願いいたします。

#8 2014-07-15 00:59:37

Hiro
Member

Re: スクリプトによるフォルダの作成方法

mdは中間フォルダを自動補足(無ければ作成、あればスルー)してくれる機能を利用しています。
中間フォルダを目的フォルダとして、その子フォルダ=dummyをmdで仮作成、すぐさまこのdummyフォルダをrdで削除することで、結果的に目的フォルダだけが補足(無ければ作成)できるわけです。最後にその目的フォルダをexploreで開いて完成です。

> お答えの中で「FMからだと2Event送信しないとダメみたい。」との記載がありますね。
> 1つのボタン(Eventを送信)で2つのEventを続けられる方法ってあるのでしょうか?
> 上記のテストがOKだったのは、ボタンを2つ作って順番に押しました。

1つのボタンにスクリプト実行を貼り付けて、その実行スクリプトに#3レスの2つのEvent送信ステップを設定すれば、ボタン一発です。

> フォルダが無いときは「メッセージボックス」で「フォルダを作成しますか?(Y/N)」と聞いてくれるような機能はFileMakerにはありませんでしょうか?
Event送信の戻り値を受け取る機能はFMにはありません。
そこで、その必要性の無いよう、mdで子dummyフォルダパスを偽装する多少トリッキーな方法で自動解消しているソリューションです。

Offline

#9 2014-07-15 09:28:31

FM初心者
Guest

Re: スクリプトによるフォルダの作成方法

Hiro様

お世話になります。
教えていただいた通り設定しましたらうまく動作しました。
また、スクリプトの解説までありがとうございます。

色々とお時間を取らせてしまって申し訳ないです。

FileMakerを使いこなせるよう努力していきますので、今後ともよろしくお願いいたします。

旅人様・tim様もありがとうございました。

#10 2014-07-15 09:49:01

tim
Guest

Re: スクリプトによるフォルダの作成方法

ドキュメントパスだったら、関数で取得できる。

変数を設定 [$dpl; 値:Get ( ドキュメントパス一覧 )]
変数を設定 [$path; 値:Get ( ドキュメントパス )  & メイン::受付番号]
If [FilterValues ( $dpl ; $path & "/" ) = ""]
カスタムダイアログを表示 ["ない"; "作成しますか?"]
If [Get ( 最終メッセージ選択 ) = 2]
現在のスクリプト終了 []
End If
End If
変数を設定 [$path; 値:"\"" & Substitute ( Replace ( $path ; 1 ; 1 ; "" ) ; "/" ; "\\" ) & "\""]
Event を送信 [「aevt」; 「odoc」; "cmd /c md " & $path & " & explorer " & $path]

#11 2014-07-15 17:59:20

FM初心者
Guest

Re: スクリプトによるフォルダの作成方法

tim 様

ありがとうございます。完璧です。\(^o^)/
恐ろしいほど、私が欲しいものが出来上がりました。m(_ _)mアリガトウゴザイマス

ただ、それぞれの関数・スクリプトが何をするための物か理解ができていません。
これから、自分自身で勉強をすすめて理解できるようになれるよう頑張りたいと思います。
「関数・スクリプト」に関する書籍を購入して、フォルダの作成方法等を自分なりに探したのですが、これらの書籍に載っている情報はあくまでもFileMaker内(レイアウト内)で行える内容がほとんどであり、皆様に教えていただいた内容は記載されていません。

tim 様を含め他の方にもお願いがあります。
これらのスクリプトや関数について勉強をするにはどのような書籍を購入すればよろしいでしょうか??
もし、お勧めの書籍やセミナー等ございましたらお教え頂けますでしょうか?

何から何まで質問で申し訳ございません。
思ったものが出来上がる(全て、皆様にお願いしましたが・・・(^^; )、FileMakerにすごく興味が湧いてきましたもので。。。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 548.45 KiB (Peak: 568.98 KiB) ]