初心者のFileMaker pro Q&A

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

1.ファイルメーカーで解らない事があればここで質問して下さい。

何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス

#1 2018-06-12 14:16:06

pon3
メンバー

[解決] WEBビューアに取り込んだウェブページを全コピー

よろしくおねがいします。
FileMaker16です。

スクリプトで、
ウェブページを全選択してコピーし、その内容(テキスト)をフィールドに取り込みたいと考えています。
WEBビューアを配置したレイアウトに切り替えて、全選択してコピー、
とスクリプトを組んでみたのですがうまくいきません。

なにか良い方法はありますでしょうか。

オフライン

#2 2018-06-12 14:29:51

Hiro
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

OS環境は WinとMac 何れですか?
Win環境ならJavaScript:スキームが通るので何とかなるかも!

オフライン

#3 2018-06-12 14:37:46

qb_dp
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

HTML(ソースコード)の取得の場合は、以下。

GetLayoutObjectAttribute ("Web ビューア" ; "content")

GetLayoutObjectAttribute : https://fmhelp.filemaker.com/help/16/fm … ibute.html

オフライン

#4 2018-06-12 14:45:12

pon3
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

最終的にはServerでやらせたいと考えています。
ServerはMacです。

オフライン

#5 2018-06-12 15:08:13

pon3
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

qb_dp様、ありがとうございます。
qb_dp様の方法でHTML(ソースコード)の取得はうまくいったのですが、
ソースコードを除いたテキストが取得したいです。

オフライン

#6 2018-06-12 16:04:17

Hiro
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

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); 行は削除すること)
なお、結果戻り値をクリップボード経由にする利点は、文字化け・改行コード問題などに悩む事がないからです。

編集者 Hiro (2018-06-13 03:10:57)

オフライン

#7 2018-06-12 16:12:41

qb_dp
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

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

オフライン

#8 2018-06-14 13:31:50

pon3
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

Hiro様、qb_dp様
ありがとうございます。

毎日特定のWEBサイトからある値を取り出して、
ルールに沿って計算後、
営業さんにメールをするという業務があります。
これを何とか全自動でできないかと考えているのです。

www.net-japan.co.jp

上記のようなサイトから買取価格の金と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タグを取り除く方法は使えないようです。

オフライン

#9 2018-06-15 16:14:23

Hiro
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

このサイトのWeb画面に表示の価格情報は、
外部JavaScriptファイルのプログラムで生成・レンダリング表示しています。
そのため、HTMLソースを幾ら見ても目的の価格情報の記述は一切ありません。
ただ、外部JavaScriptのEncludeリンクがあるだけです。

やはり、ココはJavaScriptでJSレンダリング結果をコピーする方法が、
最善・簡便な策でしょう。
Macサーバ+他の解法 を考えるより、Winマシンを工面するだけの方が断然安易かと...!

Windows版FMPに限定ですが、思いのほか出来栄えの良いサンプルができたのでアップします。
全自動で、テキストデータのみをダウンロードし、元本Web「表組み」デザインを
そのまま FM上で忠実に再現します。

●サンプル「日次価格情報ダウンロード.fmp12」 → https://yahoo.jp/box/wKE5Uq

オフライン

#10 2018-06-20 10:25:58

pon3
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

Hiro様、サンプルまで作っていただきありがとうございます。

Winマシンで確認いたしました。
現在のスクリプトと合わせて、より自動化したいと思います。
本当にありがとうございました。

オフライン

#11 2018-06-20 17:47:24

qb_dp
メンバー

Re: [解決] WEBビューアに取り込んだウェブページを全コピー

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/" )
]

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer