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