第78回 PDFを保存する 2

こんにちは。エヌ・ケイ・カスタマイズの大村です。
暦の上ではディセンバーですね。< 古いですね。
12月といえば、私、個人的に、ここには書ききれないくらい、たくさんの思い出があるのですが、でも、ここに書くわけにはいきませんのでご了承ください(笑)。

さて、前回はPDFを保存する機能を見てみました。
FileMaker から直接PDFを生成することができることが分かりました。
今回は、もう少し深掘りして、どんなPDFを生成したいかを考えつつ、手順をスクリプトに落とし込んでいきましょう。

また、一通りの手順に加えて、機能的なスクリプトにするために、

といった、スクリプトステップを加えていきます。


前回のスクリプトのおさらい

前回作ったスクリプト


スクリプト終了後 画面が一覧画面のまま PDFの表示順が設定されていない


前回作ったスクリプトでは、いくつか問題がありました。その問題の解決法を考えてみましょう。

  • 処理終了後、画面が一覧表示のまま…。
    • 一連の処理が終わった後、元のレイアウトに戻るほうがわかりやすくなります。
  • 作成されたPDFのソートがされていない。
    • 例えば集計なら、適切な対象レコードがあって、それらがソートがなされていなければ集計タイプのフィールドも「集計」パートも正しい結果を表示できません。


これらを考慮したスクリプトをステップを、下記のように考えてみました。

  1. 「 タスク一覧」レイアウトから「集計タスク一覧」レイアウトに切り替える。
  2. 検索する(まずは全レコードとします)。
  3. ソートする。
  4. PDF を保存する。
  5. 元のレイアウトに戻る


それでは、作ってみましょう。

  1. スクリプトを変更します。前回作ったスクリプト「タスク集計PDF保存」を変更します。
  2. スクリプト編集パネルの最後の行の1つ下の行をクリックして反転します。
  3. [Enter]キーを1 回押下して行を作成します。
  1. [全レコードを表示]スクリプトステップを追加します
    1. 「全」と入力すると候補のスクリプトステップが表示されます。
    2. [↓]キーを押下して[全レコードを表示]に移動し[Enter]キーを押下します。
全レコードを表示を選択

  1. [Enter]キーを1 回押下して行を作成します。
  2. [レコードのソート]スクリプトステップを追加します。
    「ソート」と入力すると候補のスクリプトステップが表示されます。
    1. [↓]キーを押下して[レコードのソート]に移動し[Enter]キーを押下します。
    2. [スペース]キーを押下して ダイアログあり を オフ にします。
    3. 歯車が青枠になるように[→]キーで移動します。この状態で[スペース]キーを押下します。
    4. ソート順を指定します。
      1. ステータスの値一覧順
      2. 期限の昇順
ソート順の指定


  1. [レイアウト切り替え]スクリプトステップを加えて「元のレイアウト」のままにします。
  2. スクリプトステップの順番を並び替えます。


  1. スクリプトを保存して「タスク一覧」レイアウトで「集計タスクPDF」ボタンをクリックして動作を確認します。
    次のようになれば成功です。
    • 集計結果がPDF で保存できた
    • 内容が全レコードを対象とした集計がなされていた
    • レイアウトが「タスク一覧」のまま変わらなかった


ちょっと改善します。


スクリプトを変更します。1 行目に[ウインドウの固定]スクリプトステップを入力します。

[ウインドウの固定]スクリプトステップ


このスクリプトステップについて、簡単に解説します。このスクリプトステップは、スクリプトの実行中に、その過程をユーザに見せないようにするために使用します。スクリプトが終わると固定が自動的に解除されてウインドウの再表示が行われます。

スクリプトの途中、PDF 保存ダイアログの表示中に「集計タスク一覧」レイアウトが見えてしまうので、これをなくすのが目的です。
さきほどのスクリプトの1行目に、[ウインドウの固定]を追加します。


スクリプトを保存して「タスク一覧」レイアウトでボタンをクリックして動作を確認します。
レイアウトが、見た目上、「タスク一覧」のまま変わらなければ成功です。


カスタムダイアログを使う


さらに改善します。スクリプトを実行するとすぐにPDF 保存ダイアログが表示されますが、次のように事前に確認メッセージを出してキャンセルできるタイミングを用意します。

  1. PDF を保存するかユーザに確認する
  2. 「 タスク一覧」レイアウトから「集計タスク一覧」レイアウトに切り替える。
  3. 検索する(全レコードとします)。
  4. ソートする。
  5. PDF を保存する。
  6. 元のレイアウトに戻る


[カスタムダイアログを表示]スクリプトステップ


このスクリプトステップを使って、「PDFを保存するか、どうか」を、ユーザに確認しましょう。

スクリプトの実行時にユーザに、カスタムダイアログのボタン(3 つまで)をクリックさせ、どのボタンをクリックしたか、で意思を確認し、[If]スクリプトステップで切り分けます。

どのボタンが押されたのかは、関数で取り出して確認できます。Get(最終メッセージ選択)関数です。
1 つ目のボタンが押されると「1」、2 つ目は「2」、3 つ目は「3」を返します。

それでは、スクリプトを変更します。
カスタムダイアログのオプションは、次図も参照してください。

  • 「タイトル:」は、「PDF 保存の確認」
  • 「メッセージ:」は、「タスクの集計結果をPDF に保存しますか?」
  • 「デフォルトボタン」は、「保存する」で「データを確定」をオフ 
  • 「ボタン2」は、「しない」で「データを確定」をオフ 
  • 「ボタン3」は、なにも設定しない


スクリプトを保存し、ブラウズモードで動作を確認してください。
これまで加えて次のようになれば成功です。

  • カスタムダイアログが表示されて、「保存する」を選択するとスクリプト進む
  • カスタムダイアログが表示されて、「しない」を選択するとスクリプトが終了する


だいぶ良さそうです。しかし、もっと改善の余地があります。
PDF 保存ダイアログで「キャンセル」がクリックされると下図のように、
「レコードをPDFとして保存」が中止されました。このスクリプトを続行しますか?
というダイアログが表示されます。

キャンセルをクリックすると表示される標準のエラーメッージ


これは、FileMaker 標準のエラーメッセージです。このエラーへの対応をおこないます。PDF 保存をキャンセルする場合のために、スクリプトを改善します。

スクリプトステップに、[ユーザによる強制終了を許可[オフ]]を加えてください。


スクリプトを保存し、ブラウズモードで動作を確認してください。
これまでに加えて次のようになれば成功です。

  • PDF 保存ダイアログで「キャンセル」がクリックされてもエラーが表示されない
  • 「 タスク一覧」レイアウトに戻る

カスタムダイアログで「保存する」を選択しても、PDF を保存直前にキャンセルできるようになりました。

これで、「タスク集計結果」PDF ファイルの保存機能は完成です。
利用する上で、思い描いたような動作になったでしょうか?



さて、次回は、グラフを使った集計を行います。
グラフを生成する際にも、ソートが必要になります。右クリックからサクッとグラフを生成することも可能です。
次回もよろしくお願いします。