みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境:Win10-64bit、FM15-64bit
不動産系のポータルサイトから昨日の更新分の物件情報を抽出する仕組みを作っておりまして、
ログインから検索・一覧表示までは出来たのですが、
一覧から詳細ページの表示がうまくいきません。
関連するフォームの部分のHTMLが、
<form name="In030001_BukkenKenSyousaiForm" method="post" action="/reinsip/in0300/in030001_init.do" target="【物件の番号(数字)が入ってます】">
<input type="hidden" name="bukkenNo" value="【物件の番号(数字)が入ってます】">
<input type="hidden" name="dataSyurui" value="1">
<input type="hidden" name="kaiinInfoShow" value="1">
<input type="hidden" name="senimotoKubun" value="4">
</form>
となってまして、
一覧から詳細へ飛ぶためのクリックする部分が、
<a class="linkBlue" href="#" onclick="openBukkenSyousai( 【物件の番号(数字)が入ってます】 , 3 ); return false;">【物件の番号(数字)が入ってます】</a>
となっています。
<head>内の関連してそうなJSは、
// 物件詳細
function openBukkenSyousai(bukkenNo){
document.In030001_BukkenKenSyousaiForm.bukkenNo.value = bukkenNo;
document.In030001_BukkenKenSyousaiForm.dataSyurui.value = '1';
document.In030001_BukkenKenSyousaiForm.kaiinInfoShow.value = document.In020001_BukkenKensakuKekkaItiranForm.kaiinInfoShow.value;
// 読み込み中であれば、処理は行わない
if (_openModelessIntervalId != null) {
return;
}
_openModelessWindow = window.open( "",bukkenNo , "width=1010,height=660,status=yes,resizable=yes,scrollbars=1,location=no,top=0,left=0" );
// 別ウィンドウが使用可能になるまで別ウィンドウの状態を監視する
_openModelessIntervalId = setInterval(submitModeless, 100);
document.In030001_BukkenKenSyousaiForm.action = contextPath + '/in0300/in030001_init.do';
document.In030001_BukkenKenSyousaiForm.target=bukkenNo;
document.In030001_BukkenKenSyousaiForm.submit();
}
となっています。
WEBビューアに対してURLへ移動で、
"javascript:function f(){【この中にいろいろ入れて試している】};f();"
↑上記のように試しているのですがうまく物件の番号をクリックしてWEBビューア内に表示する事が出来ない状態です。
手動で物件の番号をクリックもしてみたのですが、
IEが起動してそっちに表示されてしまいますし、再度ログインが必要になってしまいます。
なので可能であれば同じWEBビューア内で何とか表示をしたいと思っています。
JSの知識が未熟な為簡単な事を理解できていないのかもしれませんが、
ご存知の方がいらっしゃいましたらご教示頂けませんでしょうか・・・。
何卒宜しくお願い致します。
Offline
良く分かりませんが、
Formのtarget要素だけ.value="-self"へ変更してSubmit()させれば良いかな。
でも、オリジナルが別ウインドウで開くようになっているので、
システム的に何か問題が生じませんか?
Offline
お返事遅くなりすみません。
上記で試してみたところ、エラーなく動かすことが出来ました。
同様の方法で図面の保存ボタンをクリックさせ、
特定の場所(社内サーバーの物件番号がフォルダ名となっている場所など)に保存させたいのですが、
ファイルのダウンロードというダイヤログが出てしまい、
どうしても手動で保存先を選ばなければいけない状態です。
ダイヤログを表示させず、決まった場所に保存させる事は出来るものなのでしょうか・・・
重ね重ねの質問で申し訳ございませんが、
何卒宜しくお願い致します。
Offline
IEブラウズエンジンの仕様のようなので無理でないかな。(解除設定が有るか不明ですが)
POSTクエリ送信でファイルダウンロードできる外部「なでしこ」などで
代用することも考えられますが、その場合は認証の継承問題が課題かも。
Offline
回答本当にありがとうございます。
なんとか実現できないものか・・・・
.doでURLがないのでそのままオブジェクトフィールドに貼付・・・もできないですよね・・・?
Offline
ちょっと閃いたのですが、手動操作で各ステップを試して貰えますか?
・目的図面を画面表示させた状態で、
・その図面ソースのファイル形式(拡張子)を調べ、
・FMオブジェクトフィールドでサポートする形式かをチェック、
・もしそうなら、その図面ソースのURLをクリップボードへコピー、
・「URLから挿入」のURLにペーストしてスクリプト実行してみて、
・挿入に成功したら、「フィールド内容のエキスポート」で、
・目的外部サーバへファイル出力できるかを試してみる。
Last edited by Hiro (2017-08-22 14:07:46)
Offline
おお・・・出来そうなオーラを感じます。
挿入さえ成功すればオブジェクト自体の保存先をサーバーにしておけばエクスポートしなくても良さそうなので、
すごく良いです・・!
図面自体はpdfなのですが、
WEBビューアに表示させれますでしょうか・・?
先ほどのものと同様にターゲット部分を.value=\"-self\";
としてみたのですが、
やはりダウンロードのダイアログが出ましてWEBビューアには表示されないようです。
一応ソース載せておきます。
どうかお助け下さい・・・汗
【JS】
function zumenDownloadFromIcon(bukkenNo){
document.getElementById('errorArea').style.display='none';
document.In020001_BukkenKensakuKekkaItiranForm.seiyakuFlg.value = '0';
document.In020001_BukkenKensakuKekkaItiranForm.bukkenNo.value = bukkenNo;
document.In020001_BukkenKensakuKekkaItiranForm.action= contextPath + "/in0200/in020001_zumenDownload.do";
document.In020001_BukkenKensakuKekkaItiranForm.target=""; ←.value=\"-self\";に変えて実行してます。
document.In020001_BukkenKensakuKekkaItiranForm.submit();
}
【実行ボタン】
<a href="#" onclick="zumenDownloadFromIcon( 物件の番号(数字)が入ってます】 , 3 ); return false;"><img src="/reinsip/images/zumen.gif" border="0"></a><br>
※imgの部分はクリック用のただのボタン画像です。
通常のブラウザでも表示しようにもクリックしたらすぐにダウンロードが開始されてしまうようで、
それを開いても保存場所がもうすでにローカルになってしまいます・・。
何卒よろしくお願い致します。
Last edited by korokoro (2017-08-22 14:24:09)
Offline
第一のステップ、
>・目的図面を画面表示させた状態で、
図面が表示されたページがないのですか?
ページ全体の一部分に図面表示、も含め、
このページ画面が大前提のアイデアです。
【補足】>#9に対して
このページ画面とは、このWebサイト内のページの、
Webビューア表示画面という意味です。
Last edited by Hiro (2017-08-22 15:07:52)
Offline
今無理やりIEで開くでやってみたところ、
キャッシュの時のURLが分かりました。
file:///C:/Users/ユーザ名/AppData/Local/Microsoft/Windows/INetCache/IE/AEV0R0D1/zumen.pdf
↑上記でしたらオブジェクトフィールドに張り付ける事が出来ました。
ただ開くを利用した場合、
クロームの画面に開かれてしまうので、
これはWEBビューアへの表示は難しそうでしょうか?
もしくはクロームで開いてもいいのですが、
その開いた画面を都度自動で閉じれれば問題ないのですが・・・。
あとキャッシュの場合は都度「AEV0R0D1」の部分がランダムで変化するようで指定は難しいかもしれない・・・です。
Last edited by korokoro (2017-08-22 14:51:32)
Offline
以下は、PowerShell の SendKeys でFileMakerのファイルを挿入ダイアログのキーを叩くサンプルです。
修正すれば、ファイルダウンロード ダイアログのキーを叩けるとは思いますが、安定動作は、難しいでしょう。
PowerShell の SendKeys で強引に指定フォルダを表示するサンプルです。
スクリプト:「ファイルを挿入」の前に
スクリプト:「Event を送信」でPowerShellを実行します。FileMaker のスクリプト
Event を送信 [「aevt」; 「odoc」; 対象アプリケーションを手前に表示[OFF]
計算"powershell -WindowStyle Hidden -Command " & Quote ( " add-type -AssemblyName System.Windows.Forms; $wShell=new-object -comobject wscript.shell; $bool=$wShell.AppActivate('ファイルを挿入') ; start-sleep -Milliseconds 500; if($bool) { $wShell.SendKeys('%N') ; [System.Windows.Forms.SendKeys]::SendWait('" & Aテーブル名::フォルダパス & "'); [System.Windows.Forms.SendKeys]::SendWait('{ENTER}'); } ")
WEBビューアでのWEBスクレイピングは、中々難しいですよ。
もう少し柔軟にブラウザ操作を行いたい場合は、以下のようなモノもあります。
Internet Explorer の操作が可能です。認証有りサイトのファイルの自動ダウンロードは、無理でしょう。(たぶん)
Operate_ie - ScriptMakerPS | FileMaker Plugin for Windows : https://sites.google.com/site/scriptmakerps/operate_ie
今のところ、ブラウザ操作で最強なのは、Selenium でしょう。
FileMakerと連携させたい場合は、以下があります。
FileMaker + Google ChromeでWEBスクレイピング! : http://qbxxdp.blogspot.jp/2016/08/filem … meweb.html
Offline
Pages: 1
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 549.08 KiB (Peak: 569.98 KiB) ]