スプレッドシートのマクロ記録で書き出されたコードをリファクタリング


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Googleスプレッドシートに搭載されたマクロ記録の機能についてその使い方を初心者向けに解説をしています。

前回の記事はこちら。

スプレッドシートのマクロ記録で書き出されたコードを確認する方法
Googleスプレッドシートに搭載されたマクロ記録の使い方についてお伝えしています。今回はマクロ記録によって書き出されたスクリプトを編集する方法とともに、書き出されたコードがどのようなものかを見ていきます。

マクロ記録で書き出されたコードの確認方法と、どんなコードが書き出されるかについてお伝えしました。

また、マクロ記録で書き出されたコードが「イケてない」とお伝えしましたが

「じゃあ、イケてるコード教えろや!」

って、なりますよね…

ということで、今回はカーソル移動のマクロについて、マクロ記録のコードを修正してイケてるコードに修正していきます。

では、行ってみましょう!

スポンサーリンク

カーソル移動のマクロとそのコード

さて、題材とするのは、シートが複数ある場合に、シート1のA1セルにカーソルを移動するというマクロです。

ショートカットキー Ctrl + Shift + Alt + 1 を割り当てているので、いつでもキー操作で「ホームポジション」に戻ることができます。

そして、そのマクロ記録をした際に書き出されたコードがこちらです。

/** @OnlyCurrentDoc */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('C7').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('シート1'), true);
  spreadsheet.getRange('A1').activate();
};

細かい解説は前回記事で書いていますので、そちらをご覧ください。

今回は、同じ目的を達成する、もうちょっとスッキリしたコードを書いていきます。

カーソル移動をするマクロのコードをリファクタリング

さて、前述のコードを、よりシンプルにスッキリしようとすると、以下のようなコードが作れると思います。

function moveCursor() {
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1').getRange('A1').activateAsCurrentCell();
}

いくつかのメソッドが連結していますが、一行で書けちゃいますね。

簡単に解説をしていきます。

アクティブなスプレッドシートを取得

まず、アクティブなスプレッドシートを取得するgetActiveSpreadsheetメソッドです。

ここでいうアクティブというのはバインドしているという意味ですね。

書式は以下の通りです。

SpreadsheetApp.getActiveSpreadsheet()

前述のコードで書き出されているgetActiveメソッドと同じ役割ですが、対象がスプレッドシートであることがわかるので、長いですがコチラのほうが読みやすいと思います。

シート名からシートを取得する

続いて、シート名からシートを取得するgetSheetByNameメソッドです。

Spreadsheetオブジェクト.getSheetByName(シート名)

指定したシート名のシートをSheetオブジェクトとして取得します。

これはわかりやすいですね。

指定したアドレスのセルを取得する

次は、アドレスで指定したセルを取得するgetRangeメソッドです。

Sheetオブジェクト.getRange(アドレス)

アドレスに「’A1’」と指定していますので、シート1のA1セルをRangeオブジェクトとして取得できます。

指定したセルをカレントセルにする

最後に、そのRangeオブジェクトに対してactivateAsCurrentCellメソッドで、カレントセルとしてアクティブにします。

つまり、カーソルを当てるということですね。

Rangeオブジェクト.activateAsCurrentCell()

Rangeオブジェクトは単体セルでなく、範囲である場合もあるのですが、activateAsCurrentCellメソッドはRangeオブジェクトが単体セルである場合でのみ使用することができます。

まとめ

以上、スプレッドシートのマクロ記録について、書き出されたコードをリファクタリングしました。

修正というよりは、書き直し…って感じですかね。

今回紹介した以外にもベストなコードがあるかも知れませんが、少なくともマクロ記録で書き出されたよりは、短くて意味をすばやく読み取りやすいのではないでしょうか。

このように、マクロ記録は自動でコードを書き出す便利機能ですが、ベストなコードが別にあるということを念頭に活用くださいね。

次回は、マクロの管理についてお伝えします。

スプレッドシートのマクロ機能で関数のインポートをする方法とマクロの削除の方法
Googleスプレッドシートに搭載されたマクロ記録機能について、初心者向けにその使い方をお伝えしています。今回は作成した関数をマクロとして登録する方法と、マクロを削除する方法についてお伝えしていきます。

どうぞお楽しみに!

連載目次:【初心者向け】スプレッドシートのマクロ記録の活用法

Googleスプレッドシートに満を持して搭載された「マクロ記録」。このシリーズでは、マクロ機能の概要と、その使い方、また書き出されたコードの編集や活用の仕方などを初心者向けにお送りしていきます。
  1. スプレッドシートのマクロ記録で簡単便利なカーソル移動のマクロを作ってみよう
  2. スプレッドシートのマクロ記録で書き出されたコードを確認する方法
  3. スプレッドシートのマクロ記録で書き出されたコードをリファクタリング
  4. スプレッドシートのマクロ機能で関数のインポートをする方法とマクロの削除の方法
  5. スプレッドシートのマクロ記録時の絶対参照と相対参照の違いとは

タイトルとURLをコピーしました