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 ドライブ フォルダに Apps Script プロジェクトを作成または移動すると、そのユーザーは、そのフォルダに対するアクセス権と同じアクセス権を Apps Script プロジェクトに対して継承します。例:
- フォルダの編集権限を持つユーザーは、Apps Script プロジェクトを編集または削除し、スクリプトを実行できます。
- フォルダの閲覧権限のみが付与されているユーザーは、Apps Script プロジェクトを表示してスクリプトを実行できます。
プロジェクトの共有でコラボレーションする
プロジェクトをすべての共同編集者と直接共有することで、プロジェクトで共同作業できます。通常の Google ドライブ フォルダや共有ドライブにあるスクリプト プロジェクトを直接共有できます。この方法を使用する場合は、スクリプトを所有し、長期にわたって維持する担当者を慎重に計画することをおすすめします。
スタンドアロン プロジェクトは Google ドライブにファイルとして表示され、他のファイルと同様に共有できます。詳細については、ファイルとフォルダの共有をご覧ください。
コンテナにバインドされたプロジェクトは Google ドライブに表示されません。コンテナバインドされたプロジェクトを共有するには、親コンテナ ファイルを共有します。たとえば、Google スプレッドシートのスプレッドシートにバインドされたスクリプトがある場合は、スプレッドシートの編集者をスクリプトの編集者にすることができます。コンテナにバインドされたプロジェクトは、コンテナ ファイルの閲覧者と編集者のアクセス設定を継承します。
コンテナにバインドされたすべてのスクリプトは、コンテナ ファイルに定義されている所有者、閲覧者、編集者のアクセスリストを使用します。新しいスクリプト プロジェクトの所有権は、作成者に関係なくコンテナ オーナーが取得します。
コラボレーションとプロジェクトのリソース
リソースは、プロジェクトに関連付けられているが、コードとは独立して存在するエンティティです。このセクションでは、プロジェクトでのコラボレーションがリソース(特に Cloud Platform プロジェクト、トリガー、ライブラリ、ユーザー プロパティ)に与える影響について説明します。
コラボレーションと Google Cloud プロジェクト
すべての Apps Script プロジェクトには、関連付けられた Google Cloud プロジェクトがあります。Google Cloud プロジェクトには、オーナー、編集者などの独自のロールがあります。これは、スクリプト プロジェクトにアクセスできるユーザーのセットとは異なる場合があります。
スクリプト プロジェクトをアドオンとして公開する場合は、標準の Google Cloud プロジェクトを使用する必要があります。標準の Google Cloud プロジェクトを使用するアプリケーションでコラボレーションする場合は、Google Cloud の所有者とロールを構成して、すべての共同編集者が適切なレベルのアクセス権を持つようにすることをおすすめします。これにより、オーナーが組織を離れたためにプロジェクトの Cloud 設定にアクセスできなくなる状況を防ぐことができます。これはアドオンでは特に重要です。
コラボレーションとトリガー
プロジェクトで共同編集する場合、作成したインストール可能なトリガーは、プロジェクトにアクセスできるユーザーと共有されません。すべての共同編集者に対して一貫したトリガー設定が必要な場合は、スクリプト サービスを使用して、実行時にプログラムでトリガーを作成できます。詳細については、トリガーをプログラムで管理するをご覧ください。
コラボレーションとライブラリ
プロジェクトに含まれているライブラリは、プロジェクトの共同編集者が使用できます。ただし、含まれるライブラリへの読み取りレベルのアクセス権がない場合、それらのライブラリは使用できません。この場合、スクリプトはエラーをスローします。ライブラリの詳細については、ライブラリの管理をご覧ください。
コラボレーションとユーザー プロパティ
ユーザー プロパティは、作成したユーザーに固有です。つまり、プロジェクトの共同編集者があなたのユーザー プロパティを表示したり、あなたのユーザー プロパティにアクセスしたりすることはできません。プロジェクト固有のプロパティを共同編集者と共有する場合は、スクリプト プロパティを使用します。詳細については、プロパティ ガイドをご覧ください。