みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
よろしくおねがいします。
FileMaker16です。
スクリプトで、
ウェブページを全選択してコピーし、その内容(テキスト)をフィールドに取り込みたいと考えています。
WEBビューアを配置したレイアウトに切り替えて、全選択してコピー、
とスクリプトを組んでみたのですがうまくいきません。
なにか良い方法はありますでしょうか。
Offline
OS環境は WinとMac 何れですか?
Win環境ならJavaScript:スキームが通るので何とかなるかも!
Offline
HTML(ソースコード)の取得の場合は、以下。
GetLayoutObjectAttribute ("Web ビューア" ; "content")
GetLayoutObjectAttribute : https://fmhelp.filemaker.com/help/16/fm … ibute.html
Offline
最終的にはServerでやらせたいと考えています。
ServerはMacです。
Offline
qb_dp様、ありがとうございます。
qb_dp様の方法でHTML(ソースコード)の取得はうまくいったのですが、
ソースコードを除いたテキストが取得したいです。
Offline
Macはダメなので、クライアントのWinマシンで取得代行させるとの前提で、
WinのWebビューアの表示HTMLページからテキストだけを取得する方法です。
JavaScriptコード
「HTML<body>内のテキスト部分のみを抜き出してクリップボードへ一時保管する」
javascript:
window.clipboardData.clearData('Text');
function getText() {
var obj=document.getElementsByTagName('body');
var txt=obj[0].innerText;
window.clipboardData.setData('Text',txt);
alert(txt);
};
getText();
をグローバルフィールド「JSコード」へグローバル保管しておき、
「Webビューアを設定;URLへ移動」の URL欄へ上のGフィールド値を代入。実行。
JSコードが実行されると結果テキストがクリップボードへコピーされていますから、
それを目的フィールドへペーストして完成です。
この一連の流れをスクリプト化すれば自動取得も可能です。(自動の際は alert(txt); 行は削除すること)
なお、結果戻り値をクリップボード経由にする利点は、文字化け・改行コード問題などに悩む事がないからです。
Last edited by Hiro (2018-06-13 03:10:57)
Offline
Web ビューア は、FileMaker Server上ではレンダリングしないので使えません。
HTMLソースの取得は、「スクリプト:URL から挿入」で行えます。
HTMLタグは、以下の式で取り除けます。
Evaluate ( Substitute ( Quote ( テキスト ) ; ["<" ; "\" & Evaluate ( Let ( _ = \""] ; [">" ; " \" ; \"\" ) ) & \""] ) )
[解決] <>と<>内を取り除きたい/ 初心者のFileMaker pro Q&A: https://fm-aid.com/bbs2/viewtopic.php?pid=16900#p16900
Offline
Hiro様、qb_dp様
ありがとうございます。
毎日特定のWEBサイトからある値を取り出して、
ルールに沿って計算後、
営業さんにメールをするという業務があります。
これを何とか全自動でできないかと考えているのです。
上記のようなサイトから買取価格の金とPtの一部を取り出し、
ルールに沿って計算した値をメールします。
取り出し方は実はかなり前にHiro様に教えていただいたもので、
全コピーしたWEBページから特定の値を取り出す方法を使っています。
Let([
$txt=フィールド;
$kys=List(“K24”;”K18";"Pt900";"Pt850"); //←ココに、必要なキーワードを希望表示順で、好きなだけ列挙
$i=0;
/**主式**/
$fnc="Case($i=ValueCount($kys); $res;
Let([
$i=$i+1;
$k=GetValue($kys;$i);
$res=List($res; Let([$j=0;$v=\"\"];Evaluate($sub)))
]; Evaluate($fnc))
)";
/**副式**/
$sub="Case($v<>\"\" or $j=ValueCount($txt); $v;
Let([
$j=$j+1;
$itm=GetValue($txt;$j);
$v=Case(PatternCount($itm;$k);$itm)
];Evaluate($sub))
)"
];
Evaluate($fnc)
)
WEBサイトをコピペするだけでメール本文が作成できる状態ですので、
現時点でもFileMakerで随分省力化はできているのですが、
毎日決まった時刻に決まったアドレスへメールする、
という部分もFileMakerServerを使って実現できればと思ったのです。
クライアントにWinマシンはありますが、
残念ながら、必ず起動しているとは限らない状態です。
>qb_dp様
ソースコードに値が含まれていませんので、
今回の場合は単純にHTMLタグを取り除く方法は使えないようです。
Offline
このサイトのWeb画面に表示の価格情報は、
外部JavaScriptファイルのプログラムで生成・レンダリング表示しています。
そのため、HTMLソースを幾ら見ても目的の価格情報の記述は一切ありません。
ただ、外部JavaScriptのEncludeリンクがあるだけです。
やはり、ココはJavaScriptでJSレンダリング結果をコピーする方法が、
最善・簡便な策でしょう。
Macサーバ+他の解法 を考えるより、Winマシンを工面するだけの方が断然安易かと...!
Windows版FMPに限定ですが、思いのほか出来栄えの良いサンプルができたのでアップします。
全自動で、テキストデータのみをダウンロードし、元本Web「表組み」デザインを
そのまま FM上で忠実に再現します。
●サンプル「日次価格情報ダウンロード.fmp12」 → h ttps://yahoo.jp/box/wKE5Uq → https://1drv.ms/u/s!AlaCGhTKTWEOgZpc1LN … A?e=EpQa4L
Last edited by Hiro (2021-07-24 04:15:27)
Offline
Hiro様、サンプルまで作っていただきありがとうございます。
Winマシンで確認いたしました。
現在のスクリプトと合わせて、より自動化したいと思います。
本当にありがとうございました。
Offline
Google Chromeのバージョン59 以降を使うとコマンドラインでレンダリング後(JavaScript実行後)のHTMLソースを取得することができます。
Windowsの場合、
コマンド例:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --enable-logging --headless --disable-gpu --dump-dom https://www.net-japan.co.jp/
戻り値を取得するために以下を使用します。
ProcessMakerTL(プロセス メーカー ティー エル)
https://sites.google.com/site/processmakertl/download
.起動方法 - ProcessMakerTL
https://sites.google.com/site/processma … oot-method
ProcessMakerTL.exe を起動し、
スクリプト:URL から挿入 で値を取得
URL から挿入 [選択; ダイアログなし; PMTL::Result;
"http://127.0.0.1:8081/?target="
& GetAsURLEncoded ( "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" )
&"&Arguments="
& GetAsURLEncoded ( "--headless --disable-gpu --dump-dom https://www.net-japan.co.jp/" )
]
※chrome.exeのパスは、ご自身の環境に合わせてください。
Mac OSX の場合、
Mac OSX で、しかもFileMaker Server で実行する場合は、色々と準備が必要です。
戻り値を取得するために上記同様以下を使用します。
ProcessMakerTL(プロセス メーカー ティー エル)
※Mac OS X で、ProcessMakerTL.exe を動かすには、"Mono" が必要です。
https://sites.google.com/site/processmakertl/mac-os-x
バックグラウンドでProcessMakerTL.exe を実行。以下を参照してください。
Mac起動時にProcessMakerTL.exeが起動します。
https://sites.google.com/site/processma … method-osx
スクリプト:URL から挿入 で値を取得
URL から挿入 [選択; ダイアログなし; PMTL::Result;
"http://127.0.0.1:8081/?target="
& GetAsURLEncoded ( "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" )
&"&Arguments="
& GetAsURLEncoded ( "--headless --disable-gpu --dump-dom https://www.net-japan.co.jp/" )
]
Offline
Pages: 1
[ Generated in 0.072 seconds, 9 queries executed - Memory usage: 551.88 KiB (Peak: 572.79 KiB) ]