ライブラリはスクリプト プロジェクトであり、その関数を他のスクリプトで再利用できます。
ライブラリへのアクセス権を取得する
プロジェクトにライブラリを含めるには、少なくともそのビューに対するアクセス権が必要です。追加するライブラリの作成者ではない場合は、作成者に連絡してアクセス権をリクエストしてください。
追加するライブラリのスクリプト ID が必要です。ライブラリにアクセスできる場合は、プロジェクトの設定
ページでスクリプト ID を確認できます。スクリプト プロジェクトにライブラリを追加する
- Apps Script エディタの左側にある [ライブラリ] の横にある [ライブラリを追加] をクリックします。
- [スクリプト ID] 欄に、ライブラリのスクリプト ID を貼り付けます。
- [Look up] をクリックします。
- [バージョン] プルダウンをクリックし、使用するライブラリのバージョンを選択します。
- デフォルトの「識別子」の名前がこのライブラリで使用するものかどうかを確認します。これは、スクリプトがライブラリを参照する際に使用する名前です。たとえば
Test
に設定すると、そのライブラリのTest.libraryMethod()
のメソッドを呼び出すことができます。 - [追加] をクリックします。
ライブラリを使用する
付属のライブラリは、デフォルトのサービスと同じように使用できます。たとえば、Test
がライブラリの識別子の場合、Test
に続けてピリオドを入力すると、ライブラリ内のメソッドのリストが表示されます。
組み込みライブラリのリファレンス ドキュメントは、次の手順で開くことができます。
スクリプト エディタの左側にあるライブラリ名の横のその他アイコン
> [新しいタブで開く] の順にクリックします。ライブラリを削除する
スクリプト エディタの左側にあるライブラリ名の横にあるその他アイコン
> [削除] > [ライブラリを削除] をクリックします。ライブラリを更新する
ライブラリのバージョンを変更したり、ID を更新したりできます。
- エディタの左側にある [ライブラリ] でライブラリの名前をクリックします。
- 変更を加えて [保存] をクリックします。
ライブラリを作成して共有する
スクリプト プロジェクトをライブラリとして使用して共有する手順は次のとおりです。
- スクリプトのバージョニングされたデプロイを作成する。
- すべての閲覧レベルのアクセス権をライブラリ内のすべてのユーザーと共有します。
- それらのユーザーにスクリプト 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 つあります。共有と非共有の 2 つです。共有リソースとは、ライブラリとインクルードするスクリプトの両方に、リソースの同じインスタンスに対する組み込みアクセス権があることを意味します。次の図は、ユーザー プロパティの例を使用した共有リソースを示しています。
非共有リソースとは、ライブラリとそれに含まれるスクリプトの両方が、リソースのインスタンスに対してのみ組み込みアクセス権を持っていることを意味します。ただし、共有リソースに対して動作する明示的な関数を指定することで、共有されていないリソースへのアクセスを提供できます。スクリプト プロパティを公開するためにライブラリに含める関数の例を次に示します。
function getLibraryProperty(key) {
return ScriptProperties.getProperty(key);
}
次の図は、スクリプト プロパティの例を使用した、共有されていないリソースを示しています。
次の表に、参考用の共有リソースと非共有リソースを示します。
リソース | 共有* | 共有不可** | メモ |
---|---|---|---|
ロック | ライブラリで作成した場合、スクリプトを含むすべてのインスタンスが同じインスタンスに表示されます。 | ||
スクリプト プロパティ | ライブラリで作成した場合、スクリプトを含むすべてのインスタンスが同じインスタンスに表示されます。 | ||
キャッシュ | ライブラリで作成した場合、スクリプトを含むすべてのインスタンスが同じインスタンスに表示されます。 | ||
Triggers | ライブラリで作成された単純なトリガーは、インクルード スクリプトによってトリガーされません。 | ||
Script アプリ | |||
UI アプリ |
|
||
ユーザー プロパティ | |||
ロガーと実行の文字起こし | |||
サイト、スプレッドシート、その他のコンテナ | getActive() の呼び出しは、対象のスクリプトのコンテナを返します。 |
||
MailApp と GmailApp | |||
* これは、ライブラリに機能/リソースの独自のインスタンスがなく、代わりにそれを呼び出したスクリプトによって作成されたインスタンスを使用することを意味します。 ** つまり、ライブラリにはリソース/機能の独自のインスタンスがあり、ライブラリを使用するすべてのスクリプトが同じインスタンスを共有してアクセスできることを意味します。 |
ライブラリをテストする
ライブラリをテストするには、ヘッドデプロイを使用します。スクリプトに対する編集者レベルのアクセス権を持つユーザーなら誰でも、ヘッドデプロイを使用できます。
ライブラリをデバッグする
ライブラリを含むプロジェクトでデバッガを使用すると、含まれているライブラリの関数にステップインできます。コードは、デバッガで表示専用モードの正しいバージョンで表示されます。