ONLYOFFICE’s diary

OSSドキュメントエディタの使い方やヒントをご紹介します

ONLYOFFICEマクロですべてのスライドのフォントファミリーとサイズを変更する方法

現代社会では、ビジネスミーティングでも学術的なプロジェクトでも、プレゼンテーションが重要な役割を担っています。以前の記事で、各スライドの図形をチャートに置き換えるマクロをご紹介しました。今日は、プレゼンテーションの各スライドのフォントファミリーとサイズを変更する新しいマクロをご紹介します。 Change font family and size on every slide with ONLYOFFICE macro

 

マクロの構築

まず、Api.GetPresentation()メソッドでプレゼンテーションオブジェクトを取得し、変数oPresentationに代入します:

var oPresentation = Api.GetPresentation();

次に、slideIndex変数を使用して、プレゼンテーションの各スライドを繰り返し処理します。条件は、すべてのスライドが処理されるまでループが継続することを保証します:

for (var slideIndex = 0; slideIndex < oPresentation.GetSlidesCount(); slideIndex++) {
}

ループの中で、oPresentation.GetSlideByIndex(slideIndex)メソッドを使って特定のスライドを取得し、変数oSlideに代入します:

var oSlide = oPresentation.GetSlideByIndex(slideIndex);

次に、現在のスライドoSlide上のすべての図形を取得し、aShapeという配列に格納します:

var aShape = oSlide.GetAllShapes();

別のループは、shapeIndex変数を使用して、現在のスライド上の各シェイプを繰り返し処理します:

for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
}

Shapeループの内部では、aShape[shapeIndex].GetDocContent()を使用して現在のShapeのドキュメントコンテンツを取得し、変数contentに格納します:

var content = aShape[shapeIndex].GetDocContent();

さらに処理を進める前に、コンテンツが有効かどうか(つまり、nullやundefinedでないかどうか)をチェックします:

  if (content) {
}

有効な場合は、content.GetElementsCount()を使用してコンテンツ内の要素数を取得し、count変数に格納します:

var count = content.GetElementsCount();

3番目のループは、elementIndex変数を使用してコンテンツ内の各要素を繰り返し処理します:

for (var elementIndex = 0; elementIndex < count; elementIndex++) {
}

ループ内では、content.GetElement(elementIndex) を使用して現在の要素を取得します:

var element = content.GetElement(elementIndex);

エラーを避けるために、要素が有効かどうかをチェックします:

if (element) {
}

要素が有効であれば、フォントサイズとフォントファミリーを設定します:

element.SetFontSize(10);
element.SetFontFamily("Comic Sans");

マクロ全体は以下の通りになります:

(function()
{
     oPresentation = Api.GetPresentation();
for (var slideIndex = 0; slideIndex < oPresentation.GetSlidesCount(); slideIndex++) {
    var oSlide = oPresentation.GetSlideByIndex(slideIndex);
    var aShape = oSlide.GetAllShapes();

    for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
        var content = aShape[shapeIndex].GetDocContent();
        // Check if content is valid before proceeding
        if (content) {
            var count = content.GetElementsCount();
            for (var elementIndex = 0; elementIndex < count; elementIndex++) {
                var element = content.GetElement(elementIndex);
                // Check if element is valid before using it
                if (element) {
                    element.SetFontSize(10);
                    element.SetFontFamily("Comic Sans");
                }
            }
        }
    }
}

})();

マクロを実行し、どのように機能するか見てみましょう!

ONLYOFFICEマクロは、あなたの日常業務を効率化し、あなたの便利な武器となることを願っています。ONLYOFFICEのマクロは、あなたの生産性を高め、ワークフローを効率化します。 マクロを作成する際には、ONLYOFFICE APIが提供するチャンスをつかんでください。ONLYOFFICEマクロの柔軟性により、特定のニーズに合わせてマクロを微調整することができます。ご質問やクリエイティブなアイディアがありましたら、お気軽にご連絡ください。私たちは議論とコラボレーションのためにここにいます。あなたの説明の努力に幸あれ!