ONLYOFFICEマクロでプレゼンテーションの画像を拡大縮小する方法
プレゼンテーションで画像を扱うとき、特に画像の多いプレゼンテーションでは、各画像のサイズを手動で調整するのは時間がかかる場合があります。このマクロを使えば、プレゼンテーション内のすべての画像のサイズを簡単に変更できます。この簡単なマクロを作成して、プレゼンテーションのワークフローを改善する方法を見てみましょう。
マクロの構築
const resizeImg = (images, width, height, slideIndex) => {
const finalWdth = width * 36000; //Convert mm to EMUs
const finalHgt = height * 36000; //Convert mm to EMUs
images.forEach((element) => {
try {
element.SetSize(finalWdth, finalHgt);
} catch (error) {
console.error(
`Could not change size for one or more images in slide no. ${slideIndex}. Check your presentation once.`
);
}
});
};
まず、画像のサイズを変更する関数resizeImg() を定義します。この関数は、画像の配列 、希望する幅、希望する高さ、現在のスライドのインデックスの 4つのパラメータを受け取ります。
入力された幅と 高 さは、ミリメートルから EMU (English Metric Units) に変換され、SetSize()メソッドのパラメータとして渡されます。SetSize() メソッドは、各画像のサイズを入力された幅と高さに設定します。
const oPresentation = Api.GetPresentation();
const slidesCount = oPresentation.GetSlidesCount();
次にマクロのメイン部分です。まず、GetPresentation()メソッドでアクティブなプレゼンテーションを取得し(変数oPresentationに 格納)、次にGetSlidesCount()メソッドでスライド数を取得します(変数slidesCountに 格納)。
const width = 100; //in mm (modify this value)
const height = 100; //in mm (modify this value)
次に、画像の幅と高さをミリメートル(mm)単位で設定します。これらの値は必要に応じて変更することができます。
if (slidesCount === 0) {
console.warn("You dont seem to have any slides in your presentation.");
return;
}
プレゼンテーションにスライドがない場合、警告をログに記録し、マクロの実行を停止します。
for (let i = 0; i < slidesCount; i++) {
const oSlide = oPresentation.GetSlideByIndex(i);
const slideImgs = oSlide.GetAllImages();
次に、for ループを使ってすべてのスライドを繰り返し処理 します。繰り返しごとに、GetAllImages()メソッドを使用してスライド内のすべての画像を取得します。
if (slideImgs.length === 0) {
console.warn(`No images found on slide ${i + 1}`);
continue; //continue to next slide
}
スライドに画像がない場合は、警告を記録して次のスライドに進みます。
resizeImg(slideImgs, width, height, i + 1);
画像がスライド上に確かに存在することを確認したら、resizeImg()メソッドを呼び出します。スライド上のすべての画像の配列を 渡し、続いて高さ、幅、そして現在のスライドのインデックスを渡します。
マクロ全体のコード
マクロ全体のコードは下記のとおりです。
(function () {
const resizeImg = (images, width, height, slideIndex) => {
const finalWdth = width * 36000; //Convert mm to EMUs
const finalHgt = height * 36000; //Convert mm to EMUs
images.forEach((element) => {
try {
element.SetSize(finalWdth, finalHgt);
} catch (error) {
console.error(
`Could not change size for one or more images in slide no. ${slideIndex}. Check your presentation once.`
);
}
});
};
try {
const oPresentation = Api.GetPresentation();
const slidesCount = oPresentation.GetSlidesCount();
const width = 100; //in mm (modify this value)
const height = 100; //in mm (modify this value)
if (slidesCount === 0) {
console.warn("You don't seem to have any slides in your presentation.");
return;
}
for (let i = 0; i < slidesCount; i++) {
const oSlide = oPresentation.GetSlideByIndex(i);
const slideImgs = oSlide.GetAllImages();
if (slideImgs.length === 0) {
console.warn(`No images found on slide ${i + 1}`);
continue; //continue to next slide
}
resizeImg(slideImgs, width, height, i + 1);
}
} catch (error) {
console.error("An unexpected error occurred while running the macro", error);
}
})();
では、このマクロがどのように動作するか見てみましょう。
これで完了です!ボタンをクリックするだけで、プレゼンテーションのすべての画像をリサイズできるシンプルなマクロです。ONLYOFFICE APIはパワフルなツールであり、様々なタスクを処理することができ、さらにマクロやプラグインを開発するための無限の可能性を広げます。このAPIを使えば、ONLYOFFICEのパワーをフルに引き出し、生産性を高め、ワークフローを効率化することができます。
ご質問や革新的なコンセプトがありましたら、ぜひ私たちと共有してください。