2020年08月09日

Googleのマクロを使ってみた

クリエイティブ・コモンズ・ライセンス


画像2020 (78).jpg

冒険家の皆さん、今日もラクダに揺られて灼熱の砂漠を横断していますか?

今日はまったく専門性のある話題ではないので、今日の記事のタイトルを見て何が書いてあるか想像ができる人は、読み飛ばしてくださって結構です。

さて、以前こちらの記事でGoogle のスクリプトを使い始めたということを書きました。

「むらログ: IDやパスワードを自動的に返信」
http://mongolia.seesaa.net/article/476200288.html

この記事を書くまで Googleスプレッドシートのマクロを使ったことは実は僕は一度もなかったんですが、使ってみると結構便利です。少なくとも10年ぐらい前のエクセルとかのマクロに比べると、はるかに使いやすいです。

「マクロ」と言うと難しいスクリプトを書かなければいけないイメージがある人が多いと思いますが、実はGoogleでも記録したものを再生するモードがあるので、これを使うとまったくスクリプトの意味がわからなくても使うことができます。というより、意図的にスクリプトエディタを開かない限り、スクリプトを目にする機会すらありません。

やり方はとても簡単で、以下のとおりです。
1.Google スプレッドシートのメニューの「Tool」をクリック。
2.「Macros」をクリック。
3.「Record Macro」をクリック。

これでマクロの記録を始めることができますから、その後で毎日やっているような定型的な操作をして、「Save」をクリックします。これだけで、もうその操作が保存されてしまうわけですね。

それで最近はGoogleスプレッドシートで、クリックなどの操作を4回以上しなければいけない定形作業はすべてマクロに記録してから、必要な時にマクロを実行するようにしています。

なぜ4回なのかと言うと、マクロを実行するために必要な操作が以下の通り3回だからです。
1.Google スプレッドシートのメニューの中の「ツール」をクリック。
2.「ツール」の中の「マクロ」をクリック。
3.マクロの中の自分で名前を付けたマクロをクリック。

つまり4回の操作が必要なところを3回だけで終わらせることができるわけですね。

Screenshot 2020-08-09 at 15.02.54.png

上の画像で「全セル折返し」というのが見えると思いますが、これが僕が記録して名前を付けたマクロの一つです。これは文字通り全部のセルを選択して、そこに表示されるテキストを折り返しにして右側のセルにオーバーフローさせなくするというマクロです。正直非常にシンプルなもので、「わざわざマクロにする必要なんかないじゃないか」と思う人も多いでしょう。しかし、全部のセルを選択して折り返しに設定するには、数えてみると以下のように4回の操作が必要なのです。

1.「A1」セルよりもさらに左上の部分をクリックして全部のセルを選択する。
2.メニューの「Format」(日本語では「書式」?)をクリック。
3.「Format」の中の「Text Wrapping」をクリック。
4.「Text Wrapping」の中の「Wrap」をクリック。

先日の「#Zoomでハナキン0807」の「乾杯の音頭」でオーストラリア、メルボルンの「はつ」さんがお話しくださっていたように、こうした無駄な操作は徹底的に減らしていきたいと僕も思っていますし、何より今はGAPスクリプトの使い方をもう少し身につけたいと思っているのでこうしたことは積極的にやっていこうと思っています。

では、なぜマクロを記録するとスクリプトの勉強になるかというと、記録してあるスクリプトの意味が分かるからです。

ちなみにスクリプトというのは以下のようなものです。

/** @OnlyCurrentDoc */

function myFunction() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
spreadsheet.getActiveRangeList().setWrapStrategy(SpreadsheetApp.WrapStrategy.WRAP);
};

function myFunction1() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('シート2'), true);
spreadsheet.getRange('A1:D1').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('A1:D100'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('A1:D100').activate();
spreadsheet.getActiveRangeList().setWrapStrategy(SpreadsheetApp.WrapStrategy.WRAP);
};


ちゃんと勉強した人はこれを見て、これがどのように作用するか理解することができます。僕はちゃんと勉強したことがないので、見るだけでは、すべての文の意味を理解するのは難しいですが、これは「A1」セルから「D1」セルを選択して、それを「A100」から「D100」までオートフィルでコピーするという内容であることは知っています。なぜならその操作をして記録されたものがこのスクリプトだからです。

それを分かった上で上記のスクリプトを読んでみると、「この部分がこういう意味なんじゃないか」と想像がつく部分がいくつかありますよね。そして「この部分をこういう風に編集したらこういう結果になるんじゃないだろうか」ということもだんだん想像がついてくるんじゃないかと思います。そしてもちろんそれはすぐその場で実行して、結果を検証してみることができます。こうした経験を積んでいくと、だんだんスクリプトの書き方なども分かっていくんじゃないかと思っています。

そして冒険は続く。

【ブログ更新情報のメールでのお知らせ】
「むらログ」更新情報のメール通知を希望される方は、こちらでご入力ください。
https://forms.gle/4pjSC8DmmW8BEbUv8

【参考資料】

むらログ: IDやパスワードを自動的に返信 (2020)
http://mongolia.seesaa.net/article/476200288.html

むらログ: 作文添削用・JavaScript生成用の秀丸マクロ(2007)
http://mongolia.seesaa.net/article/67743834.html

【コメントはソーシャル・メディア上の記事別ページヘどうぞ!】
https://twitter.com/Midogonpapa/status/1292358744190251008
https://www.facebook.com/murakami.yoshifumi/posts/10222785987820291
https://note.com/adventurer/n/n65e62606763a

【『冒険家メソッド』と電子書籍「むらログ」シリーズを購入して海外にルーツを持つ子どもたちを支援しよう!】
2014年以降のこのブログの内容はKindle本にもまとめられています。2020年中にこちらの本をご購入になると、その収益は全額が「海外にルーツを持つ子どもと若者のための日本語教育・学習支援事業」を実施しているNPO法人YSCグローバル・スクールに寄贈されます。ココ出版の『冒険家メソッド』は初版の本体価格の5%が同センターに寄贈されます。
https://amzn.to/2RiNThw
posted by 村上吉文 at 16:02 | 日記 | このエントリーをはてなブックマークに追加