Google Apps Scriptに「マクロを記憶」機能がキタキタキタ

GASの愛する皆様こんにちは 大橋です。

2018/04/11のApps Script及びGoogle Sheetsのアップデートで、
Excelにあるような「マクロを記憶」機能が追加されました。

[Think macro: record actions in Google Sheets to skip repetitive work](https://www.blog.google/products/g-suite/think-macro-record-actions-google-sheets-skip-repetitive-work/)

<blockquote class="twitter-tweet" data-partner="tweetdeck"><p lang="ja" dir="ltr">Record macros in Sheets, skip mundane tasks <a href="https://t.co/dUkcZa1Ebv">https://t.co/dUkcZa1Ebv</a> <a href="https://twitter.com/YouTube?ref_src=twsrc%5Etfw">@YouTube</a>さんから</p>&mdash; おーはし(さんとりー) (@soundTricker318) <a href="https://twitter.com/soundTricker318/status/984629758771146753?ref_src=twsrc%5Etfw">April 13, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

でかい更新すぎて涙が止まりませんが、花粉のせいかもしれません。
今回はこのマクロ機能を追っていきたいと思います。

## マクロを記録する。

まずは大本命のマクロの記憶の仕方です。
1. Sheetsにマクロ機能が追加されていると、メニューの「ツール」に「マクロ」が追加されます。そのサブメニュー内に「マクロを記録」が表示されるので、そのままクリックしてください。
2. 画面下部にマクロ記録用のダイアログが表示され、マクロの記憶が開始されます。そのまま任意の操作を行ってください。
3. 操作が終わったら、ダイアログの保存ボタンを押してください。
4. マクロ名と、ショートカットキーの割当を聞かれるので、それぞれ任意に入力して、保存ボタンを押下します。

![Apr-13-2018 12-20-47.gif](https://qiita-image-store.s3.amazonaws.com/0/2965/8be551d6-063f-0f56-13d4-39b05829796f.gif)

これでマクロが記録できました。

## マクロを利用する

次は記録したマクロを利用してみます。
利用するには現在2種類の方法があるようです。

1. メニューから起動
2. ショートカットキー

### メニューから起動

メニューから起動するにはメニューから「ツール」→「マクロ」→「｛利用したいマクロ名｝」をクリックするのみです。

![Apr-13-2018 12-25-01.gif](https://qiita-image-store.s3.amazonaws.com/0/2965/cd4dca6f-09a4-7fe9-7db4-bf5b68efb6e1.gif)

### ショートカットキー

マクロを記憶した際にショートカットキーを割り当てておけば、メニューから呼び出さずにマクロを呼び出すことが可能です。

![Apr-13-2018 12-37-26.gif](https://qiita-image-store.s3.amazonaws.com/0/2965/8c3662e5-c762-ffa6-8335-2554feb1efb1.gif)


## マクロを管理する

マクロメニュー内の「マクロを管理」からマクロの管理メニューが開けます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/2965/a719e299-1be8-b639-eaf7-8a3790d66a6d.png)

マクロの管理メニューでは、以下のことが行なえます。

* マクロ名の変更
* ショートカットキーを割り当て
* マクロの削除
* マクロに割り当てられているApps Scriptの編集

![image.png](https://qiita-image-store.s3.amazonaws.com/0/2965/5f3955ca-9c30-d17a-ead3-5e9187d5265a.png)

なお、このマクロ名と、GAS上の関数の組み合わせは全て「マニフェストファイル」にまとめられています。
細かい設定を確認したかったり、大量のスクリプトを設定したい場合などは、マニフェストファイルを直接いじってもいいと思います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/2965/c86185f7-f4d2-3b4f-bea7-de4bcecb483b.png)



## マクロのインポート

マクロを記憶せずに作成した、Apps Scriptの関数をマクロとして割り当てることも可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/2965/438fe93c-3d9e-d5bb-f8cd-2866bffe74f3.png)

上記の様なマクロに割り当てられていない関数がある場合、
マクロメニューにて「インポート」メニューが有効になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/2965/55e64ebb-aa6b-23bb-0f7c-f3baf4f4aea4.png)

インポートメニューではマクロの割当が行われていない関数が一覧表示され、マクロとして登録が可能になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/2965/a4410b53-29f6-5729-9014-cf8ea10c6b12.png)

「関数を追加」ボタンをクリックすれば、マクロとしてインポートが行なえます。
一度マクロとして登録すればショートカットキーを割り当てることも可能です。


## 注意点

最後になりますがマクロにはいくつか注意点があります。

* SheetsのContainer Bound Scriptのみ利用できます。
    * Standalone Scriptはマクロ化出来ません。
* Sheets add-onsではマクロは作れません。
* ライブラリではマクロは作れません。
* Sheets以外では現在の所マクロ化出来ません

2018/04/17 追記)
公式ドキュメント上の記載はありませんが、現在Chromeでのみ利用可能とのコメントを @matsuyoro さんからいただきました。
Chrome以外のブラウザでマクロが表示されていない場合はChromeで試してみてください。


## まとめ

如何だったでしょうか？
マクロの記憶機能により今までGASをフルスクラッチで作る必要だったのが、
ある程度マクロを利用して作成し、その後編集を行うという手段が取れるようになりました。

またショートカットキーを割り当てられるようになり、かなり扱いやすくなったと言えます。
今回のマクロ対応により、SpreadsheetAppにも大量の関数が追加されているので、そちらも使えるようにしていきたいですね。