ライブラリ

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

ライブラリへのアクセス

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

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

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

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

ライブラリを使用する

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

インクルードされたライブラリのリファレンス ドキュメントは、次の手順で開くことができます。

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

ライブラリを削除する

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

ライブラリを更新する

ライブラリのバージョンの変更や、ライブラリの ID の更新を行うことができます。

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

ライブラリを作成、共有する

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

  1. スクリプトのバージョニングされたデプロイを作成します。
  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
ユーザー プロパティ
ロガーと実行の文字起こし
サイト、スプレッドシート、その他のコンテナ getActive() を呼び出すと、含まれるスクリプトのコンテナが返されます。
MailApp と GmailApp
* つまり、ライブラリには機能またはリソースの独自のインスタンスはなく、代わりにそれを呼び出したスクリプトによって作成されたインスタンスが使用されます。
** ライブラリには独自のリソース/機能インスタンスがあり、ライブラリを使用するすべてのスクリプトが同じインスタンスを共有し、アクセスすることを意味します。

ライブラリをテストする

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

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

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