Google Apps Script(GAS)でスプレッドシートに編集権限・共有設定を付与する方法

Googleの表計算サービス「SpreadSheet(スプレッドシート)」の編集権限(共有)を、Google Apps Script(GAS)を使って設定する方法を解説したいと思います。

スプレッドシートの編集権限は、GUI上で他のユーザーに簡単に付与できますが、実はスプレッドシートの共有設定は、GASのスクリプトでも設定することが可能です。

 

スプレッドシートに権限付与するGASのコマンド

スプレッドシートに他のユーザーの権限を付与するコマンドは「addEditor」です。SpreadSheetクラスのオブジェクトで実行可能なコマンドです。

アクティブなスプレッドシートに対し、「aaaaaaa@gmail.com」ユーザーに編集権限を付与するコードは以下になります。

var mySheet = SpreadsheetApp.getActiveSpreadsheet;
mySheet.addEditor("aaaaaaa@gmail.com")

※スプレッドシートに紐づいたビルドイン型のGoogle Apps Scriptの場合

もし、スプレッドシートに紐付かないスタンドアロン型のGASで行う場合は、以下のように行います。

SpreadsheetApp.openById("スプレッドシートのID")
mySheet.addEditor("aaaaaaa@gmail.com")

addEditorにはGmailアドレス以外にも、ユーザーオブジェクトも引数に指定できます。

しかし、G Suiteなどの有料版を使わない限り、メールアドレスを指定して編集権限を付与します。

 

GASで編集権限を付与するメリット

Google Apps Scirptでスプレッドシートの編集権限を付与するのに、どういったメリット・利便性があるかと思う方もいらっしゃると思います。

通常のスプレッドシート利用の場合は、Webブラウザ上で指定するユーザーの権限を付与すればよいため、それほど利便性はありません。

しかし、GASで自動的にレポートを作成しているケースでは、編集権限を付与できるのは大きなメリットです。

スプレッドシート上でレポートの共有ユーザーを管理しておけば、GASで作ったスプレッドシートの表がそのまま共有可能です。

さらに管理簿を修正すれば、担当者の追加・削除も容易になります。

 

スプレッドシート共有設定のGASサンプルコード

指定したスプレッドシートに対し、共有設定を行うための、Google Apps Scirptのサンプルコードを紹介します。

  1. 新しいスプレッドシートを作成
  2. スプレッドシート上にデータを入力
  3. test@gmail.comユーザーに編集権限付与

というコードを紹介します。

function createDocument(){
//新しいスプレッドシートを作成する
var newSheet = SpreadsheetApp.create("テストシート);
/*
作成したスプレッドシート上にデータを出力する
*/
//スプレッドシートにtest@gmai.comユーザーに編集権限を付与する
newSheet.addEditor("test@gmail.com");
}

Googleドキュメントでも設定可能

ここまでGoogleスプレッドシートで編集権限を付与するコードを紹介しましたが、Googleドキュメントでも設定することができます。

コマンドはスプレッドシートと同じ「addEditor」です。

 

DriveAppクラスでaddEditorコマンドの注意点

もう1つの権限付与の方法として、DriveAppクラスで権限付与したいスプレッドシートを読み込むことでも同様に設定できます。

しかし、DriveAppクラスでスプレッドシートに権限を付与場合、権限を付与したユーザーにメール通知が飛ぶようになります。

通常のスプレッドシートの共有であれば、リンク先を伝えるために通知があったほうがよいですが、GASで自動生成するコンテンツの場合、通知が邪魔になります。

そうした点でスプレッドシートを定義するspreadSheetクラス利用する方が、たくさんのユーザーに権限付与する場合など、不要な通知が飛ばないので便利です。

 

まとめ・終わりに

今回、Googleスプレッドシートの編集権限や共有設定をGoogle Apps Scirpt(GAS)で設定するコードを紹介しました。

「addEditor」を使用することで指定するユーザーに編集権限を付与することができます。

GASで自動生成したレポートや報告書に権限付与ができるので、さらなる自動化に利用することができます。