Google スプレッドシートでは、定義した特定の UI インタラクションを複製するマクロを記録できます。マクロを記録したら、Ctrl+Alt+Shift+Number
の形式でキーボード ショートカットにリンクできます。このショートカットを使用すると、通常、異なる場所や異なるデータで正確なマクロ手順をすぐに実行できます。Google スプレッドシートの [拡張機能] > [マクロ] メニューからマクロを有効にすることもできます。
マクロを記録すると、Google スプレッドシートでマクロのステップを複製する Apps Script 関数(マクロ関数)が自動的に作成されます。マクロ関数は、macros.gs
というファイルで、シートにバインドされた Apps Script プロジェクトに追加されます。その名前のシートにプロジェクト ファイルがすでにバインドされている場合は、マクロ関数が追加されます。また、Google スプレッドシートは、スクリプト プロジェクトのマニフェストを自動的に更新し、マクロに割り当てられた名前とキーボード ショートカットを記録します。
記録されたすべてのマクロは、すべて Apps Script 内で定義されるため、Apps Script エディタ内で直接編集できます。Apps Script では、マクロをゼロから作成することも、作成済みの関数をマクロに変換することもできます。
Apps Script でのマクロの作成
Apps Script で作成された関数をマクロ関数として使用できます。最も簡単な方法は、Google スプレッドシート エディタから既存の関数をインポートすることです。
次の手順では、Apps Script エディタ内でマクロを作成することもできます。
- Google スプレッドシートの UI で、[拡張機能] > [Apps Script] を選択して、シートにバインドされているスクリプトを Apps Script エディタで開きます。
- マクロ関数を記述します。マクロ関数は、引数を受け取り、値を返しません。
- スクリプト マニフェストを編集してマクロを作成し、マクロ関数にリンクします。一意のキーボード ショートカットと名前を割り当てます。
- スクリプト プロジェクトを保存します。このマクロはシートで使用できます。
- シート内のマクロ関数をテストして、意図したとおりに機能することを確認します。
マクロを編集する
シートに添付したマクロを編集する手順は次のとおりです。
- Google スプレッドシートの UI で、[拡張機能] > [マクロ] > [マクロを管理] を選択します。
- 編集するマクロを見つけて、[ > マクロを編集] を選択します。これにより、Apps Script エディタでマクロ関数を含むプロジェクト ファイルが開きます。
- マクロの動作を変更するには、マクロ関数を編集します。
- スクリプト プロジェクトを保存します。このマクロはシートで使用できます。
- シート内のマクロ関数をテストして、意図したとおりに機能することを確認します。
関数をマクロとしてインポートする
スプレッドシートにバインドされたスクリプトがすでに存在する場合は、スクリプト内の関数を新しいマクロとしてインポートし、キーボード ショートカットを割り当てることができます。これを行うには、マニフェスト ファイルを編集し、sheets.macros[]
プロパティに別の要素を追加します。
または、次の手順に沿ってスプレッドシートの UI から関数をマクロとしてインポートします。
- Google スプレッドシートの UI で、[拡張機能] > [マクロ] > [インポート] を選択します。
- 表示されたリストから関数を選択して、[関数を追加] をクリックします。
- [ ] を選択してダイアログを閉じます。
- [拡張機能] > [マクロ] > [マクロを管理] を選択します。
- インポートした関数をリストで探します。一意のキーボード ショートカットをマクロに割り当てます。ここでマクロ名を変更することもできます。名前はデフォルトで関数の名前になります。
- [更新] をクリックしてマクロ構成を保存します。
マクロのマニフェスト構造
次のマニフェスト ファイルの例のスニペットは、Google スプレッドシートのマクロを定義するマニフェストのセクションを示しています。
マニフェストの sheets
セクションには、マクロに割り当てられた名前とキーボード ショートカット、マクロ関数の名前を定義します。
{
...
"sheets": {
"macros": [{
"menuName": "QuickRowSum",
"functionName": "calculateRowSum",
"defaultShortcut": "Ctrl+Alt+Shift+1"
}, {
"menuName": "Headerfy",
"functionName": "updateToHeaderStyle",
"defaultShortcut": "Ctrl+Alt+Shift+2"
}]
}
}
Apps Script マニフェストの作成方法について詳しくは、マニフェスト構造のガイドをご覧ください。スプレッドシートのマクロを定義するフィールドについては、スプレッドシートとマクロのセクションをご覧ください。
おすすめの方法
Apps Script でマクロを作成または管理する際は、次のガイドラインを遵守することをおすすめします。
- マクロは軽量であれば高い効果を発揮します。可能であれば、マクロが行うアクションの数を制限します。
- マクロは、構成をほとんど必要とせずに、頻繁に繰り返す必要があるロテ オペレーションに最適です。それ以外の操作には、カスタム メニュー項目の使用を検討してください。
- マクロ キーボード ショートカットは一意である必要があります。また、任意のシートに、ショートカットを含むマクロは一度に 10 個しか存在しません。追加のマクロは、[拡張機能] > [マクロ] メニューからのみ実行できます。
- 単一のセルに変更を加えるマクロは、最初にセル全体を選択してからマクロを有効にすることで、セル範囲に適用できます。つまり、事前定義されたセル範囲で同じオペレーションを複製するマクロを作成する必要がないことがよくあります。
できないこと
マクロでできることにはいくつかの制限があります。
バインドされたスクリプトの外部でマクロを使用する
マクロは、特定の Google スプレッドシートにバインドされたスクリプトで定義されます。スタンドアロン スクリプトまたはウェブアプリで定義されている場合、マクロ定義は無視されます。
スプレッドシート アドオンでマクロを定義する
スプレッドシート アドオンを使用してマクロ定義を配布することはできません。スプレッドシート アドオン プロジェクトのマクロ定義は無視されます。
スクリプト ライブラリ内のマクロの配布
Apps Script ライブラリを使用してマクロ定義を配布することはできません。
Google スプレッドシートの外部でマクロを使用する
マクロは Google スプレッドシートの機能のみであり、Google ドキュメント、フォーム、スライドにはありません。