ONLYOFFICEマクロでスプレッドシートをコピーする方法
スプレッドシートの編集は、特に同じようなデータを持つ複数のスプレッドシートを扱う場合、厄介な場合があります。そこで、あるスプレッドシートから別のスプレッドシートにデータをコピーし、大きなスプレッドシートを簡単に扱えるようにするマクロを作成しましょう。
マクロの構築
まず、エディタで現在のシートにアクセスします。次に、コピー先のシートにpastesheet変数でアクセスし、oRange変数で作業範囲を指定します。
const oWorksheet = Api.GetActiveSheet();
const pastesheet = Api.GetSheet("Sheet2");
const oRange = oWorksheet.GetRange("A1:C10");
// If you want to copy a specific Selection to the new sheet
// var oRange = oWorksheet.GetSelection();
ご注意:選択範囲を処理したい場合は、上の行のコメントを外して GetSelection() メソッドを使用してください。
次に、指定した範囲に対して ForEach メソッドを使用して、範囲内の各セルを繰り返し処理します。
oRange.ForEach(function (range) {
コールバック関数のパラメータ範囲を使って、各セルのデータにアクセスします。
const oValue = range.GetValue();
const oCharacters = range.GetCharacters(0, 2);
const oFont = oCharacters.GetFont();
const fontName = oFont.GetName();
const oSize = oFont.GetSize();
const isBold = oFont.GetBold();
const isItalic = oFont.GetItalic();
ForEachメソッドでは、まずセルの値を抽出します。次に、太字や斜体などのパラメータを知るために、値の初期文字を抽出します。そして、新しいシートに実装するために、fontNameとフォントサイズを取得します。
if (oValue === null || oValue === "") {
pastesheet.GetRange(range).SetValue(" ");
}
新しいシートに値を入れる前に、上図のようにif elseループを使っていくつかのチェックを行い、空のセルが新しいシートで正しく表現されていることを確認します。
else {
oFont.SetName(fontName);
pastesheet.GetRange(range).SetValue(oValue);
pastesheet.GetRange(range).SetFontName(fontName);
pastesheet.GetRange(range).SetFontSize(oSize);
oWorksheet.GetRange(range).AutoFit(false, true);
if (isBold) {
pastesheet.GetRange(range).SetBold(true);
}
if (isItalic) {
pastesheet.GetRange(range).SetItalic(true);
}
}
最後にelseループで、対応するセルに値を入れ、そのセルに太字、斜体、フォント名、フォントサイズなどのプロパティを与えます。
マクロ全体
マクロ全体のコードは次のとおりです:
(function () {
const oWorksheet = Api.GetActiveSheet();
const pastesheet = Api.GetSheet("Sheet2");
const oRange = oWorksheet.GetRange("A1:C10");
// If you want to copy a specific Selection to the new sheet
// var oRange = oWorksheet.GetSelection();
oRange.ForEach(function (range) {
const oValue = range.GetValue();
const oCharacters = range.GetCharacters(0, 2);
const oFont = oCharacters.GetFont();
const fontName = oFont.GetName();
const oSize = oFont.GetSize();
const isBold = oFont.GetBold();
const isItalic = oFont.GetItalic();
if (oValue === null || oValue === "") {
pastesheet.GetRange(range).SetValue(" ");
} else {
oFont.SetName(fontName);
pastesheet.GetRange(range).SetValue(oValue);
pastesheet.GetRange(range).SetFontName(fontName);
pastesheet.GetRange(range).SetFontSize(oSize);
oWorksheet.GetRange(range).AutoFit(false, true);
if (isBold) {
pastesheet.GetRange(range).SetBold(true);
}
if (isItalic) {
pastesheet.GetRange(range).SetItalic(true);
}
}
});
})();
覚えておくべきポイントがあります。
- マクロで指定するシート名が存在することを確認してください。
- マクロは、新しく作成したシートではなく、必ずメインシート(親シート)から実行してください。
マクロを実行して、その動作を確認してみましょう!
GetSelection() メソッドを使用したマクロの例をもうひとつ示します:
マクロが皆さまの日々のスプレッドシート編集作業において素晴らしいツールとなることを願っています!
ONLYOFFICE APIのパワーを活用するチャンスをお見逃しなく。私たちのAPIメソッドの豊富なライブラリは、皆さまのアイデアを現実に変える鍵です。ご質問や革新的なコンセプトがありましたら、ぜひ私たちと共有してください。
ONLYOFFICEの無料アカウントを登録する
オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業