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

Google スプレッドシートでは、定義した特定の一連の UI 操作を複製するマクロを記録できます。マクロを記録したら、Ctrl+Alt+Shift+Number 形式のキーボード ショートカットにリンクできます。このショートカットを使用すると、同じマクロの手順をすばやく再実行できます(通常は別の場所または別のデータで実行します)。Google スプレッドシートの [拡張機能] > [マクロ] メニューからマクロを有効にすることもできます。

マクロを記録すると、マクロのステップを再現する Apps Script 関数(マクロ関数)が自動的に作成されます。マクロ関数は、シートにバインドされた Apps Script プロジェクトに、macros.gs という名前のファイルに追加されます。その名前のシートがすでにプロジェクト ファイルにバインドされている場合は、マクロ関数が追加されます。また、Google スプレッドシートは、スクリプト プロジェクトのmanifestを自動的に更新し、マクロに割り当てられた名前とキーボード ショートカットを記録します。

記録されたマクロはすべて 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[] プロパティに別の要素を追加します。

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

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

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

次のマニフェスト ファイルの例のスニペットは、Google スプレッドシートのマクロを定義するmanifestのセクションを示しています。マニフェストの 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 ドキュメント、フォーム、スライドには存在しません。