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

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 から呼び出されたときに機能しなくなります。この問題は、スクリプトを元のドメインに戻すことで修正できます。

共有フォルダで共同編集する

共有ドライブで共同編集できない場合は、代わりに共有フォルダを使用できます。他のユーザーがアクセスできる 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 設定にアクセスできなくなる状況を回避できます。これは、アドオンでは特に重要です。

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

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

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

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

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

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