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

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

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

You are not logged in.

Announcement

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


#1 2021-03-12 15:23:59

mms
Guest

複数あるcsvのインポート

予約が入ると共有フォルダに随時一件ずつcsvファイルが作成されるようになっております。
そのcsvファイルをファイルメーカーのレコードへインポートしたいです。

ファイル名は「RV20210106174022」という感じで、
全て違うファイル名の予約の日時が入るようになっています。

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

#2 2021-03-12 15:33:48

Shin
Member

Re: 複数あるcsvのインポート

インポートした後のことは考えなくていいのでしたら、フォルダーをインポートするステップを設定すればいいだけです。

Offline

#3 2021-03-12 22:52:29

abanku
Guest

Re: 複数あるcsvのインポート

Shinさんがおっしゃるように、エクスポートのファイル名のステップを応用して、ステップを設定すればいいと思います。

参考URL
https://notebook-takeshi0206.blogspot.c … maker.html

https://www.merges.co.jp/archives/2241

#4 2021-03-16 09:09:08

mms
Guest

Re: 複数あるcsvのインポート

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


スクリプトステップの「レコードのインポート」を選択し、
「データソースを指定」→フォルダを選択で問題ないでしょうか。

ファイルタイプは、「ピクチャとムービーファイル」または「テキストファイル」しかありません。
また、
「インポート順の指定」を選択すると、
「指定されたフォルダには、指定されたファイルタイプのファイルが見つかりませんでした。」
とメッセージが出てしまいます

#5 2021-03-16 12:03:44

Shin
Member

Re: 複数あるcsvのインポート

嗚呼、フォルダーをインポートでは、csv ファイルは対応していません。
VB とか PoserShell や、AppleScript で、サフィックスを書き換えて対応するか、MBS プラグインの File.List とか BaseElement の BE_FileListFolder を使ってフォルダー内のファイルリストを取得すればいいのかも。
ファイル名がわかればパスが生成できれば、そのファイルを普通にインポートできます。

Last edited by Shin (2021-03-16 12:14:49)

Offline

#6 2021-03-16 14:45:09

qb_dp
Member

Re: 複数あるcsvのインポート

macOSならフォルダアクションを設定して、AppleScriptを実行→FileMaker、
WindowsならPowerShellでフォルダを監視して、fmpプロトコル→FileMaker、
のようなカンジで、作成されたファイルのパスを取得できます。
OSは、何でしょう...

Offline

#7 2021-03-16 15:12:19

mms
Guest

Re: 複数あるcsvのインポート

Shinさん
やはり一筋縄ではいかないのですね(+_+)
その辺のところもうちょっと勉強してみます。

qb_dpさん
OSは、winです。
プログラム知識が必要そうですね。

#8 2021-03-16 18:19:45

qb_dp
Member

Re: 複数あるcsvのインポート

こんなカンジです。


フォルダを監視するPowerShell
FileSystemWatcher.ps1

$watcher = New-Object System.IO.FileSystemWatcher;
$watcher.Path = "D:\!TEMP";<#監視するフォルダ#>
$watcher.Filter = "*.*";
$watcher.IncludeSubdirectories = $true;
$watcher.EnableRaisingEvents = $true  ;
$action = { $path = $Event.SourceEventArgs.FullPath;
                $changeType = $Event.SourceEventArgs.ChangeType;
                $logline = "$(Get-Date), $changeType, $path";
                #Add-content $LogFilePath -value $logline -Encoding UTF8;
                Write-Host $logline;
                Start-Process ('fmp://$/FileSystemWatcher?script=receive&$Return='+$path);
              }    
Register-ObjectEvent $watcher "Created" -Action $action;
while ($true) {sleep 5};

'fmp://$/{ファイル名}?script={スクリプト名}&$Return='+$path

FileSystemWatcher.ps1を起動するバッチファイル
FileSystemWatcher.bat

cd %~dp0
powershell -windowstyle Minimized -NoProfile -ExecutionPolicy Unrestricted -File .\FileSystemWatcher.ps1

$watcher.Path = "D:\!TEMP";<#監視するフォルダ#> この部分を監視するフォルダに書き換え

FileSystemWatcher.ps1 と FileSystemWatcher.bat を同じフォルダへ保存し、FileSystemWatcher.bat をダブルクリックで監視開始

Offline

#9 2021-03-16 18:21:48

himadanee
Guest

Re: 複数あるcsvのインポート

監視スクリプトが直接FMを実行してしまうと、FMで他の処理中に支障があるので、どうですかね。

#10 2021-03-16 18:38:40

qb_dp
Member

Re: 複数あるcsvのインポート

以下経由にすると良いカンジになるのですが...
MeowNotify
https://fm-aid.com/meownotify

Offline

#11 2021-03-17 09:29:37

qb_dp
Member

Re: 複数あるcsvのインポート

以下のようにすると、"D:\log.txt" に追加されたファイルの情報が記録されます。それを読み込んでインポートするファイルを選定するとか。

FileSystemWatcher.ps1

$watcher = New-Object System.IO.FileSystemWatcher;
$watcher.Path = "D:\!TEMP";<#監視するフォルダ#>
$watcher.Filter = "*.*";
$watcher.IncludeSubdirectories = $true;
$watcher.EnableRaisingEvents = $true  ;
$action = { $path = $Event.SourceEventArgs.FullPath;
                $changeType = $Event.SourceEventArgs.ChangeType;
                $logline = "$(Get-Date), $changeType, $path";
                #Add-content $LogFilePath -value $logline -Encoding UTF8;
                Write-Host $logline;
                #Start-Process ('fmp://$/FileSystemWatcher?script=receive&$Return='+$path);
                Add-content "D:\log.txt" -value $logline -Encoding UTF8;
              }    
