Google スプレッドシートのマクロ

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 エディタ内でマクロを作成することもできます。手順は次のとおりです。

  1. Google スプレッドシートの UI で、[拡張機能] > [Apps Script] の順に選択して、シートにバインドされたスクリプトを Apps Script エディタで開きます。
  2. マクロ関数を記述します。マクロ関数は引数を取らず、値を返しません。
  3. スクリプトのマニフェストを編集して、マクロを作成し、マクロ関数にリンクします。固有のキーボードショートカットと名前を 割り当てます
  4. スクリプト プロジェクトを保存します。これで、このマクロをシートで使用できるようになります。
  5. シートでマクロ機能をテストして、意図したとおりに機能することを確認します。

マクロの編集

シートに添付されたマクロは、次の手順で編集できます。

  1. Google スプレッドシートの UI で、[拡張機能] > [マクロ] > [マクロを管理] を選択します。
  2. 編集するマクロを見つけて、 > [マクロを編集] を選択します。Apps Script エディタが開き、マクロ関数を含むプロジェクト ファイルが表示されます。
  3. マクロ関数を編集して、マクロの動作を変更します。
  4. スクリプト プロジェクトを保存します。これで、このマクロをシートで使用できるようになります。
  5. シートでマクロ機能をテストして、意図したとおりに機能することを確認します。

関数をマクロとしてインポートする

シートにバインドされているスクリプトがすでにある場合は、スクリプト内の関数を新しいマクロとしてimportし、キーボード ショートカットを割り当てることができます。これを行うには、マニフェスト ファイルを編集し、別の要素を sheets.macros[] プロパティに追加します。

Google スプレッドシートの UI から関数をマクロとしてインポートするには、次の手順を行います。

  1. Google スプレッドシートの UI で、[拡張機能] > [マクロ] > [インポート] を選択します。
  2. 表示されたリストから関数を選択し、[関数を追加] をクリックします。
  3. [] を選択してダイアログを閉じます。
  4. [拡張機能] > [マクロ] > [マクロを管理] を選択します。
  5. インポートした関数をリストから選択します。固有のキーボード ショートカットをマクロに割り当てます。ここでマクロ名を変更することもできます。デフォルトの名前は関数の名前です。
  6. [Update] をクリックしてマクロの構成を保存します。

マクロのマニフェスト構造

次のマニフェスト ファイルのサンプルスニペットは、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. マクロは軽量なほどパフォーマンスが高くなります。可能であれば、マクロが実行するアクションの数を制限します。
  2. マクロは、構成をほとんど、またはまったく行わずに、頻繁に繰り返す必要があるロート オペレーションに最適です。その他の操作については、代わりにカスタム メニュー項目の使用を検討してください。
  3. マクロのキーボード ショートカットは一意である必要があります。1 つのシートに同時に設定できるマクロは 10 個までです。追加のマクロは、[拡張機能] > [マクロ] メニューからのみ実行できます。
  4. 1 つのセルに変更を加えるマクロをセル範囲に適用するには、セル範囲全体を選択してからマクロを有効にします。つまり、事前定義されたセル範囲に対して同じオペレーションを複製するマクロを作成する必要はありません。

行えない操作

マクロでは、次のような制限があります。

バインドされたスクリプトの外部でマクロを使用する

マクロは、特定の Google スプレッドシートにバインドされたスクリプトで定義されます。スタンドアロン スクリプトまたはウェブアプリで定義されているマクロの定義は無視されます。

スプレッドシート アドオンでマクロを定義する

スプレッドシート アドオンを使用してマクロ定義を配布することはできません。スプレッドシート アドオン プロジェクトのマクロ定義は、そのアドオンのユーザーに無視されます。

スクリプト ライブラリ内でマクロを配布する

マクロ定義を Apps Script ライブラリを使用して配布することはできません。

Google スプレッドシートの外部でマクロを使用する

マクロは Google スプレッドシートの機能にすぎず、Google ドキュメント、フォーム、スライドにはありません。