ONLYOFFICEマクロで図形をグラフに置き換える方法
プレゼンテーションは、私たちの生活に欠かせないものとなっています。ビジネスミーティングであれ、学校のプロジェクトであれ、聴衆に自分の意見を提示するためにプレゼンテーションが必要です。100枚のスライドを調整するのは、少し面倒かもしれませんね。この記事では、ONLYOFFICEマクロを使ってこのタスクに取り組む方法をご紹介します。
この小さなマクロは、すべてのスライドで図形をグラフに置き換えます。先に進む前に、要素の位置について詳しくご説明します。行や列にインデックスで到達できるスプレッドシートとは異なり、プレゼンテーション要素はスライド上の位置によってのみターゲットにすることができます。要素は互いの上に配置されます。そしてそれは、すべての要素を配列にプッシュし、それを反復することによって、それらの位置を特定できることを意味します。
マクロの構築
そこでまず、Api.GetPresentation メソッドでアクティブなプレゼンテーションを対象にします。
var oPresentation = Api.GetPresentation();
次に、プレゼンテーションの各スライドを繰り返し処理する for-loop を追加します。ここで i はスライドの総数です。そして、インデックスとしてスライドを渡すことで、各スライドを取得します。
var oPresentation = Api.GetPresentation();
var oPresentation = Api.GetPresentation();
for (let i = 0; i < 10; i++) {
var oSlide = oPresentation.GetSlideByIndex(i);
}
その後、GetAllShapes メソッドを実行します。これは、スライド上のすべての図形を集めて、配列で返すものです。
var oPresentation = Api.GetPresentation();
for (let i = 0; i < 10; i++) {
var oSlide = oPresentation.GetSlideByIndex(i);
var aShape = oSlide.GetAllShapes();
}
次に、スライドから図形を削除する必要があります。図形と図面は同じプロパティを継承しているため、Delete メソッドを使用することができます。これは、スライドから図形や図面を削除するものです。この例では、図形は一番下に配置されています。そこで、インデックスとして 0 を渡して、一番下の要素をすべて削除します。
var oPresentation = Api.GetPresentation();
for (let i = 0; i < 10; i++) {
var oSlide = oPresentation.GetSlideByIndex(i);
var aShape = oSlide.GetAllShapes();
aShape[0].Delete();
}
次に、APi.CreateChart メソッドを実装して、チャートを追加します。パラメータで、チャートのスタイルと表示するデータを指定します。
var oChart = Api.CreateChart("bar3D", [
[200, 240, 280],
[250, 260, 280]
], ["Projected Revenue", "Estimated Costs"], [2014, 2015, 2016], 4051300, 2347595, 24);
その後、サイズとスライド上の位置を設定します。この例では、グラフを小さくし、中央に配置します。こうすることで、テキストと重ならないようにします。そして、AddObject メソッドを実行し、チャートをスライドに挿入します。
oChart.SetSize(150 * 36000, 90 * 36000);
oChart.SetPosition(3267200, 1000000);
oSlide.AddObject(oChart);
マクロのコード全体は以下の通りです。
(function()
{
var oPresentation = Api.GetPresentation();
for (let i = 0; i < 10; i++) {
var oSlide = oPresentation.GetSlideByIndex(i);
var aShape = oSlide.GetAllShapes();
aShape[0].Delete();
var oChart = Api.CreateChart("bar3D", [
[200, 240, 280],
[250, 260, 280]
], ["Projected Revenue", "Estimated Costs"], [2014, 2015, 2016], 4051300, 2347595, 24);
oChart.SetSize(150 * 36000, 90 * 36000);
oChart.SetPosition(3267200, 1000000);
oSlide.AddObject(oChart);
}
})();
では、マクロを実行して、その動きを見てみましょう。
このちょっと風変わりなマクロが、あなたのルーチンワークを少しでも格上げしてくれることを願っています。ONLYOFFICEのマクロは非常に汎用性が高く、ニーズに合わせてカスタマイズすることが可能です。ぜひ、APIメソッドを活用して、ユニークなマクロを作成してみてください。ご質問やアイデアの共有もお気軽にどうぞ。議論と協力を大歓迎しています!