見出し画像

FileMaker - Microsoft Word / Excel 連携

FileMaker Advent Calendar 2020 9日目の記事です。

さて、以前、Claris FileMaker Pro と Microsoft Word / Excel との連携の動画をアップしたのですが、中身の解説がされていなかったので、備忘録がわりに記載したいと思います。

360Works 様の Scribe というプラグインを使って、連携させます。

360Works Scribe プラグインの説明

「Scribe を使って、Microsoft Office や PDF ファイルの処理を自動化することができます。フォームの入力、画像の挿入、ドキュメントのバージョン間の変更点の強調表示、Microsoft Word や Excel のテーブル操作、Excel のテーブルセルからのメタデータの取得、PDF ファイルの安全性確保などが可能です。

Scribe 4 では、FileMaker オブジェクトフィールド内の PDF をマージしたり、スプライスしたり、FileMaker で OCR を実行したりすることができます。」

と記載されています。

今回は、FileMaker Pro と Microsoft Word / Excel の連携についてです。

Scribe プラグインのダウンロード

上記の URL から、Download Demo をクリックして、ダウンロードのページに移動します。

スクリーンショット 2020-12-09 1.28.06

デモバージョン ( Free ) をダンロードします。「製品は、ライセンスキーが登録されるまでデモモードで動作します。デモモードの間は、FileMaker(サーバー展開の場合は FileMaker Server)を起動するたびに、製品は 2 時間実行されます。

2 時間のデモ期間を更新するには、FileMaker を終了して再起動することができますが、有効期限はありません。デモは期間中は完全に機能します。」と記載されています。

2 時間経ったら、FileMaker Pro を再起動すれば、期限なく使える状態です。( 詳細は大元のサイトの規約等をご確認ください。 )

スクリーンショット 2020-12-09 1.29.43

ダウンロードされた Zip ファイルを解凍して、自分に合った OS のファイルをコピーして、FileMaker Pro のプラグイン用のフォルダに移動させます。

画像3

FileMaker Pro のプラグイン用のフォルダは次の URL を参照にしてください。

Windows の場合: C:¥users¥ユーザ名¥AppData¥Local¥FileMaker¥FileMaker Pro¥19.0¥Extensions¥

macOS の場合: Macintosh HD/ユーザ/ユーザ名/ライブラリ/Application Support/FileMaker/FileMaker Pro/19.0/Extensions


画像4

FileMaker  Pro の設定

FileMaker Pro の環境設定を開き、360Works Scribe プラグインを有効にします。

画像5

これで、FileMaker Pro の設定は完了です。

フィールドの準備

今回は、Title、日付、備考のフィールドを作成し、後で Word 内のデータを置換できるようにフィールドのコメントに、[Title]、[日付]、[備考]と入力しておきます。

連携したいファイルを入れられるように、オリジナルファイルというオブジェクトフィールドと、変換されたファイルというオブジェクトフィールドを追加しておきます。

画像6

Microsoft Word の準備

Microsoft Word の文章の中に、FileMaker のデータで置換しておきたい文字列を追加しておきます。今回は、[Title]、[日付]、[備考]の 3 つになります。

画像7

FileMaker の準備

上記の Microsoft Word のファイルをオリジナルファイルのフィールドに挿入しておきます。

置換したい文字列をそれぞれ入力しておきます。

画像8

スクリプトを作成

# 
変数を設定 [ $LicenseInfo ; 値: ScribeLicenseInfo ] 
変数を設定 [ $Timestamp ; 値: GetAsTimestamp ( 	Substitute ( GetValue ( $LicenseInfo ; 5 ) ; "Expires on: " ; "" ) ) ] 
変数を設定 [ $Type ; 値: GetValue ( $LicenseInfo ; 3 ) ] 
# 
# 
If [ $LicenseInfo = "?" ] 
	変数を設定 [ $URL ; 値: "https://360works.com/filemaker-pdf-plugin/" ] 
	カスタムダイアログを表示 [ "プラグイン確認" ; List ( "プラグインがインストールされていません。" ; "次の URL よりダウンロードしてください。" ) ; $URL ] 
	現在のスクリプト終了 [ テキスト結果: False ] 
