JSL の結果を自動化して PowerPoint にカスタマイズする方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは皆さん 、
@ を自動化しようとしています。 分析全体を自動化することに成功しましたが、この最後のステップ、つまり、JSL によって生成された図と表を現在所有している既存の PowerPoint プレゼンテーションに保存/カスタマイズする方法を自動化する方法については、少し課題があります。 この質問は、以前に次の投稿でさまざまな方法で尋ねられたことを知っています。
- 分析を PowerPoint に保存する
- jslを使用してJMPからPowerPointにグラフを自動的に保存する方法
- 知恵を絞ってください...PowerPoint にエクスポートするスクリプト
- JMP 12 からの JMP 出力を組織の PowerPoint テンプレートに保存する方法
- ジャーナルの PowerPoint エクスポート
上記は、私が役立つと感じた最も関連性の高い投稿の一部ですが、(5) が最も関連性があると思いますが、回答されていません。 冗長性を犠牲にして、この状況に対処する最良の方法を提供できる人はいないでしょうか。 さらに詳しく説明すると、カスタム レポートがあるとします。各スライドにはさまざまな種類のグラフとテキストが含まれています。 図やグラフのほとんどは、私の JSL スクリプトで生成されています。 ただし、JSL で各スライドに必要なカスタマイズされた形式でグラフをプレゼンテーションにエクスポートする最良の方法は何でしょうか? 私が考えることができるオプションは次のとおりです。
- JMP データテーブルを Excel シートとして保存し、
- Excel でプロットを手動で生成し、コピーして Powerpoint に貼り付けます (現在実行中) - 非常に非効率的
- Excel シートを結合してグラフを生成し、Powerpoint に挿入する VBA マクロを作成します。VBA に習熟していません。このルートを追求したくありません。
- VBA コードを JSL で記述します - これも上記と同じ理由です - このルートを追求したくないです
- 図を保存する
- レポート - それから? JSL が必要なテンプレートで図を PowerPoint にエクスポートできることは知っていますが、これにより任意の書式設定が可能になりますか。もしよろしければ、リソースまたはコード スニペットを共有してください。
- 日記 - それから? 図を手動でコピーしてパワーポイントに貼り付ける必要がありますか?
これを行うために JSL を使用し、Excel を使用するのではなくレポート全体を JSL 内に保持したいと考えています。 親切にアドバイスをお願いします。
一番
ウダイ
Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法こんにちは。Windows に Python をインストールした後、上記のコードを実行しました。しかし、どういうわけか、これは何もロードせず、同じexample.pptxを開きます。 ディレクトリに example.png が作成されることがわかります。
この問題のデバッグをしていただけますか?
Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法この投稿に関する通知を受け取りましたが、3 年も経ったので、自分の投稿も更新しようと思いました。それ以来、PPT を作成するツールをいくつか構築し、手順 1 ~ 4 に従いました。私の場合、例外はステップ 5 で、代わりに pptx-ppt という Python ライブラリを使用します。他の人もいくつかの代替案を投稿しているようです (どうやら VBA を好む人はいないようです)。Python を使用する利点は、Python がオープン ソースであり、JMP 14 には新しい Python 接続フックがあるため、JSL から直接 Python を実行できることです。以下のコード例。
Names Default to Here(1);
//Created by msharp - 6/26/18
//Example script to generate a PPT presentation from a JSL report
//This takes advantage of python-pptx and the new Python hooks in JMP 14
//python-pptx installation:
//http://python-pptx.readthedocs.io/en/latest/user/install.html
//python-pptx quick start guide:
//http://python-pptx.readthedocs.io/en/latest/user/quickstart.html
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate( Y( :height ), X( :weight ) );
//Save Report as Picture
dir = "C:\TEMP\";
file = "example.png";
biv << Save Picture(dir || file, "png");
//Clean Up
biv << Close Window();
close(dt, nosave);
//Create PPT w/ Python
Python Init();
plog = Python Execute({dir, file}, {img_path, left, top, height},
"\[
from pptx import Presentation
from pptx.util import Inches
img_path = dir + file
prs = Presentation()
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
left = top = Inches(1)
pic = slide.shapes.add_picture(img_path, left, top)
left = Inches(5)
height = Inches(5.5)
pic = slide.shapes.add_picture(img_path, left, top, height=height)
prs.save(dir + 'example.pptx')
]\"
);
Python Term();
//Open PPT
open(dir || "example.pptx");Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法私の理解が正しければ、500 個のグラフがあり、これらすべてを事前に定義されたテンプレートの ppt に入れたいとします。これを達成するには、コードを変更し、insert コマンドと pic1.. コマンドを何度も繰り返す必要があります。もしそうなら、それは非常に非効率的に見えます。しかし、間違っている可能性もあります。Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法親愛なるウダイさん。
実際、Excel を使用して Powerpoint を作成するのは、データの取得元に関係なく、適切な方法です。 そして実際、これを行う方法についてのマニュアルがウェブ上に無数にあります。 残念ながら、これらのマニュアルは実際に必要なこと以外のことを行うため、ほとんどのマニュアルは少し不十分です。 そして、このコードを適応させるのは長い道のりになります。 このような問題を回避するために、と呼ばれるソフトウェアがあります。スライドファブこれにより、VBA を 1 行も使用せずに、Excel から Powerpoint プレゼンテーション全体を柔軟に作成できます。
したがって、1 つのアプローチは、JMP エクスポートを使用し、このデータに基づいて数式とグラフを作成し、数式を書き直すことなくこの生データをいつでも更新できるようにすることです。 その後、PowerPoint プレゼンテーションをテンプレートとして使用したり、ソフトウェアで最初から作成したりすることができます。次に、ソフトウェアは、Excel のどのデータを Powerpoint のどのグラフ/表/図形に入れる必要があるかを定義できます。 また、ある種の繰り返しがある場合 (たとえば、複数のシナリオで同じスライドを作成する)、それも定義できます。 基礎となるロジックが Excel 内の数式で作成されている場合は、データ主導のタイトル、コメント、さらにはストーリーライン全体を作成することも可能です。 ワンクリックするだけで、Powerpoint プレゼンテーションが自動的に作成されます。
したがって、これが私がお勧めする方法です;)
乾杯
イェンス
Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法これは非常に便利だと思い、これを中心に bash ラッパー スクリプトを作成しました。cygwin bash シェルから実行して、正しいアスペクト比で png を PowerPoint に自動ロードします。
ファイル: png2ppt
#!/bin/bash
TCODE=`date +%s`
LIST=`ls -1rt *.png *.PNG`
if [[ $LIST != "" ]] ; then
# p3icli Syntax, Help: http://p3icli.sourceforge.net/p3icli_help.html
# http://p3icli.sourceforge.net/jsl_example.html
# http://p3icli.sourceforge.net/
WPATH=`cygpath -w $PWD`'\'
rm -f $TCODE.p3icli
# no cap1
echo 'open template C:\Programs\cygwin\usr\local\bin\portfolio.pot' >> $TCODE.p3icli
picX=674
picY=378 #388 #348
for F in $LIST ; do
if [[ -f $F ]] ; then
res=`pngcheck $F | cut -f2 -d'(' | cut -f1 -d','`
#res=`exiv2 $F | grep -F 'Image size :' | cut -f2 -d':'`
resX=`echo $res | cut -f1 -dx`
resY=`echo $res | cut -f2 -dx`
let aspect=$resX*10000/$resY
acutoff=17771 #9.33/5.25=1.77
if [[ $aspect -gt $acutoff ]] ; then
scale=`awk "BEGIN {printf \"%.6f\n\", $resX/$picX}"`
else
scale=`awk "BEGIN {printf \"%.6f\n\", $resY/$picY}"`
fi
X=`awk "BEGIN {printf \"%.0f\n\", $resX/$scale}"`
Y=`awk "BEGIN {printf \"%.0f\n\", $resY/$scale}"`
TITLE=`echo $F | rev | cut -c5-99 | rev | tr '_' ' '`
echo "title "\"$TITLE\" >> $TCODE.p3icli
echo "pic1 $WPATH$F" >> $TCODE.p3icli
echo "pic1 size $X,$Y" >> $TCODE.p3icli
echo "sleep 155" >> $TCODE.p3icli
echo "duplicate template # create and move to next slide" >> $TCODE.p3icli
fi
done
echo "save as presentation $WPATH$TCODE.ppt" >> $TCODE.p3icli
echo "sleep 500" >> $TCODE.p3icli
echo "kill ppt save" >> $TCODE.p3icli
cmd /C p3icli -X -l $WPATH$TCODE".log" $WPATH$TCODE".p3icli"
rm -f $TCODE.p3icli
fi
Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法何年も前に、私の素晴らしい夫が、PowerPoint に画像をロードできるプログラム p3icli を作成しました。p3icli という名前は、その機能の頭字語です。 P低いP軟膏P絵私挿入するC命令するLイネ私インターフェース。プログラムはオープンソースであり、以下の最初のリンクからダウンロードできます。
P3ICLI (PowerPoint 画像挿入コマンド ライン インターフェイス) 。 ダウンロードする場合は、バイナリ配布を使用することをお勧めします。
私は次の場所にある特定の JSL 例を書きました。 http://p3icli.sourceforge.net/jsl_example.html 。これには次のものが含まれます。
- 最終的なプレゼンテーションのレイアウトを定義する、3 つの異なるスライドを含む、特別に作成された PowerPoint テンプレートへのリンク
- JSL スクリプトの例
- JMP サンプル データ Iris.jmp を開きます。
- 3 つのプラットフォームから JMP 出力を作成および保存します。平行プロット;散布図行列(splom) および Oneway (4 プロット、各応答対種)
- タイトル ページを作成し、プロットを PPTX テンプレートにロードする p3icli コマンドを書き込みます。
- JSLコマンドを使用してp3icliを実行しますプログラムを実行()
- JSL で作成されたテキスト ファイルが実行されると、このリンクに表示され、最後に
- 結果として得られる PowerPoint ファイルへのリンク。
p3icli コマンドは非常に簡単です。たとえば、
- スライドを挿入#テンプレートからファイルパス
- タイトル「テキストはあなたが提供します」
- 写真# ピクチャーパス{このコマンドはページ上に画像を配置します}
- キャップ# 「テキストを指定します」 {このコマンドは、テンプレートで定義されたテキスト ボックスにテキストを配置します}
私と多くの同僚はこれを使用して、数秒で数百のグラフをロードしました。PPTX 形状に画像を埋め込むと、形状が画像サイズ (ピクセル) に比例しない場合、歪んで見える可能性があります。 p3icli にはサイズを変更するコマンドがありますが、通常は歪みを生じないようにする 2 つの方法のいずれかを使用します: (1) JSL コマンドを使用して FrameBox のサイズを変更するか、保存する前にウィンドウのサイズを変更する、または (2) 前の応答のようなものを使用する新しいウィンドウを作成し、そのウィンドウをグラフとして保存し、スライドごとに 1 つの形状を持つテンプレートを使用します。
これには、テンプレートの作成方法に関する p3icli ドキュメントを少し読む必要があります。 ここにヒントがあります。 PPTX テンプレートを保存します。 それを開く。各図形を右クリックし、「図形の書式設定」を選択します。代替テキストを見てください。各図形には、pic1、pic2 などのタグがあります。また、テキストを配置する各図形の ALT TEXT は、cap1、cap2 などになります。つまり、要点は、レイアウトを定義し、次にグラフを保存し、その方法に関するコマンドを記述することです。どのグラフがどこに行くのか。ロゴとバックアップドキュメントを含むテンプレートを使用できることに注意してください。p3icli コマンドソース形式をコピーする派手なロゴやカラーリングなどはそのまま残ります。4 つの図形を含むテンプレートがあり、2 つだけを入力した場合、2 つの未使用の図形は表示されないことに注意してください。
このアプローチにより、大幅な柔軟性とカスタマイズが可能になり、p3icli ユーザーは、VBA よりもはるかに簡単なコマンドを使用して PPTX プレゼンテーションを手作業で読み込み、編集する何千時間も節約できました。
ちなみに、p3icli には GUI があり、p3i と呼ばれるもので、sourceforge.net Web サイトにあります。
Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法@msharp :
私がこれを正しく理解していて、あなたのアプローチ(1)を使用する場合、以下のサンプルコードを見てください。
NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
g1 = Expr(dt1 << Bivariate( Y( :height ), X( :weight ) ));
dt2 = Open("$SAMPLE_DATA/Bands Data.jmp");
g2 = Expr(dt2 << Distribution( Nominal Distribution( Column( :Name( "Banding?" ) ) ) ));
win = NewWindow("Reports from Two Tables", HListBox(g1, g2));
- 礼儀 :イアン@JMP
グラフをレポートにディスパッチするたびに、新しいレポートが作成され、これらすべてのレポートの参照を使用して、それらを結合してウィンドウの水平方向のコレクションまたは垂直方向のコレクションにする必要があります。
Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法PowerPoint へのスクリプトを自動化する作業はあまり行っていませんが、何度か考えました。私がとる手順は次のとおりです。
1) データを生成し、分析して、ユーザーが編集できるレポートにまとめる JSL スクリプトを作成します。(外れ値のフィルター、ピンラベルなど)
注: これが正しく構築されていれば、通常はここで作業を終了し、スナップショットの取得や PowerPoint の作成などをユーザーに任せます。いずれにせよ、プレゼンテーションの好みは人それぞれ異なりますし、次のステップが必ずしも私の当時の ROI を満たしているとは限りません。
2) レポートをタブに整理するか、エンド ユーザーが理解できる他の JSL レポート構造を別の PowerPoint ページに変換します。
3) ユーザーが JMP で編集を行った後に PowerPoint を生成するボタンをレポートに追加します。
4) JSL タブを画像としてエクスポートします。
5) JSL に PowerPoint VBA スクリプトを実行させ、画像を読み込んでプレゼンテーションを生成します。
JSL だけでなく、.ppt を生成できるプログラムはたくさんあります。私の経験では、それらはすべて不十分です。最適なレポートを作成するために最大限のカスタマイズが必要な場合は、PowerPoint 用の VBA を使用するのが最善です。これはスクリプト言語であり、他のスクリプト言語と同様に、その機能を適切に実行します。おそらく、PowerPoint 用の VBA を使用して素晴らしい統計分析アドインを作成することはできず (JSL に任せるのが最善です)、.ppt をカスタマイズすることはできないでしょうか?はい、それはうまくいきます。
Re: JSL の結果を自動化して PowerPoint にカスタマイズする方法ムシャープ、ピームローズ、クレイジ@JMP - 何かご意見は ?