ワークフロービルダーにPowerPointエクスポート機能を追加する
のエンジニアリングに関するメールバッグ
エピソード8:最後の1マイル
システムエンジニアとして、時折、典型的な範囲からやや外れた興味深い質問に遭遇します。JMP使用方法について質問されることもあります。また、単に興味深い質問であれば、JMPで私たちが物事をそのように行う理由をより深く探る機会を与えてくれます。
この質問は数えきれないほど寄せられています。この件についてはメールの記録はありませんが、いくつか届いていると仮定しましょう。また、この件については、JMPコミュニティフォーラム.この話題を扱ったセミナーでは、必ずこの話題が出てくる。
さて、前置きはこれくらいにして、今日取り組むこの画期的な問題とは一体何でしょうか?タイトルにもあるように、PowerPointのエクスポート機能をWorkflow Builderに組み込む方法について解説します。
質問
のために私の場合、この質問はたいてい、Workflow Builderの便利な機能をすべて紹介した後に出てきます。Query Builderの実行結果をキャプチャする方法、時間のかかるデータクリーンアップ作業をボタンをクリックするだけで済ませる方法、意思決定者に提示したい重要なレポートを自動生成する方法などを説明しました。すると必ず、「PowerPointファイルにエクスポートするにはどうすればいいですか?」(またはそれに類する質問)が返ってくるのです。
答え
に正直に言うと、この件に関する私の回答にはこれまで満足していませんでした。それが、ブログに添付しているちょっとした資料を作成した動機の一つです。読者の皆様が、この質問に対する私の新しい回答の仕組みの詳細には興味がなく、ただそれを活用したいだけであれば、ブログに添付されているダウンロード方法の説明があるセクションまで読み飛ばしてください。
さて、以前この質問に対して私が提供した回答は、「Save Presentation() 関数のスクリプト索引に、カスタムステップとして追加できる例があります」というものでした。

でも、その答えがどうしても気に入らなかったんです。なぜそう思うのか長々と説明するのはやめておきますが、とにかく、あまり…まあ…JMPらしくないと思ったんです。とにかく、先日、もう二度と言わないと決心しました!もうたくさん!
私がやったことはこうです。
PowerPoint のエクスポートを作成する
でJMP 18、ワークフロービルダーは、if/else文やメッセージなどのサポートを追加しました。これらの2つの機能と、いくつかの難解なJSLのおかげで、これを動作させることができました。(サイドバー:JMPスクリプト索引 皆さん、それはあなたの友達です!
頭の中では、このステップには新しいプレゼンテーションファイルのエクスポート、または「プレゼンテーションの保存」関数の「追加」オプションを使用して既存のプレゼンテーションにスライドを追加する機能を含めたいと考えていました。そのためには、2つのことが必要でした。1つ目は、「プレゼンテーションの保存」ステップの2つのバージョンを切り替えるためのダイアログが必要であり、2つ目は、それらを切り替える方法が必要でした。
各ステップのロジックは簡単です。ワークフロービルダーで赤い三角形をクリックすると表示される詳細メニューからifステップとelseステップを追加し、ステップアクションタイムラインの「開始時」スロットに各ステップのメッセージを入力します。次に、メッセージで設定した変数に合わせて条件スクリプトを編集します。各ステップの手順を示す短いビデオを以下に掲載しました。
if文とelse文の設定が完了したら、赤い三角形のサブメニューに戻り、カスタムステップを追加して、if文とelse文のステップに移動できます。スクリーンショットでは、それぞれのステップの機能が分かりやすいように名前を変更してあります。

以下は、追加ステップで必要となるカスタムプロセスのスクリーンショットです。

新しいプレゼンテーションを作成する手順は以下のとおりです。


この方法を汎用的な解決策として機能させる秘訣は、カスタムステップの JSL、特に Current Report() 関数にあります。JSL を早期に学んだおかげで (JMP 教育チームの Di Michelson さんに感謝!)、JMP は特に指示しない限り、現在のウィンドウまたはオブジェクトに対して自動的にアクションを実行することを知っています。また、コードで変更しない限り、最後に作成されたオブジェクトが常に現在のオブジェクトになることも知っています。そのため、レポートを作成した後に構築中のステップ (つまり、if/else グループ) を配置すると、Current Report は作成したばかりのレポートになります。そして、Current Report() 関数はそのレポートへの参照を返します。その後、レポート参照を保持する変数を使用するだけで、その参照を Save Presentation に渡すことができます。
Pick File() と Pick Directory() は、ダイアログを自動的に生成し、パスを返します。Save Presentation() の引数でこれら 2 つのアイデアを組み合わせることで、ワークフロー内のステップの位置に基づいて、どのレポートに対して操作を行うべきかを判断できます。また、ユーザーにどのプレゼンテーションを更新したいか、またはどこに作成したいかを尋ねることもできます。
PowerPoint エクスポートを使用する
のためにコーディングセクションをスキップした皆さん、おかえりなさい!この記事のダウンロードセクションにあるzipファイルの中身を見てみましょう。中には3つのファイルが入っています。

PowerPointExport ファイルは、Workflow Builder の独立したステップで、プレゼンテーション ファイルへの追加と新規作成の両方が可能です。他の 2 つのステップは連携して動作し、後ほど詳しく説明する特定のケースに対応しています。まずは簡単なケースを見てみましょう。手順を示す短いビデオを作成しました。
さて、残りの2つのファイルについてです。ワークフローで複数のレポートが生成される場合があります。各レポートのプロンプトを毎回実行するのではなく、残りの2つのファイルは連携して動作します。PowerPointCreateステップにはプレゼンテーションファイルを作成するためのプロンプトが含まれており、同じワークフロー内のPowerPointAppendステップのすべてのインスタンスにそのファイルの場所を提供します。これにより、ユーザーからの直接的な入力をほとんど必要とせずに、完全なスライドデッキの作成を自動化できます。この状況に対応するワークフローの設定方法と結果がどのように表示されるかを示すビデオチュートリアルを以下に示します。
それでこれで完成です!コーディング不要でPowerPointがWorkflow Builderに対応しました。ポイント&クリック操作だけで、目の前の作業に集中し、データとインサイトを分析できます。まさにJMPらしいですね。 
ワークフロービルダーの「条件を追加...」と「例外を追加」オプションの素晴らしい例です!