アドオンで Google スプレッドシートを拡張する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Google スプレッドシートは、リアルタイムでの共同編集が可能な、データの可視化、処理、通信のための強力なツールを提供するクラウドベースのスプレッドシート ソリューションです。
スプレッドシートは、カスタマイズされたワークフローの改善、サードパーティ システムとの接続の確立、スプレッドシートのデータと他の Google Workspace アプリケーション(Google スライドなど)との統合を行うアドオンで拡張できます。
他のユーザーが作成したスプレッドシート用アドオンは、Google Workspace Marketplace で確認できます。
対応策
Google スプレッドシートを拡張するアドオンを使用すると、次のようなことができます。
スプレッドシート アドオンは Apps Script を使用して作成されます。Apps Script を使用して Google スプレッドシートにアクセスして管理する方法については、Google スプレッドシートの拡張をご覧ください。
シートの構造
Google スプレッドシートは、1 つ以上のシートで構成されています。各シートは基本的に、テキスト、数字、リンク、その他の値を保存できるセルの 2D グリッドです。1 つ以上の隣接するセルのグループを「範囲」と呼びます。
Apps Script のスプレッドシート サービスには、スプレッドシートの組織構造(Sheet
や Range
など)を表すクラスがいくつか用意されています。これらのクラスを使用すると、スプレッドシートのデータと動作を読み取って変更できます。
トリガー
Apps Script のトリガーを使用すると、スプレッドシートを開いたり、アドオンをインストールしたりしたときなど、特定の条件が満たされたときに、スクリプト プロジェクトが指定された関数を実行できるようになります。
スプレッドシート アドオンで使用できるトリガーと、その使用に適用される制限については、アドオンのトリガーをご覧ください。
カスタム関数
Google スプレッドシートには、SUM
や AVERAGE
などの組み込み関数が多数用意されており、Google スプレッドシートのセル内から呼び出すことができます。スプレッドシート アドオンでは、これらの組み込み関数を補完する追加のカスタム関数を定義できます。ユーザーがアドオンをインストールすると、アドオンに含まれる定義済みのカスタム関数がすぐに使用可能になります。アドオンは、カスタム関数定義のみで構成することもできます。カスタム関数定義は、主に定義を含むアドオンを公開することで他のユーザーと共有されます。
アドオンのカスタム関数を作成する
アドオン スクリプト プロジェクトで定義された関数は、カスタム関数として使用できます。関数を実装してアドオンをインストールすると、他の組み込みの Google スプレッドシート関数と同じようにカスタム関数を呼び出すことができます。スプレッドシートのセルに =
を入力し、その後に関数名と必要なパラメータを入力します。エラーがなければ、関数から返された結果がシートのセルに配置され、必要に応じて隣接するセルにオーバーフローします。
アドオンでカスタム関数を作成する場合は、一般的なカスタム関数のガイドラインに沿う必要があります。
また、アドオンで定義されたカスタム関数には、いくつかの特別な考慮事項があります。
- 関数に名前を付けるときは、アドオンの名前に関連するなど、一意の名前を作成してください。インストールされている 2 つ以上のアドオンで同じ名前のカスタム関数が定義されている場合、ユーザーが使用できるのはそのうちの 1 つのみです。
- アドオンが提供するカスタム関数を明確に伝える必要があります。Apps Script がユーザーにオートコンプリート情報を表示できるように、カスタム関数に正確な JSDoc コメントを指定してください。また、アドオン自体またはアドオンのサポート ウェブページで、カスタム関数の追加ドキュメントを提供することも検討してください。
- 30 秒以内に完了しないカスタム関数は、
Internal error executing the custom function
エラーで失敗します。カスタム関数で行う処理の量を制限して、優れたユーザー エクスペリエンスを構築します。可能な場合は関数を最適化します。
- カスタム関数は、承認が必要な Apps Script サービスを使用できません。使用しようとすると、
You do not have permission to call X service
エラーが発生します。カスタム関数では、許可されているサービスのみを使用してください。
- シートのカスタム関数ごとに、Apps Script サーバーへの個別の呼び出しが行われます。ユーザーがカスタム関数を多数のセルで使用しようとすると、関数の実行が遅くなることがあります。この問題を軽減するには、カスタム関数をできるだけシンプルにしてください。関数で複雑な処理や拡張処理を行う必要がある場合は、カスタム関数を使用しないでください。代わりに、メニュー項目、ダイアログ、サイドバーの操作でその機能を提供してください。
スプレッドシートのマクロ
マクロを使用すると、Google スプレッドシートで行った操作を記録し、後でキーボード ショートカットを使用して繰り返すことができます。スプレッドシートでマクロを作成すると、そのスプレッドシートにバインドされた Apps Script プロジェクトにマクロ関数として追加されます。マクロの詳細については、Google スプレッドシートのマクロをご覧ください。
残念ながら、スプレッドシートのマクロをアドオンで配布することはできません。アドオンのマニフェストにマクロ定義を含めると、そのアドオンのユーザーはマクロを使用できなくなります。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-07-31 UTC。
[null,null,["最終更新日 2025-07-31 UTC。"],[[["\u003cp\u003eGoogle Sheets add-ons enhance spreadsheets with custom workflows, external system connections, and integration with other Google Workspace apps.\u003c/p\u003e\n"],["\u003cp\u003eAdd-ons, built using Apps Script, enable data manipulation, custom menus, dialogs, and functions, triggered by specific events.\u003c/p\u003e\n"],["\u003cp\u003eCustom functions extend Google Sheets' built-in formulas, accessible directly within cells, but require adherence to naming and usage guidelines.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Sheet add-ons provide extended functionality but cannot currently distribute or utilize pre-recorded macros.\u003c/p\u003e\n"]]],["Google Sheets add-ons, built with Apps Script, extend functionality by allowing users to read, edit, visualize, and format data. They can access the Google Sheets API, create custom menus, dialogs, sidebars, and custom functions. Add-ons can also use triggers to run functions on specific events. Custom functions, when created within an add-on, become immediately available to users after installation, following specific naming and usage guidelines. Macros, while recordable actions in Sheets, are not distributable with add-ons.\n"],null,["# Extending Google Sheets with add-ons\n\n[Google Sheets](https://workspace.google.com/products/sheets/) is a cloud-based\nspreadsheet solution with real-time collaboration and powerful tools to\nvisualize, process and communicate data.\n\nYou can extend Sheets with add-ons that build customized workflow improvements,\nestablish connectivity to third-party systems, and integrate your Sheets data\nwith other Google Workspace applications (like\nGoogle Slides).\n\nYou can see the Sheets add-ons others have built on the\n[Google Workspace Marketplace](https://workspace.google.com/marketplace/category/works-with-spreadsheet).\n\nWhat you can do\n---------------\n\nHere are a few things you can do with an add-on that extends Google Sheets:\n\n- You can read, edit, visualize, and format data in Google Sheets spreadsheets using the built-in Apps Script [Spreadsheet service](/apps-script/reference/spreadsheet). The service also lets you create and modify conditional formatting and data validation rules.\n- You can use the Apps Script [advanced Sheets service](/apps-script/advanced/sheets) to access the [Google Sheets API](/workspace/sheets/api) directly.\n- You can create [custom menus](/workspace/add-ons/concepts/menus) and define multiple [custom dialogs and sidebars](/workspace/add-ons/concepts/dialogs) interfaces using standard HTML and CSS.\n- You can include [custom function](#custom_functions) definitions in your add-on.\n- You can use add-ons [triggers](#triggers) that run specified functions when certain triggering events occur.\n\nSheets add-ons are built using Apps Script. To learn more about how to access\nand manage Google Sheets with Apps Script, see\n[Extending Google Sheets](/apps-script/guides/sheets).\n\nSheet structure\n---------------\n\nA Google Sheets spreadsheet consists of one or more sheets. Each sheet is\nessentially a 2D grid of cells into which text, numbers, links, or other\nvalues can be stored. A group of one or more adjacent cells is called a\n*range*.\n\nThe Apps Script [Spreadsheet service](/apps-script/reference/spreadsheet)\nprovides several classes to represent organizational structures in Sheets\n(such as [`Sheet`](/apps-script/reference/spreadsheet/sheet) and\n[`Range`](/apps-script/reference/spreadsheet/range)). You can use these\nclasses to read and modify Sheets data and behavior.\n\nTriggers\n--------\n\nApps Script [triggers](/workspace/add-ons/concepts/editor-triggers) let a script project\nexecute a specified function when certain conditions are met, such as when a\nspreadsheet is opened or when an add-on is installed.\n\nSee [add-on triggers](/workspace/add-ons/concepts/editor-triggers) for more information\non what triggers can be used with Sheets add-ons and what restrictions apply\nto their use.\n\nCustom functions\n----------------\n\nGoogle Sheets has a number of\n[built-in functions](https://support.google.com/docs/table/25273?ref_topic=1361471)\nlike `SUM` and `AVERAGE` that can be invoked from within a Google Sheet cell.\nSheets add-ons can define additional\n[custom functions](/apps-script/guides/sheets/functions) to supplement these\nbuilt-in functions. When a user\ninstalls the add-on, any defined custom functions included with the add-on\nbecome available immediately. It is possible for an add-on to consist of\nonly custom function definitions. Custom function definitions are primarily\nshared with others by publishing an add-on containing the definitions.\n\n### Creating add-on custom functions\n\nAny function defined in an add-on script project can be used as a custom\nfunction. Once the function is implemented and the add-on is installed, you\ncan call the custom function like any other built-in Sheets function: in a\nSheet cell, enter the `=` followed by the name of the function and any required\nparameters. If there are no errors, the result returned by the function is\nplaced in the Sheet cell, overflowing to neighboring cells as necessary.\n\nWhen creating custom functions in an add-on you should follow\nthe general custom function guidelines:\n\n- [Function naming guidelines](/apps-script/guides/sheets/functions#naming)\n- [Defining function arguments](/apps-script/guides/sheets/functions#arguments)\n- [Defining the function return value](/apps-script/guides/sheets/functions#return_values)\n- [Custom function data types](/apps-script/guides/sheets/functions#data_types)\n- [Enabling autocomplete using JSDoc](/apps-script/guides/sheets/functions#autocomplete)\n- [Services custom functions can use](/apps-script/guides/sheets/functions#using_apps_script_services)\n- [Optimizing custom functions](/apps-script/guides/sheets/functions#optimization)\n\nIn addition, custom functions defined in add-ons have some special\nconsiderations:\n\n- When naming your function, try to create a unique name, perhaps related to the name of your add-on. If two or more installed add-ons define custom functions with the same name, users can only use one of them.\n- Your add-on should clearly communicate what custom functions it provides. Be sure to provide accurate JSDoc comments for your custom functions so that Apps Script can present [autocomplete](/apps-script/guides/sheets/functions#autocomplete) information to the user. In addition, consider providing additional documentation of the custom functions either in the add-on itself or on an add-on support web page.\n- Custom functions that don't complete in under 30 seconds fail with an `Internal error executing the custom function` error. Build a good user experience by limiting the amount of processing you do in a custom function. [Optimize](/apps-script/guides/sheets/functions#optimization) the function where you can.\n- Custom functions can't use Apps Script services that require authorization, and fail with a `You do not have permission to call X service` error if this is attempted. Only use the [permitted services](/apps-script/guides/sheets/functions#using_apps_script_services) in your custom function.\n- Each custom function in a sheet results in a separate call to the Apps Script servers. If a user attempts to use custom functions in too many cells, the functions may execute slowly. To mitigate this, keep your custom functions as simple as possible. If you need the function to perform complex or extended processing, don't use a custom function---provide that functionality via a menu item, dialog, or sidebar interaction instead.\n\nSheets macros\n-------------\n\n[Macros](https://support.google.com/docs/answer/7665004) let you record actions\ntaken in Google Sheets and repeat them later with a keyboard shortcut. When a\nmacro is created in a sheet, it is added as a *macro function* in an Apps\nScript project [bound](/apps-script/guides/bound) to that sheet. For more\ninformation about macros, see\n[Google Sheets macros](/apps-script/guides/sheets/macros).\n\nUnfortunately, Sheets macros *can't* be distributed with add-ons. If you include\na macro definition in an add-on's manifest, it is unavailable to users of that\nadd-on."]]