0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ONLYOFFICEマクロでスプレッドシートをコピーする方法

Posted at

スプレッドシートの編集は、特に同じようなデータを持つ複数のスプレッドシートを扱う場合、厄介な場合があります。そこで、あるスプレッドシートから別のスプレッドシートにデータをコピーし、大きなスプレッドシートを簡単に扱えるようにするマクロを作成しましょう。

Use ONLYOFFICE macro to copy spreadsheets

マクロの構築

まず、エディタで現在のシートにアクセスします。次に、コピー先のシートに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のGitHubページ

ONLYOFFICE ドキュメントのマクロ【無料講座】

ONLYOFFICE Spreadsheet API

他のマクロ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?