スクリプトが スタンドアロン スクリプトとしてではなく、Google スプレッドシート、Google ドキュメント、Google スライド、Google フォームのファイルから作成された場合、そのスクリプトはそれらのファイルにバインドされます。バインドされたスクリプトが添付されているファイルは「コンテナ」と呼ばれます。バインドされたスクリプトは、通常、スタンドアロン スクリプトと同様に動作しますが、Google ドライブには表示されず、バインド先のファイルから切り離すことはできません。また、親ファイルに対していくつかの特別な権限が付与されます。
スクリプトは Google サイトにバインドすることもできますが、これらのスクリプトはほとんどの場合、ウェブアプリとしてデプロイされます。スプレッドシート、ドキュメント、スライド、フォームにバインドされたスクリプトもウェブアプリになることがありますが、これは一般的ではありません。
バインドされたスクリプトは、バインド先のファイルでのみ機能する、非公開の Google Workspace アドオンです。
バインドされたスクリプトを作成する
バインドされたスクリプトは、ドキュメント、スプレッドシート、スライド、フォームで作成できます。
ドキュメント、スプレッドシート、スライド
ドキュメント、スプレッドシート、スライドでバインドされたスクリプトを作成するには、ドキュメント、スプレッドシート、プレゼンテーションを開き、[拡張機能] > [Apps Script] をクリックします。今後スクリプトを再度開くには、同じ操作を行うか、Apps Script ダッシュボードからスクリプトを開きます。
フォーム
フォームでバインドされたスクリプトを作成するには、フォームを開き、その他アイコン > [スクリプト エディタ] をクリックします。今後スクリプトを再度開くには、同じ操作を行うか、Apps Script ダッシュボードからスクリプトを開きます。
clasp ツールではバインドされたスクリプトを作成できませんが、クローンを作成して編集することはできます。
特殊メソッド
バインドされたスクリプトは、スタンドアロン スクリプトでは呼び出すことができないメソッドをいくつか呼び出すことができます。
getActiveSpreadsheet、getActiveDocument、getActivePresentation、getActiveFormを使用すると、バインドされたスクリプトは、ファイルの ID を参照せずに親ファイルを参照できます。getUiを使用すると、バインドされたスクリプトは親ファイルのユーザー インターフェースにアクセスして、カスタム メニュー、ダイアログ、サイドバーを追加できます。- スプレッドシートでは、
getActiveSheet、getActiveRange、getActiveCellを使用すると、スクリプトでユーザーの現在のシート、選択したセル範囲、選択した個々のセルを特定できます。setActiveSheetとsetActiveRangeを使用すると、スクリプトでこれらの選択を変更できます。 - ドキュメントでは、
getActiveTab、getCursor、getSelectionを使用すると、スクリプトでユーザーの現在のタブ、カーソルの位置、選択したテキストを特定できます。setActiveTab、setCursor、setSelectionを使用すると、スクリプトでこれらの選択を変更できます。
詳しくは、スプレッドシートを拡張するガイドまたは ドキュメントを拡張するガイドをご覧ください。
これらのメソッドは、スクリプト エディタ、メニュー項目、ダイアログ、サイドバー、トリガーから実行されるバインドされたスクリプトでのみ使用できます。バインドされたスクリプトがウェブアプリとして実行される場合や、Google Apps Script API を使用して実行される場合、これらのメソッドは使用できません。
カスタム メニュー、ダイアログ、サイドバー
バインドされたスクリプトは、カスタム メニューやダイアログ ボックスまたはサイドバーを追加して、スプレッドシート、ドキュメント、フォームをカスタマイズできます。スクリプトは、開いているファイルの現在のインスタンスのユーザー インターフェースとのみやり取りできます。1 つのドキュメントにバインドされたスクリプトは、別のドキュメントのユーザー インターフェースに影響を与えることはできません。
トリガー
バインドされたスクリプトでは、編集権限を持つユーザーがファイルを開くたびに自動的に実行される特別な onOpen 関数などのシンプルなトリガーを使用できます。他のすべての種類のスクリプトと同様に、インストール可能なトリガーも使用できます。
カスタム関数
カスタム関数は、Sheets にバインドされたスクリプト内の関数で、構文 =myFunctionName() を使用してセルから直接呼び出します。カスタム関数は、AVERAGE や SUM などの Google スプレッドシートの数百もの組み込み関数と似ていますが、カスタム関数の動作を定義するのはユーザーです。
バインドされたスクリプトへのアクセス
コンテナの編集権限を持つユーザーのみが、そのバインドされたスクリプトを実行できます。閲覧権限のみを持つ共同編集者は、スクリプト エディタを開くことができません。コンテナ ファイルのコピーを作成すると、コピーの所有者になり、スクリプトのコピーを表示して実行できます。
スクリプトのコンテナ ファイルを共有する方法については、ドライブのファイルを共有するをご覧ください。
コンテナ バインド スクリプトはすべて、コンテナ ファイルに定義された同じオーナー、閲覧者、編集者のアクセス リストを使用します。コンテナ オーナーは、作成者に関係なく、新しいスクリプト プロジェクトの所有権を取得します。