ONLYOFFICEマクロで図形をグラフに置き換える方法

2022年11月23日著者:Denis

プレゼンテーションは、私たちの生活に欠かせないものとなっています。ビジネスミーティングであれ、学校のプロジェクトであれ、聴衆に自分の意見を提示するためにプレゼンテーションが必要です。100枚のスライドを調整するのは、少し面倒かもしれませんね。この記事では、ONLYOFFICEマクロを使ってこのタスクに取り組む方法をご紹介します。
Use ONLYOFFICE macro to replace shapes with charts この小さなマクロは、すべてのスライドで図形をグラフに置き換えます。先に進む前に、要素の位置について詳しくご説明します。行や列にインデックスで到達できるスプレッドシートとは異なり、プレゼンテーション要素はスライド上の位置によってのみターゲットにすることができます。要素は互いの上に配置されます。そしてそれは、すべての要素を配列にプッシュし、それを反復することによって、それらの位置を特定できることを意味します。

マクロの構築

そこでまず、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メソッドを活用して、ユニークなマクロを作成してみてください。ご質問やアイデアの共有もお気軽にどうぞ。議論と協力を大歓迎しています!