Register-ObjectEvent $watcher "Created" -Action $action;
while ($true) {sleep 5};

Offline

#12 2021-03-17 17:03:43

Shin
Member

Re: 複数あるcsvのインポート

MBSプラグインを使うと、簡単ですよ。デスクトップに Reservation というフォルダーがあり、そこにファイルが入っているのでしたら、

変数を設定 [ $path ; 値: MBS( "Folders.UserDesktop" ) & "/Reservation" 	// Windows では、"\Reservation" ] 
変数を設定 [ $FList ; 値: MBS( "Files.List"; $path ) ] 
変数を設定 [ $NList ; 値: ValueCount ( $FList ) ] 
Loop
	変数を設定 [ $FPath ; 値: $path &  "/" & GetValue ( $FList ; $NList ) // Windows では、"\"] 
	レコードのインポート [ ダイアログあり: オフ ; 「$FPath」 ] 
	Exit Loop If [ Let ( 	$NList = $NList - 1 ; 	$NList = 0 ) ] 
End Loop

というスクリプトで、全ファイルをインポートできます。
インポート済みのファイルをどうするかで後処理が変わりますが。

Last edited by Shin (2021-03-17 17:07:28)

Offline

#13 2021-03-18 10:10:24

qb_dp
Member

Re: 複数あるcsvのインポート

コレもひとつ載せときます。
最後に確認したタイムスタンプをどこかに保存しておけば、それ以降に更新されたファイルを取得できます。

変数を設定 [ $PS; 値:
Let([ ¢PS= "
$dateTime=[DateTime]::ParseExact('{更新日}','yyyy/MM/dd hh:mm:ss', $null);
$result=Get-ChildItem 'D:\!TEMP' -Recurse -File| Where-Object {$_.LastWriteTime -gt $dateTime}| Sort-Object LastWriteTime| ForEach-Object {@{LastWriteTime=$_.LastWriteTime.ToString('yyyy/MM/dd HH:mm:ss');FullName=$_.FullName}};
ConvertTo-Json $result;
"
];
Substitute ( ¢PS ; "{更新日}" ; "2021/03/17 08:22:33" )
) ]
変数を設定 [ $PathList; 値:SMPS_Exe( $PS ) ]

ScriptMakerPS | FileMaker Plugin for Windows
https://sites.google.com/site/scriptmakerps/home

Offline

#14 2021-03-18 14:29:14

mms
Guest

Re: 複数あるcsvのインポート

qb_dpさん、himadaneeさん、Shinさん
返信ありがとうございます。
申し訳ありません、話についていけてません。

PoserShellやMBSプラグインをFMへインストール?補助?するソフトという認識でいいでしょうか?
またこういったソフトは有料なのでしょうか?

監視とはなんでしょうか?

#15 2021-03-23 13:18:54

Shin
Member

Re: 複数あるcsvのインポート

PowerShell
は無料です。Windows を直接コントロールするもので、ある意味、何でもできます。リンクを開いてみてみてください。

MBSプラグイン
は有料ですが試用できます。
FileMaker の機能を拡張するためのもので、関数が増えますが、その中で色々な動きが追加できます。例えば今回の話題では、フォルダーに入っているファイル名のリストを取得できます。

フォルダー監視は、今回の話題では、フォルダーにファイルが追加された際に、それを自動的に検知してプログラムを動かせば、仕事が終わりますね。その意味です。

Offline

#16 2021-03-24 11:37:59

mms
Guest

Re: 複数あるcsvのインポート

Shinさん
ありがとうございます。
どちらもダウンロードしてみましたが、使い方が分かりません。

MBSプラグインは、FileMakerの環境設定で追加して、
スクリプトワークスペースのステップに表示されるようになると調べて分かったのですが、
思うようにいきません。

#17 2021-03-24 13:28:55

Shin
Member

Re: 複数あるcsvのインポート

FIleMaker の再起動が必要ですよ。
また、表示されるのはスクリプトではなく、計算の中の関数の一番下です。

Last edited by Shin (2021-03-24 13:31:44)

Offline

#18 2021-03-26 10:56:11

mms
Guest

Re: 複数あるcsvのインポート

Shinさん
再起動が必要なのはわかりましたが、
2行目の意味がよく分かりません。

#19 2021-03-26 12:19:41

Shin
Member

Re: 複数あるcsvのインポート

> スクリプトワークスペースのステップに表示されるようになると調べて分かったのですが、
スクリプトステップの追加ではありません。関数が追加されますので、計算式を設定するダイアログで表示されます。ただ、内部の引数は、プラグインの説明を読んでください。

Offline

#20 2021-03-29 13:18:17

qb_dp
Member

Re: 複数あるcsvのインポート

フォルダを監視してファイルが追加されれば通知 » FileMakerスクリプトを実行できるサンプルを公開したので、
よろしければ試してみては。

フォルダを監視 » ファイル追加 » 通知(tost) » FileMakerスクリプトを実行
https://qbxxdp.blogspot.com/2021/03/fil … rtost.html

Offline

#21 2021-03-30 11:22:38

mms
Guest

Re: 複数あるcsvのインポート

フィールドのオプション→「入力値の自動化」計算値→指定
とういう認識で合っていますか?

そもそもの話になりますが、FileMakerPro15でも作動は可能ですか?

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 11 queries executed - Memory usage: 608.56 KiB (Peak: 625.47 KiB) ]