ライブラリは、他のスクリプトで関数を再利用できるスクリプト プロジェクトです。
図書館を利用する
プロジェクトにライブラリを含めるには、少なくとも表示レベルのアクセス権が必要です。追加するライブラリの作成者でない場合は、作成者に連絡してアクセス権をリクエストしてください。
追加するライブラリのスクリプト ID が必要です。ライブラリにアクセスできる場合は、[プロジェクトの設定]
ページでスクリプト ID を確認できます。スクリプト プロジェクトにライブラリを追加する
- Apps Script エディタの左側にある [ライブラリ] の横にあるライブラリの追加アイコン をクリックします。
- [スクリプト ID] に、ライブラリのスクリプト ID を貼り付けます。
- [検索] をクリックします。
- [Version] プルダウンをクリックして、使用するライブラリのバージョンを選択します。
- デフォルトの「識別子」名が、このライブラリで使用する名前かどうかを確認します。これは、スクリプトでライブラリを参照するために使用する名前です。たとえば、
Test
に設定した場合は、Test.libraryMethod()
のようにそのライブラリのメソッドを呼び出すことができます。 - [追加] をクリックします。
ライブラリを使用する
デフォルトのサービスの場合と同様に、インクルードされているライブラリを使用します。たとえば、ライブラリの ID が Test
の場合は、Test
の直後にピリオドを入力して、ライブラリ内のメソッドのリストを表示します。
含まれるライブラリのリファレンス ドキュメントを開く手順は次のとおりです。
スクリプト エディタの左側にあるライブラリ名の横にあるその他アイコン
> [新しいタブで開く] をクリックします。ライブラリを削除する
スクリプト エディタの左側にあるライブラリ名の横にあるその他アイコン
> 削除 > ライブラリを削除をクリックします。ライブラリを更新する
ライブラリのバージョンを変更したり、ID を更新したりできます。
- エディタの左側にある [ライブラリ] で、ライブラリの名前をクリックします。
- 変更を加えて、[保存] をクリックします。
ライブラリを作成して共有する
スクリプト プロジェクトをライブラリとして使用、共有する手順は次のとおりです。
- スクリプトのバージョニングされた Deployment を作成します。
- ライブラリのすべてのユーザー候補に、少なくとも閲覧レベルのアクセス権を共有します。
- それらのユーザーにスクリプト ID を付与します。この ID は、[プロジェクトの設定] ページで確認できます。
ベスト プラクティス
ライブラリを作成する際のガイドラインは次のとおりです。
- ライブラリが他のユーザーによって含められるときにデフォルトの ID として使用されるため、プロジェクトに意味のある名前を選択します。
- スクリプトの 1 つ以上のメソッドをライブラリ ユーザーに表示(または使用)させないようにするには、メソッド名をアンダースコアで終わらせます。たとえば、
myPrivateMethod_()
です。 - ライブラリのユーザーには、列挙可能なグローバル プロパティのみが表示されます。これには、関数の宣言、
var
を使用して関数の外部で作成された変数、グローバル オブジェクトに明示的に設定されたプロパティが含まれます。たとえば、Object.defineProperty()
でenumerable
をfalse
に設定すると、ライブラリで使用できるシンボルが作成されますが、ユーザーはこのシンボルにアクセスできません。 ライブラリのユーザーがスクリプト エディタの予測入力と自動生成されたドキュメントを使用できるようにするには、すべての関数に対して 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) {
return ScriptProperties.getProperty(key);
}
次の図は、スクリプト プロパティの例を使用して、共有されていないリソースを示しています。
次の表に、共有リソースと非共有リソースの一覧を示します。
リソース | 共有* | 共有なし** | メモ |
---|---|---|---|
ロック | ライブラリで作成された場合、同じインスタンスがスクリプトを含むすべてのユーザーに表示されます。 | ||
スクリプト プロパティ | ライブラリで作成された場合、同じインスタンスがスクリプトを含むすべてのユーザーに表示されます。 | ||
キャッシュ | ライブラリで作成された場合、同じインスタンスがスクリプトを含むすべてのユーザーに表示されます。 | ||
トリガー | ライブラリで作成された単純なトリガーは、包含スクリプトによってトリガーされません。 | ||
ScriptApp | |||
UiApp | |||
ユーザー プロパティ | |||
ロガーと実行トランスクリプト | |||
サイト、シート、その他のコンテナ | getActive() を呼び出すと、包含スクリプトのコンテナが返されます。 |
||
MailApp と GmailApp | |||
* つまり、ライブラリには機能やリソースの独自のインスタンスがなく、ライブラリを呼び出したスクリプトによって作成されたインスタンスが使用されています。
** これは、ライブラリがリソース/機能の独自のインスタンスを持ち、ライブラリを使用するすべてのスクリプトが同じインスタンスを共有し、アクセスできることを意味します。 |
ライブラリをテストする
ライブラリをテストするには、ヘッド デプロイメントを使用します。スクリプトにエディタレベルのアクセス権を持つユーザーは、ヘッド デプロイを使用できます。
ライブラリをデバッグする
ライブラリを含むプロジェクトでデバッガを使用すると、ライブラリの関数にステップインできます。コードがデバッガに表示されます。表示専用モードで、正しいバージョンです。