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 プロジェクトと共有ドライブのガイドのセクションをご覧ください。
- 1 つのドメインにデプロイされたウェブアプリは、所有権が別のドメインの共有ドライブまたはアカウントに変更されると機能しなくなります。この問題は、スクリプトを元のドメインに戻すことで解決できます。
- 同様に、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 の所有者とロールを構成することをおすすめします。これにより、プロジェクトのオーナーが組織を離れたためにプロジェクトの Cloud 設定にアクセスできなくなる状況を防ぐことができます。これは、アドオンでは特に重要です。
コラボレーションとトリガー
プロジェクトで共同編集を行う場合、作成したインストール可能なトリガーは、プロジェクトにアクセスできるユーザーと共有されません。すべての共同編集者に対して一貫したトリガー設定が必要な場合は、スクリプト サービスを使用して、実行時にトリガーをプログラムで作成できます。詳細については、プログラムによるトリガーの管理をご覧ください。
コラボレーションとライブラリ
プロジェクトに含まれるライブラリは、プロジェクトの共同編集者が利用できます。ただし、含まれているライブラリに対する読み取りレベル以上のアクセス権がない場合、それらのライブラリを使用することはできません。この場合、スクリプトはエラーをスローします。ライブラリの詳細については、ライブラリの管理をご覧ください。
コラボレーションとユーザー プロパティ
ユーザー プロパティは、作成したユーザーに固有のものです。つまり、プロジェクトの共同編集者はユーザー プロパティを表示したりアクセスしたりできず、ユーザーも共同編集者のユーザー プロパティを表示したりアクセスしたりできません。プロジェクト固有のプロパティを共同編集者と共有する場合は、スクリプト プロパティを使用します。詳細については、プロパティ ガイドをご覧ください。