FileMaker 【23】出力と集計(PDF保存)

前回は、集計について学びました。
今回は集計を出力する方法としてPDF保存について学んでいきます。

PDF ファイルの保存機能を作成します👍

PDF保存をスクリプトで実行

「集計結果を PDF で保存したい」場合のスクリプトを設定していきます。

●スクリプトの作成

1、shift ⌘ S [スクリプトワークスペース]
2、⌘ N スクリプトの新規作成。
3、スクリプトステップを入力。

レイアウト切り替え[集計タスク一覧(タスク管理)]
全レコードを表示 //…①
レコードのソート[記憶する ; ダイアログあり:オフ] //…②
レコードを PDF として保存[記憶する;ダイアログあり:オン;対象レコード] //…③
レイアウト切り替え[元のレイアウト])

①「集計タスク一覧」ページ上でソートが既に行われているか分からないため、まず全レコードを表示させて揃える。
②ここでソートする。[ソート順の指定][レコードのソート]を入力。
③[オプション指定]でPDFファイルに保存する内容を指定。「対象レコード」
PDF作成時は、ファイル名、保存場所の指定が必要なためダイアログはオン。

●ボタンバーに追加。ボタンを作成。
「タスク集計ダイアログ」

ページ固定

上記で、PDF保存をスクリプトで実行する設定を行いました。
現在、レイアウトが「集計タスク一覧」ページに切り替わり、ファイル保存が行われている。

PDFファイルを作成するためだけなら、わざわざレイアウトを確認しなくても良いはず❗

スクリプトステップを修正します。

ウインドウの固定 //…①
レイアウト切り替え[集計タスク一覧(タスク管理)]
全レコードを表示
レコードのソート[記憶する;ダイアログあり:オフ]
レコードを PDF として保存[記憶する;ダイアログあり:オン;対象レコード]
レイアウト切り替え[元のレイアウト])

️①[ウインドウの固定] >>> スクリプトで行なっている処理を、ユーザーに見えないように、元のレイアウトを固定したまま処理を実行する。

カスタムダイアログ

ユーザーの間違えによって、不要なファイルの作成を行わないようにしたい。
そこで、カスタムダイアログ確認する設定を行います。(ボタンをクリックした場合、本当にPDFファイルを作るかどうかの確認をする)

スクリプトステップを修正します。

スタムダイアログを表示["PDF 保存の確認 " ; " タスクの集計結果を PDF に保存しますか? "] //…①
If[Get(最終メッセージ選択) = 1] //…②
ウインドウの固定
レイアウト切り替え[集計タスク一覧(タスク管理)]
全レコードを表示
レコードのソート[記憶する;ダイアログあり:オフ]
レコードを PDF として保存[記憶する;ダイアログあり:オン;対象レコード]
 レイアウト切り替え[元のレイアウト])
Else
End If //…③

①ギアマーク⚙をクリック。
[カスタムダイアログを表示]のダイアログが表示。
・「タイトル:」を「PDF 保存の確認」
・「メッセージ:」を「タスクの集計結果を PDF に保存しますか?」
・「デフォルトボタン」を「保存する」「データを確定」を オフ 
・「ボタン 2」を 「しない」「データを確定」を オフ 

②「保存する」「しない」を[If]スクリプトステップで切り分ける。
If オプション設定で[計算式の指定] 「保存する」を選択した場合という式。

Get ( 最終メッセージ選択 ) = 1 //最終メッセージが1(デフォルトボタン)の場合

③1以外が押されたら、何もせずにスクリプトを終える。

カスタムダイアログによって、ユーザーに選択してもらう。
[Get(最終メッセージ選択) ]とセットで使用する。

強制終了を許可

現在問題点が1つあります。
ユーザーがスクリプトステップを強制終了した場合、「集計タスク一覧」画面が表示された状態になってしまいます。本来なら、画面遷移してない状態の「タスク一覧」画面が表示されることが望ましいです。


強制現在、「タスク集計ダイアログ」ボタンをクリックすると、カスタムダイアログが表示され「タスクの集計結果を PDF に保存しますか?」「保存する」「しない」が選択できます。
「保存する」をクリックして進めた場合。


次にPDFファイルの名前、保存場所などを設定するダイアログが現れます。
そこで再び「キャンセル」「保存」の選択が現れます
「キャンセル」をクリックすると新たなダイアログが表示されます。

デフォルトのダイアログで「このスクリプトを続行しますか?」との問いに
「キャンセル」「続行」が選択できます。

ここで「キャンセル」をクリックするとスクリプト自体が強制終了されてしまうので、「集計タスク一覧」画面が表示されることになってしまいます。

ユーザによる強制終了の設定を加えることで解消します。

スクリプトステップを修正します。

ユーザによる強制終了を許可[オフ] //…①
カスタムダイアログを表示["PDF 保存の確認 ";" タスクの集計結果を PDF
に保存しますか? "]
If[Get(最終メッセージ選択) = 1]
  ウインドウの固定
  レイアウト切り替え[集計タスク一覧(タスク管理)]
  全レコードを表示
  レコードのソート[記憶する;ダイアログあり:オフ]
  レコードを PDF として保存[記憶する;ダイアログあり:オン;対象レコード]
  レイアウト切り替え[元のレイアウト])
Else
End If

①を加えることで、ユーザーにスクリプトの強制終了ができないように設定します。
↓↓↓
すると、PDFファイルの名前、保存場所などを設定するダイアログで「キャンセル」をクリックしてもスクリプトがそのまま続行され、希望通り画面遷移してない状態の「タスク一覧」画面が表示されます。

コメント

タイトルとURLをコピーしました