他のデベロッパーと共同作業する

Apps Script には、デベロッパーや他のデベロッパーがスクリプト、アドオン、ウェブアプリを共同で作成、管理するための機能が用意されています。

コラボレーションの基本

プロジェクトで共同作業を行うには、管理者と共同編集者の全員が Apps Script プロジェクト ファイル(バインドされたスクリプトの場合はそのコンテナ)に対する編集権限を持っている必要があります。これにより、チームの全員が Apps Script のコードを閲覧して、変更を加えることができます。また、新しいコード バージョンの作成、アドオンの公開、ウェブアプリや Apps Script API の実行ファイルとしてスクリプトをデプロイすることもできます。

プロジェクト、アドオン、ウェブアプリの編集、レビュー、バージョニング、および(該当する場合)デプロイと公開の処理方法を事前に計画することで、チームを支援します。スタンドアロン プロジェクトは、Google ドライブに直接表示され、アドオンやウェブアプリの開発で推奨されるプロジェクト タイプであるため、通常はコラボレーションが最も簡単です。

コラボレーションでよくある問題は、スクリプト プロジェクト オーナーが、プロジェクトの所有権をチームの別の人に譲渡せずにチームを離れる場合に発生します。これにより、プロジェクトを維持または更新できなくなる可能性があります。スクリプト プロジェクトを共有ドライブに配置すると、共有ドライブ内のファイルに固有のオーナーがいないため、この問題を回避できます。

clasp コマンドライン ツールで共同作業する

clasp を使用すると、script.google.com とローカル ファイル システムの間でプロジェクトを同期できます。これにより、ご自身と共同編集者が git などのソース コントロール管理ソフトウェアを使用している場合、コード開発を合理化および自動化できます。

詳細については、clasp を使用したコマンドライン インターフェースのガイドをご覧ください。

共有ドライブで共同編集する

共有ドライブ(旧称「チームドライブ」)は、ドライブ ユーザーのグループが効率的にコラボレーションできる、Google ドライブ内の共有スペースです。共有ドライブ内のファイルは、個人ではなくグループ全体が所有します。つまり、共同編集者がグループを離れても、ファイルのオーナー権限を取得して管理することはできません。

共有ドライブでは、ドメイン間でファイルを移動することもできます。あるドメイン内の共有ドライブに、別のドメインの共同編集者がいて、そのドメインから共有ドライブにファイルを移動できます。これは、異なるドメインのお客様向けにアドオン、ウェブアプリ、その他のコードをチームが開発する手段となるため、Apps Script デベロッパーにとって非常に有用です。

共有ドライブを使用して Apps Script プロジェクトで共同作業を行う場合は、次の点に注意してください。

  1. 共有ドライブに対する編集者のアクセス権を持つ共同編集者は、新しいファイルを作成したり、共有ドライブに新しいファイルを移動したりできます。スクリプト編集者は、スクリプト プロジェクトの表示と編集、スクリプト コードの実行、新しいバージョンのスクリプトの作成、アドオンの公開を行うことができます。
  2. スクリプトを Apps Script API のウェブアプリまたは実行ファイルとしてデプロイするには、デプロイを作成するアカウントが、スクリプトが存在する共有ドライブと同じドメインに属している必要があります。
  3. 共有ドライブを使用すると、共有ドライブ内の特定のファイルをグループ外のユーザーと共有し、他のドライブ ファイルと同様にファイルの編集権限と閲覧権限を更新できます。ただし、共有ドライブが属するチームのメンバーである場合、特定のファイルに対するユーザーのアクセス権を減らすことはできません。たとえば、ユーザーに共有ドライブの編集権限がある場合、その共有ドライブ内の特定のファイルに対する表示専用権限に変更することはできません。
  4. 共有ドライブへの完全アクセス権を持つ共同編集者は、ファイルと Apps Script プロジェクトを削除したり、共有ドライブからファイルを移動したりすることもできます。
  5. すべてのコンテナにバインドされたスクリプトは、コンテナ ファイルに定義されている閲覧者と編集者の同じアクセスリストを使用します。たとえば、Google スプレッドシートに対する編集権限がある場合は、そのスプレッドシートに添付された Apps Script プロジェクト コードの編集権限も付与されます。このようなコンテナ ファイルを共有ドライブ内に配置すると、共有ドライブの共同編集者にはコンテナ自体の場合と同じく、スクリプト コードに対するアクセス権が付与されます。
  6. スクリプト プロジェクトが共有ドライブ内にある場合、その Cloud Platform(GCP)プロジェクトへのアクセスは制限されることがあります。詳しくは、GCP プロジェクトと共有ドライブ ガイドをご覧ください。
  7. 所有権が別のドメインの共有ドライブまたはアカウントに変更されると、あるドメインにデプロイされたウェブアプリは機能しなくなります。これは、スクリプトを元のドメインに戻すことで修正できます。
  8. 同様に、Apps Script API の実行可能ファイルとしてデプロイされたスクリプト プロジェクトも、共有ドライブ経由で別のドメインに移動すると、API から呼び出されたときに機能が停止します。これは、スクリプトを元のドメインに戻すことで修正できます。

共有フォルダでコラボレーションする

共有ドライブで共同編集できない場合は、代わりに共有フォルダを使用できます。Apps Script プロジェクトを作成または他のユーザーがアクセスできる Google ドライブ フォルダに移動すると、そのフォルダに対するのと同じ 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 のオーナーとロールを構成することをおすすめします。これにより、オーナーが組織を離れたためにプロジェクトのクラウド設定にアクセスできなくなる事態を防ぐことができます。これは、アドオンで特に重要です。

コラボレーションとトリガー

プロジェクトで共同作業するときに、作成したインストール可能なトリガーは、プロジェクトにアクセスできるユーザーと共有されません。すべての共同編集者に対して一貫したトリガーを設定する必要がある場合は、スクリプト サービスを使用して、実行時にトリガーをプログラムで作成できます。詳細については、プログラムによるトリガーの管理をご覧ください。

コラボレーションとライブラリ

プロジェクトの共同編集者は、プロジェクトに含まれるライブラリを使用できます。 ただし、インクルードされたライブラリに対して少なくとも読み取りレベルのアクセス権がない場合、それらのライブラリは使用できません。この場合、スクリプトはエラーをスローします。ライブラリの詳細については、ライブラリの管理をご覧ください。

コラボレーションとユーザー プロパティ

ユーザー プロパティは、それを作成したユーザーに固有のプロパティです。つまり、プロジェクトの共同編集者は、あなたのユーザー プロパティを表示することも、アクセスすることもできません。また、あなたがそれらのプロパティを表示することも、アクセスすることもできません。プロジェクト固有のプロパティを共同編集者と共有する場合は、スクリプト プロパティを使用します。詳細については、プロパティ ガイドをご覧ください。