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. 編集するマクロを見つけて、 > [Edit macro] を選択します。これにより、Apps Script エディタが開き、マクロ関数を含むプロジェクト ファイルが表示されます。
  3. マクロ関数を編集して、マクロの動作を変更します。
  4. スクリプト プロジェクトを保存します。これで、このマクロをシートで使用できるようになります。
  5. シート内のマクロ関数をテストして、意図したとおりに機能することを確認します。

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

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

または、スプレッドシートの 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 ドキュメント、フォーム、スライドには存在しません。