Else If [ $Timestamp < Get ( タイムスタンプ ) ] 
	カスタムダイアログを表示 [ "ライセンス確認" ; List ( 	"ライセンスが過ぎています。" ; 	"" ) ] 
	現在のスクリプト終了 [ テキスト結果: False ] 
Else If [ IsEmpty ( FileMakerToOffice::オリジナルファイル ) ] 
	カスタムダイアログを表示 [ "ファイル確認" ; "ファイルが存在しません。" ] 
	現在のスクリプト終了 [ テキスト結果: False ] 
End If
# 
# オリジナルのファイルをテンポラリに出力する。
変数を設定 [ $Name ; 値: GetContainerAttribute ( FileMakerToOffice::オリジナルファイル ; "filename" ) ] 
変数を設定 [ $path ; 値: Get ( テンポラリパス ) & Get ( UUID ) & $Name ] 
フィールド内容のエクスポート [ FileMakerToOffice::オリジナルファイル ; 「$path」 ; フォルダを作成: オフ ] 
変数を設定 [ $ScribeDocLoad ; 値: ScribeDocLoad ( $path ) ] 
# 
# 変換する文字列を取得する。
変数を設定 [ $FieldNames ; 値: FieldNames ( Get ( ファイル名 ) ; Get ( レイアウト名 ) ) ] 
変数を設定 [ $max ; 値: ValueCount ( $FieldNames ) ] 
Loop
	Exit Loop If [ Let ( $i = $i + 1 ; $i > $max ) ] 
	変数を設定 [ $fieldName ; 値: GetValue ( $FieldNames ; $i ) ] 
	変数を設定 [ $Comment ; 値: FieldComment ( Get ( ファイル名 ) ; $fieldName ) ] 
	If [ not IsEmpty ( $Comment ) ] 
		# 変更する内容
		変数を設定 [ $ScribeDocSubstitute ; 値: ScribeDocSubstitute ( 	$Comment ; 	Evaluate ( 		Case ( 			PatternCount ( $fieldName ; "::" ) = 			0 ; ( Get ( レイアウトテーブル名 ) & "::" & $fieldName ) ; 			$fieldName 		) 	) ) ] 
		# 変更する内容はここまで
	End If
End Loop
フィールド設定 [ FileMakerToOffice::変換されたファイル ; ScribeDocSaveContainer ( $Name ) ] 
フィールド内容のエクスポート [ FileMakerToOffice::変換されたファイル ; 「$path」 ; 自動的に開く ; フォルダを作成: オフ ] 
# 

画像10

結果

スクリプトを実行すると、置換されたファイルが表示されます。

画像10


本家のドキュメントには、もっとシンプルに記載されています。ScribeDocLoad でフィールドを指定できるようです。素晴らしい!

#load the document first
ScribeDocLoad[Container Or URL: myTable::myDoc]

#replace the placeholders in the document with information from FileMaker
ScribeDocSubstitute[Search Text: "CUSTOMERNAME";Replace Text:Customer::Name]
ScribeDocSubstitute[Search Text: "ACCOUNTNUMBER";Replace Text:Accounts::Number]
ScribeDocSubstitute[Search Text: "ACCOUNTBALANCE";Replace Text:Account::Balance]
ScribeDocSubstitute[Search Text: "DUEDATE";Replace Text:Account::Due Date]

#Save the document to a container. You can also use ScribeDocSaveFile to save directly to the hard drive.
ScribeDocSaveContainer[Select;Result: Customer::Correspondence;New Name:""]

最後に

Microsoft Word や Excel は、非常に多くの企業で使われています。FileMaker を敬遠している企業の多くは、これら Microsoft Word や Excel を大量に保有しており、差込印刷など、さまざまなテクニックを用いて運用しています。

FileMaker と Microsoft Word や Excel の連携がシームレスにできれば、企業内でもうまく共存できるのではないか、と個人的には思っています。

Scribe プラグインは、個人であれば、約 1 万円、10 人までであれば、約 3 万円、それ以上の人数であれば、約 7 万円で購入できる。コストパフォーマンスを考えれば、すぐに元が取れると思う。( ライセンスについてご指摘いただきました。350さんありがとうございます! )

サンプルファイル

( 変数名が間違っていたので、再アップロードしました ( 2020/12/09 09:00 ) )



参考

参考資料は多い方が助かります。次の記事もご参照ください。


この記事が気に入ったらサポートをしてみませんか?