Google スプレッドシートでは、定義した特定の UI 操作のシーケンスを複製するマクロを記録できます。マクロを記録したら、Ctrl+Alt+Shift+Number
の形式でキーボード ショートカットにリンクできます。このショートカットを使用すると、通常は別の場所や別のデータで、マクロのステップをすばやく再実行できます。Google スプレッドシートの [拡張機能] > [マクロ] メニューからマクロを有効にすることもできます。
マクロを記録すると、Google スプレッドシートによって、マクロのステップを複製する Apps Script 関数(マクロ関数)が自動的に作成されます。マクロ関数は、シートにバインドされた Apps Script プロジェクトの macros.gs
という名前のファイルに追加されます。その名前のシートにバインドされたプロジェクト ファイルが既に存在する場合は、マクロ関数がそのファイルに追加されます。また、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 でマクロを作成または管理する際は、次のガイドラインに沿って行うことをおすすめします。
- マクロは軽量であるほどパフォーマンスが向上します。可能な限り、マクロが実行するアクションの数を制限します。
- マクロは、構成をほとんど必要とせず、頻繁に繰り返す必要がある定型的な操作に最適です。他のオペレーションについては、代わりにカスタム メニュー項目の使用を検討してください。
- マクロのキーボード ショートカットは一意である必要があります。また、1 つのシートにショートカット付きのマクロを同時に 10 個までしか設定できません。追加のマクロは、[拡張機能] > [マクロ] メニューからのみ実行できます。
- 1 つのセルを変更するマクロは、まずセル範囲全体を選択してからマクロを有効にすると、セル範囲に適用できます。つまり、定義済みのセル範囲で同じ操作を繰り返すマクロを作成する必要がないことがよくあります。
行えない操作
マクロの使用にはいくつかの制限があります。
バインドされたスクリプトの外部でマクロを使用する
マクロは、特定の Google スプレッドシートにバインドされたスクリプトで定義されます。スタンドアロン スクリプトまたはウェブアプリで定義されている場合、マクロ定義は無視されます。
スプレッドシート アドオンでマクロを定義する
スプレッドシート アドオンを使用してマクロ定義を配布することはできません。スプレッドシート アドオン プロジェクトのマクロ定義は、そのアドオンのユーザーによって無視されます。
スクリプト ライブラリでマクロを配布する
Apps Script のライブラリを使用してマクロ定義を配布することはできません。
Google スプレッドシート以外でマクロを使用する
マクロは Google スプレッドシートの機能であり、Google ドキュメント、フォーム、スライドには存在しません。