Apps Script には、デベロッパーと他のデベロッパーがスクリプト、アドオン、ウェブアプリを一緒に構築、保守するのに役立つ機能がいくつか用意されています。
コラボレーションの基本
プロジェクトで共同作業を行うには、あなたと共同編集者全員が Apps Script プロジェクト ファイル(およびバインドされたスクリプトの場合はそのコンテナ)に対する編集者アクセス権を持っている必要があります。これにより、チームの全員が Apps Script コードを確認して変更できます。また、エディタでは、新しいコード バージョンの作成、アドオンの公開、スクリプトの展開(ウェブアプリまたは Apps Script API の実行ファイルとしてのデプロイ)も可能です。
プロジェクト、アドオン、ウェブアプリのデプロイと公開の処理方法(該当する場合)を事前に計画することで、チームを支援できます。スタンドアロン プロジェクトは、Google ドライブに直接表示され、アドオンやウェブアプリの開発に推奨されるプロジェクト タイプであるため、通常は簡単に共同作業できます。
共同作業でよく問題になるのは、スクリプトのプロジェクト オーナーがチームのオーナー権限をチームの他の誰かに移すことなくチームを離れるときです。この場合、プロジェクトを維持または更新できなくなる可能性があります。スクリプト プロジェクトを共有ドライブに配置することで、共有ドライブ内のファイルに特定のオーナーがいないため、この問題を回避できます。
clasp
コマンドライン ツールによるコラボレーション
clasp
を使用すると、script.google.com とローカル ファイル システムとの間でプロジェクトを同期できます。これにより、デベロッパーと共同編集者が git
などのソース管理管理ソフトウェアを使用している場合に、コード開発を合理化して自動化できます。
詳細については、clasp
を使用したコマンドライン インターフェースのガイドをご覧ください。
共有ドライブとのコラボレーション
共有ドライブ(旧称「チームドライブ」)は、Google ドライブの共有スペースを提供します。この機能を使用すると、ドライブ ユーザーのグループがより効果的に共同作業を行えます。共有ドライブ内のファイルは、個人ではなくグループ全体が所有します。つまり、共同編集者がグループを退会しても、ファイルのオーナー権限や管理権限は付与されません。
共有ドライブでは、ドメイン間でファイルを移動することもできます。あるドメインの共有ドライブに、そのドメインのファイルを共有ドライブに移動できる別のドメインの共同編集者を含めることができます。これは、チームが異なるドメイン内の顧客向けにアドオン、ウェブアプリ、その他のコードを開発する手段となるため、Apps Script デベロッパーにとって非常に価値のあるものです。
共有ドライブを使用して Apps Script プロジェクトで共同編集する場合は、次の点に注意してください。
- 共有ドライブに対する編集権限がある共同編集者は、新しいファイルの作成や共有ドライブへの移動ができます。スクリプト編集者は、スクリプトのプロジェクトの表示と編集、スクリプト コードの実行、新しいスクリプト バージョンの作成、アドオンの公開を行うことができます。
- スクリプトを Apps Script API のウェブアプリまたは実行可能ファイルとしてデプロイするには、デプロイを作成するアカウントが、スクリプトが存在する共有ドライブと同じドメインに属している必要があります。
- 共有ドライブを使用すると、共有ドライブ内の特定のファイルをグループ外の他のユーザーと共有できます。また、これらのファイルを編集して他のドライブ ファイルと同様に閲覧権限や表示権限を変更することもできます。ただし、ユーザーが共有ドライブが属するチームに属している場合は、特定のファイルに対するユーザーのアクセス権を減らすことはできません。たとえば、あるユーザーが共有ドライブに対する編集権限を持っている場合、その共有ドライブ内の特定のファイルに対する閲覧権限のみに変更することはできません。
- 共有ドライブへの完全なアクセス権を持つ共同編集者は、上記に加えて、ファイルや Apps Script プロジェクトを削除したり、共有ドライブからファイルを移動したりできます。
- すべてのコンテナにバインドされたスクリプトは、コンテナ ファイルで定義されているのと同じ閲覧者および編集者のアクセスリストを使用します。たとえば、Google スプレッドシートの編集権限を持っている場合、そのスプレッドシートに関連付けられている Apps Script プロジェクト コードも編集できます。このようなコンテナ ファイルを共有ドライブに配置すると、共有ドライブの共同編集者はコンテナ自体の場合と同じスクリプト コードにアクセスできるようになります。
- 共有ドライブにスクリプト プロジェクトが存在する場合、Cloud Platform(GCP)プロジェクトへのアクセスが制限される可能性があります。詳しくは、GCP プロジェクトと共有ドライブのガイドをご覧ください。
- あるドメインにデプロイされたウェブアプリは、所有権が別のドメインの共有ドライブまたはアカウントが変更されると、機能しなくなります。この問題は、スクリプトを元のドメインに戻すことで修正できます。
- 同様に、Apps Script API 実行可能ファイルとしてデプロイされているスクリプト プロジェクトは、共有ドライブを介して別のドメインに移動すると、API によって呼び出されると機能しなくなります。これは、スクリプトを元のドメインに戻すことで修正できます。
プロジェクト共有での共同作業
また、プロジェクトをすべての共同編集者と直接共有して、共同作業を行うこともできます。通常の Google ドライブ フォルダまたは共有ドライブにあるスクリプト プロジェクトを直接共有できます。この方法を使用する場合は、スクリプトを誰が所有、保守するか、時間をかけて慎重に計画することをおすすめします。
スタンドアロン プロジェクトは、Google ドライブにファイルとして表示され、他のファイルと同じように共有できます。詳しくは、ファイルとフォルダを共有するをご覧ください。
コンテナにバインドされたプロジェクトは Google ドライブに表示されません。コンテナにバインドされたプロジェクトを共有するには、親コンテナ ファイルを共有するだけです。たとえば、Google スプレッドシートにバインドされたスクリプトがある場合、そのスクリプトを Google スプレッドシートの編集者にすることで、そのユーザーを編集者にできます。コンテナ ファイルの閲覧者と編集者のアクセス設定は、そのコンテナ内のすべてのプロジェクトに継承されます。
すべてのコンテナにバインドされたスクリプトは、コンテナ ファイルに対して定義されている同じオーナー、閲覧者、編集者のアクセスリストを使用します。新しいスクリプト プロジェクトの所有権は、誰が作成したかにかかわらず、コンテナ オーナーによって取得されます。
コラボレーション リソースとプロジェクト リソース
リソースとは、プロジェクトに関連付けられているものの、そのコードから独立して存在するエンティティです。このセクションでは、プロジェクトのコラボレーションがリソース(特に Cloud Platform プロジェクト、トリガー、ライブラリ、ユーザー プロパティ)にどのように影響するかについて説明します。
共同作業と Cloud Platform プロジェクト
すべての Apps Script プロジェクトには、Cloud Platform(GCP)プロジェクトが関連付けられています。GCP プロジェクトには独自のオーナー、編集者、その他のロールのセットがあり、スクリプト プロジェクトにアクセスできるユーザーのセットとは異なる場合があります。
スクリプト プロジェクトがアドオンとして公開される場合は、標準の GCP プロジェクトを使用する必要があります。標準の GCP プロジェクトを使用するアプリケーションでコラボレーションを行う場合は、すべての共同編集者に適切なアクセスレベルが付与されるように、GCP のオーナーとロールを構成することをおすすめします。これにより、プロジェクトのオーナーは退職してプロジェクトの Cloud 設定にアクセスできなくなる状況を回避できます。これは、アドオンにとって特に重要です。
コラボレーションとトリガー
プロジェクトで共同編集を行う場合、作成したインストール可能なトリガーは、プロジェクトにアクセスできるユーザーと共有されません。すべての共同編集者に対して一貫したトリガー設定が必要な場合は、スクリプト サービスを使用して実行時にトリガーを作成できます。詳細については、トリガーをプログラムで管理するをご覧ください。
コラボレーションとライブラリ
プロジェクトに含まれるライブラリは、プロジェクトの共同編集者が使用できます。ただし、インクルードされたライブラリに対する少なくとも読み取りレベルのアクセス権がない場合は、それらのライブラリを使用できません。この場合、スクリプトはエラーをスローします。ライブラリの詳細については、ライブラリの管理をご覧ください。
コラボレーションとユーザー プロパティ
ユーザー プロパティは、作成したユーザーに固有のものです。つまり、プロジェクトの共同編集者はユーザー プロパティの閲覧やアクセスができず、同プロジェクトのユーザー プロパティの閲覧やアクセスはできません。プロジェクト固有のプロパティを共同編集者と共有する場合は、スクリプト プロパティを使用します。詳細については、プロパティ ガイドをご覧ください。