みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
さて、Googleスプレッドシートに搭載されたマクロ記録の使い方についてお伝えしています。
前回の記事はこちら。
マクロ記録の概要と、記録から実行までの一連の流れについてお伝えしました。
さて、今回はスプレッドシートのマクロ記録によって書き出されたスクリプトを編集する方法をお伝えしつつ、書き出されたコードがどのようなものかを確認していきたいと思います。
では行ってみましょう!
記録されたマクロをのコードを編集する
では早速、記録されたマクロのコードを編集してみましょう。
まず、スプレッドシートのメニューから「ツール」→「マクロ」→「マクロを管理」とたどります。
すると「マクロの管理」ダイアログが開きますので、縦に点3つのメニューアイコンをクリックしてメニューを開き、「スクリプトを編集」を選択します。
スクリプトエディタが開き、記録されたマクロのコードを確認・編集することができます。
マクロの保存時にスクリプトを編集する
なお、マクロを保存してすぐにスクリプトを開いて編集することもできます。
保存したときの、以下のメッセージで「スクリプトを編集」をクリックすることで、スクリプトエディタで開きます。
スプレッドシートのツールメニューから開く
さらにさらに、通常のスクリプトエディタを開く手順でもマクロ記録のコードを開くことができます。
スプレッドシートの「ツール」→「スクリプトエディタ」です。
カーソル移動のスクリプトを確認する
さて、カーソル移動のマクロについてスクリプトを確認していきましょう。
以下のスクリプトになります。
/** @OnlyCurrentDoc */ function myFunction() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('C7').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('シート1'), true); spreadsheet.getRange('A1').activate(); };
ドキュメンテーションコメントOnlyCurrentDoc
まず1行目の以下の部分。
ドキュメンテーションコメント内に@OnlyCurrentDocとありますね。
これは読んで字のごとくですが、スクリプトが「CurrentDoc」つまり今回の場合は、バインドしているスプレッドシートのみしかアクセスしませんよ、という明示になります。
つまり、バインドしているスプレッドシート以外のドキュメントにはアクセスできなくなります。
function名はmyFunction
3行目を見れば分かる通り、function名は「myFunction」になります。
同じスプレッドシートで複数回マクロ記録をした場合には、myFunction1,myFunction2,…というfunction名になります。
getActiveメソッドとは
次に4行目。以下のgetActiveメソッドが使われています。
これは、以下と同じで、アクティブな(つまりバインドしている)スプレッドシートを取得するメソッドです。
「Active」だけだと、スプレッドシートなのか、セルなのか、何なのかちょっと分かりづらいですね。
セルをアクティブにする
続いて5行目。
まず、ちょっと不思議メソッドですが、スプレッドシートに対してgetRangeメソッドを使っています。
本来ならgetRangeメソッドはSheetメソッドに対して実行するのですが…Spreadsheetオブジェクトから直接使えるのですね。
その場合は、アクティブなシートが対象になるわけですね。
続いて、セルC7に対して、activateメソッドを実行しています。
対象となるRangeオブジェクトの左上のセルをアクティブにするというものです。
ただ、このステートメントは今回のカーソル移動マクロでいうと不要なステートメントですね。
シートをアクティブにする
6行目は、スプレッドシートに対してsetActiveSheetメソッドです。
1つ目の引数で指定したSheetオブジェクトをアクティブにします。
ですから、今回の場合は「シート1」をアクティブにしているということになります。
2つ目の引数は、アクティブにしたシートの前のセル選択状態に戻すかどうかをtrueまたはfalseで指定するものです。
が、今回のマクロではこの引数の指定は必要ありませんね。どうせA1セルをアクティブにしちゃいますから。
そして、7行目で再びactivateメソッドでA1セルをアクティブにする、つまりカーソルがA1に移動するということになります。
マクロ記録で書き出されたコードについて
さて、細かく解説してきましたが、わかりましたでしょうか?
つまり、マクロ記録で書き出されたコードは
- いらないステートメントが含まれている
- ちょっと人にはわかりづらいステートメントが含まれている
- いらない引数が含まれている
などといったことがあるようです。
つまり、これらのコードよりも、もっと良いコードがほぼ間違いなく存在しています。
もっと端的に言うと、イケてないコードなのです。
リファクタリングのすすめ
よくわからずにこれらのコードをコピペで使いまわしたりして、うっかり動いてラッキー!
みたいなのを繰り返していると、メンテナンス性や再利用性の低いイケてないコードが量産されることになります。
ですので、マクロ記録で書き出したコードを修正したり、再利用したりする際には、そのマクロの動作の結果は変えずに、もっと別の良いコードに直しながらの作業をするのがオススメです。
そのような作業をリファクタリングと言います。
マクロ記録はノンプログラマーにとって強力な武器ではありますが、気をつけないとイケてないコードを量産してしまうというデメリットもありますので、その点はよくよく留意して活用くださいね。
まとめ
以上、スプレッドシートのマクロ記録で書き出されたコードを編集する方法とともに、書き出されたコードを確認してみました。
マクロ記録はノンプログラミングで作業を自動化することができる強力な機能です。
一方で、本記事でお伝えした通り、書き出されたコードはイケてないコードですので、いざ使い回そうとするときには注意が必要です。
もっと良い書き方があるという前提で、ぜひ取り組んでくださいね。
次回はマクロ記録で書き出されたコードを手直ししてみますよ。
どうぞお楽しみに!