ライブラリ

ライブラリは、他のスクリプトで関数を再利用できるスクリプト プロジェクトです。

図書館を利用する

プロジェクトにライブラリを含めるには、少なくともビューレベルのアクセス権が必要です。含めるライブラリの作成者でない場合は、作成者に連絡してアクセス権をリクエストしてください。

含めるライブラリのスクリプト ID が必要です。ライブラリにアクセスできる場合は、[プロジェクトの設定] ページでスクリプト ID を確認できます。

スクリプト プロジェクトにライブラリを追加する

  1. Apps Script エディタの左側にある [ライブラリ] の横にある [ライブラリを追加] をクリックします。
  2. [スクリプト ID] に、ライブラリのスクリプト ID を貼り付けます。
  3. [Look up] をクリックします。
  4. [Version] プルダウンをクリックして、使用するライブラリのバージョンを選択します。
  5. デフォルトの「Identifier」名がこのライブラリで使用する名前かどうかを確認します。これは、スクリプトがライブラリを参照するために使用する名前です。たとえば、Test に設定した場合、Test.libraryMethod() のようにしてそのライブラリのメソッドを呼び出すことができます。
  6. [Add] をクリックします。

ライブラリを使用する

デフォルトのサービスの場合と同様に、インクルードされているライブラリを使用します。たとえば、ライブラリの識別子が Test の場合、Test の直後にピリオドを入力すると、ライブラリ内のメソッドのリストが表示されます。

含まれているライブラリのリファレンス ドキュメントは、次の手順で開くことができます。

スクリプト エディタの左側で、ライブラリ名の横にあるその他アイコン > [新しいタブで開く] をクリックします。

ライブラリを削除する

スクリプト エディタの左側で、ライブラリ名の横にあるその他アイコン > [削除] > [ライブラリを削除] をクリックします。

ライブラリを更新する

ライブラリのバージョンを変更したり、ライブラリの識別子を更新したりできます。

  1. エディタの左側にある [ライブラリ] で、ライブラリの名前をクリックします。
  2. 変更を加えて [保存] をクリックします。

ライブラリを作成して共有する

スクリプト プロジェクトをライブラリとして使用、共有する手順は次のとおりです。

  1. スクリプトのバージョニングされた Deployment を作成します。
  2. ライブラリのすべての潜在的ユーザーと、ビューレベル以上のアクセス権を共有します。
  3. それらのユーザーにスクリプト ID を付与します。この ID は、[プロジェクトの設定] ページで確認できます。

ベスト プラクティス

ライブラリを作成する際は、次のガイドラインに従ってください。

  1. プロジェクトにわかりやすい名前を選択してください。ライブラリが他のライブラリによってインクルードされるときに、デフォルトの識別子として使用されます。
  2. スクリプトの 1 つ以上のメソッドをライブラリ ユーザーに表示されない(または使用できない)ようにしたい場合は、メソッドの名前をアンダースコアで終了できます。たとえば、myPrivateMethod_() です。
  3. ライブラリのユーザーには、列挙可能なグローバル プロパティのみが表示されます。これには、関数宣言、var を使用して関数の外部で作成された変数、グローバル オブジェクトで明示的に設定されたプロパティが含まれます。たとえば、Object.defineProperty()enumerablefalse に設定すると、ライブラリで使用できるシンボルが作成されますが、ユーザーはこのシンボルにアクセスできません。
  4. ライブラリのユーザーがスクリプト エディタの予測入力と自動生成されたドキュメントを使用できるようにするには、すべての関数に対して 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
ユーザー プロパティ
ロガーと実行の文字起こし
Google サイト、スプレッドシート、その他のコンテナ getActive() を呼び出すと、インクルードするスクリプトのコンテナが返されます。
MailApp と GmailApp
* これは、ライブラリが機能/リソースの独自のインスタンスではなく、それを呼び出したスクリプトによって作成されたインスタンスを使用していることを意味します。
** これは、ライブラリがリソース/機能の独自のインスタンスを持ち、ライブラリを使用するすべてのスクリプトが同じインスタンスを共有し、アクセスできることを意味します。

ライブラリをテストする

ライブラリをテストするには、ヘッド デプロイを使用します。スクリプトに対する編集者レベルのアクセス権を持つすべてのユーザーがヘッドデプロイを使用できます。

ライブラリをデバッグする

ライブラリを含むプロジェクトでデバッガを使用する場合、インクルードされているライブラリの関数にステップインできます。コードは、表示専用モードでデバッガに適切なバージョンで表示されます。