Google スプレッドシートでは、定義した特定の UI 操作のシーケンスを複製するマクロを記録できます。マクロを記録したら、Ctrl+Alt+Shift+Number の形式でキーボード ショートカットにリンクできます。このショートカットを使用すると、通常は別の場所や別のデータに対して、マクロのステップをすばやく再実行できます。スプレッドシートの [拡張機能] > [マクロ] メニューからマクロを有効にすることもできます。
マクロを記録すると、スプレッドシートによって、マクロのステップを複製する Apps Script 関数(マクロ関数)が自動的に作成されます。マクロ関数は、シートにバインドされた Apps Script プロジェクトの macros.gs という名前のファイルに追加されます。その名前のシートにすでにプロジェクト ファイルがバインドされている場合は、マクロ関数がそのファイルに追加されます。また、スプレッドシートはスクリプト プロジェクトのマニフェストを自動的に更新し、マクロに割り当てられた名前とキーボード ショートカットを記録します。
記録されたマクロはすべて Apps Script 内で定義されているため、Apps Script エディタで直接編集できます。Apps Script でマクロをゼロから作成することも、すでに作成した関数をマクロに変換することもできます。
Apps Script でマクロを作成する
Apps Script で作成した関数をマクロ関数として使用できます。これを行う簡単な方法は、スプレッドシート エディタから既存の関数をインポートすることです。
または、次の手順に沿って Apps Script エディタ内でマクロを作成することもできます。
- スプレッドシートの UI で、[拡張機能] > [Apps Script] を選択して、Apps Script エディタでシートにバインドされたスクリプトを開きます。
- マクロ関数を記述します。マクロ関数は引数を受け取らず、値を返しません。
- スクリプト マニフェストを編集してマクロを作成し、マクロ関数にリンクします。一意のキーボード ショートカットと名前を割り当てます。
- スクリプト プロジェクトを保存します。これで、シートでマクロを使用できるようになります。
- シートでマクロ関数をテストし、想定どおりに機能することを確認します。
マクロを編集する
シートに添付されているマクロを編集するには、次の操作を行います。
- スプレッドシートの UI で、[拡張機能] > [マクロ] > [マクロを管理] を選択します。
- 編集するマクロを見つけて、 > [マクロを編集] を選択します。これにより、Apps Script エディタが開き、マクロ関数を含むプロジェクト ファイルが表示されます。
- マクロ関数を編集して、マクロの動作を変更します。
- スクリプト プロジェクトを保存します。これで、シートでマクロを使用できるようになります。
- シートでマクロ関数をテストし、想定どおりに機能することを確認します。
関数をマクロとしてインポートする
シートにすでにスクリプトがバインドされている場合は、スクリプト内の関数を新しいマクロとしてインポートし、キーボード ショートカットを割り当てることができます。これを行うには、マニフェストを編集し、sheets.macros[] プロパティに別の要素を追加します。
または、次の手順に沿って、スプレッドシートの UI から関数をマクロとしてインポートします。
- スプレッドシートの UI で、[拡張機能] > [マクロ] > [インポート] を選択します。
- 表示されたリストから関数を選択し、[関数を追加] をクリックします。
- [] を選択してダイアログを閉じます。
- [拡張機能] > [マクロ] > [マクロを管理] を選択します。
- リストで、インポートした関数を見つけます。マクロに一意のキーボード ショートカットを割り当てます。ここでマクロ名を変更することもできます。名前はデフォルトで関数の名前になります。
- [更新] をクリックして、マクロの構成を保存します。
マクロのマニフェスト構造
次のマニフェスト ファイルの例のスニペットは、スプレッドシート マクロを定義するマニフェストのセクションを示しています。マニフェストの sheets セクションでは、マクロに割り当てられた名前とキーボード ショートカット、マクロ関数の名前を定義します。
マニフェストには、Apps Script のプロパティに関連する他のコンポーネントも含まれます。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 Workspace アドオンでマクロを定義する
スプレッドシートの Google Workspace アドオンを使用してマクロ定義を配布することはできません。スプレッドシート アドオン プロジェクトのマクロ定義は、そのアドオンのユーザーによって無視されます。
スクリプト ライブラリでマクロを配布する
Apps Script のライブラリを使用してマクロ定義を配布することはできません。
Google スプレッドシート以外でマクロを使用する
マクロはスプレッドシートの機能であり、Google ドキュメント、フォーム、スライドには存在しません。