読者です 読者をやめる 読者になる 読者になる

データサイエ「ソ」ティストは語る

データサイエンティストではない、パチもんのデータサイエ「ソ」ティストのブログ

RからPowerPointを操作して自動レポート作成環境を作る(1)R2PPTの導入

R ツール

(1)としたものの、続かないかもしれない。ただ、自分の業務上のニーズとして、可能な限り同じ作業の繰り返しを避けて、定型的なレポートは自動生成したい、というのがあるので、やりかたを調べてみた。

……knitr使えとか、RMarkdownがいいぞ、とかあるのだけど、残念ながらこのセカイPowerPointExcelで満たされている。なので、PowerPointに出力する。

RからPowerPointを操作するのに必要なもの

もちろんPowerPointは必要だが、他にいくつかのRパッケージを導入する。

R2PPTのインストール

R2PPTは普通にCRANからインストールする。

> install.packages("R2PPT")

RDCOMClientのインストール

RDCOMClientは、以前はCRANにあったようだが、現在は開発者のサイトで公開されている。Windows用のバイナリ版( http://www.omegahat.net/RDCOMClient/RDCOMClient_0.93-0.zip )をダウンロードして、RGuiのメニューからインストールすればよい。↓参考

datasciesotist.hatenablog.jp

あるいは、レポジトリを用意してくれているので、RToolsがインストールされていて、コンパイル可能な環境なら、以下のコマンドを実行すればよい。

> install.packages("RDCOMClient",repos="http://www.omegahat.net/R")

サイトには、http://www.omegahat.org と書いてあるが、実際のURLはhttp://www.omegahat.net なので、注意する。

R2PPTパッケージを読み込み、PowerPointを操作する

RDCOMClientパッケージは、PowerPoint以外にもDCOMでアクセス可能なさまざまなアプリケーションを操作可能だが、今回はPowerPointを操作することが目的なので、それに特化したR2PPTパッケージを使う。まずは普通にパッケージを読み込む。

> require(R2PPT)

R2PPTオブジェクトの初期化

まずはPowerPointを起動し、オブジェクトを作成する。以下のコードを実行する。

> myPPT<-PPT.Init(visible=T,method="RDCOMClient")

R2PPTパッケージはデフォルトでは rcom パッケージを使って通信しようとするが、rcom パッケージはすでに存在しないため、method オプションで RDCOMClient を指定する。これで、PowerPointが起動するはず。

f:id:data_sciesotist:20160701004458p:plain

あまり普段見ないが、スライドを作る前のPowerPointが起動する。

タイトルスライドを作成する

ここから、実際にRからスライドを操作していく。はじめに、1枚目のタイトルスライドを作成する。以下のコードを実行する。

> myPPT<-PPT.AddTitleSlide(myPPT,title="Rからパワポを操作するテスト",title.fontsize=28)

文面はなんでもよいが、日本語もちゃんと使える。他に、subtitle オプションもあり、同様に subtitle.fontsize などが指定できる。これで、1枚スライドが作成され、指定した文字列が入力される。

f:id:data_sciesotist:20160701004900p:plain

作成中のPowerPointスライドは別にRからしか触れないわけではないので、手でさらにカスタマイズすることもできる。

テンプレートの適用

企業や大学のテンプレートファイル(*.potx)がある場合、すでにあるスライドに適用できる。普段、手作業するときは、テンプレートファイルを開き、適当にいじってプレゼンファイル(*.pptx)として保存、という流れが多いと思うが、Rから操作する場合は逆で、少なくとも1ページは何かスライドを作って、そこにテンプレートを適用することになる。テンプレートファイルを用意したら、以下のコマンドを実行する。

> myPPT<-PPT.ApplyTemplate(myPPT,file="mytemplate.potx") # ファイル名は絶対・相対パスで指定

今回の例では、たまたまRのワーキングディレクトリにテンプレートファイルがあるのでファイル名だけを指定しているが、別の場所にファイルがある場合は、適宜絶対パスまたは相対パスで指定する。

すると、既存のスライドのデザインが変更される。

f:id:data_sciesotist:20160701005418p:plain

続く

ただこれだけだと全然嬉しくないが、今後Rで作ったグラフをスライドに貼り付けるなど、実用的な例を紹介していく予定。