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

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

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

記録されたマクロはすべて Apps Script 内で完全に定義されるため、Apps Script スクリプト エディタ内で直接編集できます。Apps Script でマクロを最初から作成したり、すでに作成した関数をマクロに変換したりすることもできます。

Apps Script でマクロを作成する

Apps Script で作成した関数をマクロ関数として使用できます。これを行う簡単な方法は、スプレッドシート エディタから既存の関数 をインポートすることです。

または、次の手順で Apps Script エディタ内でマクロを作成することもできます。

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

マクロを編集する

スプレッドシートに添付されたマクロを編集するには、次の操作を行います。

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

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

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

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

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

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

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

できないこと

マクロでできることにはいくつかの制限があります。

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

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

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

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

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

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

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

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