ライブラリは、他のスクリプトで関数を再利用できるスクリプト プロジェクトです。
ライブラリにアクセスする
ライブラリをプロジェクトに含めるには、少なくとも表示レベルのアクセス権が必要です。含めるライブラリの作成者でない場合は、作成者に連絡してアクセス権をリクエストします。
含めるライブラリのスクリプト ID が必要です。ライブラリにアクセスできる場合は、[プロジェクトの設定]
ページでスクリプト ID を確認できます。スクリプト プロジェクトにライブラリを追加する
- Apps Script エディタの左側で、[ライブラリ] の横にある [ライブラリを追加] をクリックします。
- [スクリプト ID] フィールドに、ライブラリのスクリプト ID を貼り付けます。
- [Look up] をクリックします。
- [バージョン] プルダウンをクリックして、使用するライブラリのバージョンを選択します。
- デフォルトの「Identifier」名が、このライブラリで使用したい名前かどうかを確認します。これは、スクリプトがライブラリを参照するために使用する名前です。たとえば、
Test
に設定すると、次のようにライブラリのメソッドを呼び出すことができます。Test.libraryMethod()
- [追加] をクリックします。
ライブラリを使用する
デフォルトのサービスを使用する場合と同様に、含まれているライブラリを使用します。たとえば、ライブラリの識別子が Test
の場合は、Test
の直後にピリオドを入力すると、ライブラリ内のメソッドのリストが表示されます。
含まれているライブラリの参照ドキュメントを開く手順は次のとおりです。
スクリプト エディタの左側にあるライブラリ名の横にある [その他]
> [新しいタブで開く] をクリックします。ライブラリを削除する
スクリプト エディタの左側にあるライブラリ名の横にあるその他アイコン
> [削除] > [ライブラリを削除] をクリックします。ライブラリを更新する
ライブラリのバージョンを変更したり、識別子を更新したりできます。
- エディタの左側にある [ライブラリ] で、ライブラリの名前をクリックします。
- 変更を加えて、[保存] をクリックします。
ライブラリを作成して共有する
スクリプト プロジェクトをライブラリとして使用して共有する手順は次のとおりです。
- スクリプトのバージョン管理されたデプロイを作成します。
- ライブラリのすべての潜在的なユーザーと、少なくとも閲覧レベルのアクセス権を共有します。
- これらのユーザーに、[プロジェクトの設定] ページで確認できるスクリプト ID を提供します。
ベスト プラクティス
ライブラリを作成する際のガイドラインは次のとおりです。
- ライブラリが他のユーザーによって含まれるときにデフォルトの識別子として使用されるため、プロジェクトには意味のある名前を選択してください。
- スクリプトの 1 つ以上のメソッドをライブラリ ユーザーに表示(使用)させたくない場合は、メソッド名の末尾にアンダースコアを追加します。例:
myPrivateMethod_()
- ライブラリ ユーザーには、列挙可能なグローバル プロパティのみが表示されます。これには、関数宣言、
var
を使用して関数の外部で作成された変数、グローバル オブジェクトで明示的に設定されたプロパティが含まれます。たとえば、enumerable
をfalse
に設定したObject.defineProperty()
は、ライブラリで使用できるシンボルを作成しますが、このシンボルはユーザーがアクセスできません。 ライブラリのユーザーがスクリプト エディタの自動補完と自動生成されたドキュメントを利用できるようにするには、すべての関数に JSDoc スタイルのドキュメントが必要です。次の例をご覧ください。
/** * Raises a number to the given power, and returns the result. * * @param {number} base the number we're raising to a power * @param {number} exp the exponent we're raising the base to * @return {number} the result of the exponential calculation */ function power(base, exp) { ... }
リソースのスコープ設定
ライブラリを使用する場合、リソースには共有と非共有の 2 種類があります。共有リソースとは、ライブラリとインクルード スクリプトの両方が、リソースの同じインスタンスへの組み込みアクセス権を持っていることを意味します。次の図は、ユーザー プロパティの例を使用して共有リソースを示しています。
共有されないリソースとは、ライブラリとそれを組み込むスクリプトの両方が、リソースのインスタンスにのみ組み込みアクセス権を持つことを意味します。ただし、ライブラリは、共有されていないリソースを操作する明示的な関数を持つことで、それらのリソースへのアクセスを提供できます。ライブラリに含めてスクリプト プロパティを公開する関数の例を次に示します。
function getLibraryProperty(key) {
const scriptProperties = PropertiesService.getScriptProperties();
return scriptProperties.getProperty(key);
}
次の図は、スクリプト プロパティの例を使用して、共有されていないリソースを示しています。
次の表に、共有リソースと非共有リソースを示します。
リソース | 共有* | Not-Shared** | メモ |
---|---|---|---|
ロック | ライブラリで作成された場合、同じインスタンスがスクリプトを含むすべてに表示されます。 | ||
スクリプト プロパティ | ライブラリで作成された同じインスタンスは、スクリプトを含むすべてのユーザーに表示されます。 | ||
キャッシュ | ライブラリで作成された場合、同じインスタンスがスクリプトを含むすべてに表示されます。 | ||
トリガー | ライブラリで作成された単純なトリガーは、含むスクリプトによってトリガーされません。 | ||
ScriptApp | |||
UiApp |
|
||
ユーザー プロパティ | |||
ロガーと実行トランスクリプト | |||
サイト、スプレッドシート、その他のコンテナ | getActive() を呼び出すと、インクルード スクリプトのコンテナが返されます。 |
||
MailApp と GmailApp | |||
* これは、ライブラリに機能/リソースの独自のインスタンスがなく、代わりにそれを呼び出したスクリプトによって作成されたインスタンスを使用していることを意味します。 ** これは、ライブラリにリソース/機能の独自のインスタンスがあり、ライブラリを使用するすべてのスクリプトがその同じインスタンスを共有してアクセスできることを意味します。 |
ライブラリをテストする
ライブラリをテストするには、ヘッド デプロイを使用します。スクリプトに対する編集者レベルのアクセス権を持つユーザーは、ヘッド デプロイを使用できます。
ライブラリをデバッグする
ライブラリを含むプロジェクトでデバッガを使用すると、組み込まれたライブラリの関数にステップインできます。コードは、表示専用モードのデバッガに正しいバージョンで表示されます。