みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
予約が入ると共有フォルダに随時一件ずつcsvファイルが作成されるようになっております。
そのcsvファイルをファイルメーカーのレコードへインポートしたいです。
ファイル名は「RV20210106174022」という感じで、
全て違うファイル名の予約の日時が入るようになっています。
よろしくお願いいたします。
インポートした後のことは考えなくていいのでしたら、フォルダーをインポートするステップを設定すればいいだけです。
Offline
Shinさんがおっしゃるように、エクスポートのファイル名のステップを応用して、ステップを設定すればいいと思います。
ご回答ありがとうございます。
スクリプトステップの「レコードのインポート」を選択し、
「データソースを指定」→フォルダを選択で問題ないでしょうか。
ファイルタイプは、「ピクチャとムービーファイル」または「テキストファイル」しかありません。
また、
「インポート順の指定」を選択すると、
「指定されたフォルダには、指定されたファイルタイプのファイルが見つかりませんでした。」
とメッセージが出てしまいます
嗚呼、フォルダーをインポートでは、csv ファイルは対応していません。
VB とか PoserShell や、AppleScript で、サフィックスを書き換えて対応するか、MBS プラグインの File.List とか BaseElement の BE_FileListFolder を使ってフォルダー内のファイルリストを取得すればいいのかも。
ファイル名がわかればパスが生成できれば、そのファイルを普通にインポートできます。
Last edited by Shin (2021-03-16 12:14:49)
Offline
macOSならフォルダアクションを設定して、AppleScriptを実行→FileMaker、
WindowsならPowerShellでフォルダを監視して、fmpプロトコル→FileMaker、
のようなカンジで、作成されたファイルのパスを取得できます。
OSは、何でしょう...
Offline
Shinさん
やはり一筋縄ではいかないのですね(+_+)
その辺のところもうちょっと勉強してみます。
qb_dpさん
OSは、winです。
プログラム知識が必要そうですね。
こんなカンジです。
フォルダを監視する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
監視スクリプトが直接FMを実行してしまうと、FMで他の処理中に支障があるので、どうですかね。
以下経由にすると良いカンジになるのですが...
MeowNotify
https://fm-aid.com/meownotify
Offline
以下のようにすると、"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
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
コレもひとつ載せときます。
最後に確認したタイムスタンプをどこかに保存しておけば、それ以降に更新されたファイルを取得できます。
変数を設定 [ $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
qb_dpさん、himadaneeさん、Shinさん
返信ありがとうございます。
申し訳ありません、話についていけてません。
PoserShellやMBSプラグインをFMへインストール?補助?するソフトという認識でいいでしょうか?
またこういったソフトは有料なのでしょうか?
監視とはなんでしょうか?
PowerShell
は無料です。Windows を直接コントロールするもので、ある意味、何でもできます。リンクを開いてみてみてください。
MBSプラグイン
は有料ですが試用できます。
FileMaker の機能を拡張するためのもので、関数が増えますが、その中で色々な動きが追加できます。例えば今回の話題では、フォルダーに入っているファイル名のリストを取得できます。
フォルダー監視は、今回の話題では、フォルダーにファイルが追加された際に、それを自動的に検知してプログラムを動かせば、仕事が終わりますね。その意味です。
Offline
Shinさん
ありがとうございます。
どちらもダウンロードしてみましたが、使い方が分かりません。
MBSプラグインは、FileMakerの環境設定で追加して、
スクリプトワークスペースのステップに表示されるようになると調べて分かったのですが、
思うようにいきません。
FIleMaker の再起動が必要ですよ。
また、表示されるのはスクリプトではなく、計算の中の関数の一番下です。
Last edited by Shin (2021-03-24 13:31:44)
Offline
Shinさん
再起動が必要なのはわかりましたが、
2行目の意味がよく分かりません。
> スクリプトワークスペースのステップに表示されるようになると調べて分かったのですが、
スクリプトステップの追加ではありません。関数が追加されますので、計算式を設定するダイアログで表示されます。ただ、内部の引数は、プラグインの説明を読んでください。
Offline
フォルダを監視してファイルが追加されれば通知 » FileMakerスクリプトを実行できるサンプルを公開したので、
よろしければ試してみては。
フォルダを監視 » ファイル追加 » 通知(tost) » FileMakerスクリプトを実行
https://qbxxdp.blogspot.com/2021/03/fil … rtost.html
Offline
フィールドのオプション→「入力値の自動化」計算値→指定
とういう認識で合っていますか?
そもそもの話になりますが、FileMakerPro15でも作動は可能ですか?
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 612.43 KiB (Peak: 629.34 KiB) ]