Google Apps Script(以下、GAS)は、スプレッドシートやドキュメントなどのGoogleのサービスを操作することができるプログラミング言語です。GASを使うと、スプレッドシートに様々な機能を追加したり、自動化したりすることができます。しかし、スプレッドシートには他のユーザーと共有したい場合もあります。例えば、スプレッドシートのデータを見せたいけれど、編集はさせたくないという場合です。そんなときに便利なのが、addViewerという関数です。
この関数を使うと、スプレッドシートにビューアーと呼ばれる閲覧権限のみを持つユーザーを追加することができます。ビューアーは、スプレッドシートのデータを見ることはできますが、変更や削除はできません。また、ビューアーはGASからのみアクセスできるので、スプレッドシートの共有設定に影響されません。
- addViewer関数の基本的な使い方
- addViewer関数の引数の意味と使い分け
- addViewer関数で追加したビューアーの取得や削除の方法
addViewer関数の基本的な使い方
addViewer関数は、スプレッドシートにビューアーを追加するための関数です。ビューアーは、メールアドレスで指定します。例えば、test@example.comというメールアドレスのユーザーをビューアーとして追加すると、そのユーザーはスプレッドシートのデータを見ることができますが、編集や削除はできません。また、スプレッドシートの共有設定には表示されませんが、GASからは取得や削除ができます。
具体的な例として、test@example.comというメールアドレスのユーザーをビューアーとして追加するスクリプトを紹介します。
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
spreadsheet.addViewer('test@example.com'); // ビューアーを追加
この例では、getActiveSpreadsheet()でアクティブなスプレッドシートを取得し、addViewer(‘test@example.com’)でtest@example.comというメールアドレスのユーザーをビューアーとして追加しています。
addViewer関数の引数の意味と使い分け
addViewer関数は、引数によってビューアーを追加する方法を変えることができます。引数には、以下の3種類があります。
- メールアドレスの文字列
- メールアドレスの配列
- Userオブジェクト
メールアドレスの文字列を引数にすると、そのメールアドレスのユーザーをビューアーとして追加します。これは、前述の例で紹介した方法です。
メールアドレスの配列を引数にすると、その配列に含まれるメールアドレスのユーザーをすべてビューアーとして追加します。これは、複数のユーザーを一度にビューアーとして追加したいときに便利です。
具体的な例として、test1@example.comとtest2@example.comというメールアドレスのユーザーをビューアーとして追加するスクリプトを紹介します。
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
let viewers = ['test1@example.com', 'test2@example.com']; // ビューアーとして追加したいメールアドレスの配列
spreadsheet.addViewer(viewers); // ビューアーを追加
この例では、viewersという変数にビューアーとして追加したいメールアドレスの配列を代入し、addViewer(viewers)でその配列に含まれるユーザーをすべてビューアーとして追加しています。
Userオブジェクトを引数にすると、そのUserオブジェクトが表すユーザーをビューアーとして追加します。Userオブジェクトは、GASのSessionクラスやDriveAppクラスなどで取得できます。これは、現在のユーザーやファイルの所有者などをビューアーとして追加したいときに便利です。
具体的な例として、現在のユーザーをビューアーとして追加するスクリプトを紹介します。
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
let user = Session.getActiveUser(); // 現在のユーザーを取得
spreadsheet.addViewer(user); // ビューアーを追加
この例では、Session.getActiveUser()で現在のユーザーを取得し、addViewer(user)でそのユーザーをビューアーとして追加しています。
addViewer関数で追加したビューアーの取得や削除の方法
addViewer関数で追加したビューアーは、GASからのみアクセスできます。スプレッドシートの共有設定には表示されません。そのため、ビューアーを取得したり、削除したりするには、GASの関数を使う必要があります。
ビューアーを取得するには、getViewerメソッドを使います。このメソッドは、スプレッドシートに追加されたビューアーのメールアドレスの配列を返します。
具体的な例として、スプレッドシートに追加されたビューアーのメールアドレスをログに出力するスクリプトを紹介します。
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
let viewers = spreadsheet.getViewers(); // ビューアーのメールアドレスの配列を取得
Logger.log(viewers); // ログに出力
この例では、getViewers()でビューアーのメールアドレスの配列を取得し、Logger.log(viewers)でログに出力しています。
ビューアーを削除するには、removeViewerメソッドを使います。このメソッドは、引数に指定したメールアドレスのユーザーをビューアーから削除します。
まとめ
この記事では、Google Apps Scriptでスプレッドシートにビューアーを追加する方法について解説しました。addViewer関数を使うと、スプレッドシートに閲覧権限のみを持つユーザーを追加することができます。ビューアーは、メールアドレスやUserオブジェクトで指定できます。ビューアーは、GASからのみアクセスできるので、スプレッドシートの共有設定に影響されません。ビューアーを取得したり、削除したりするには、getViewerメソッドやremoveViewerメソッドを使います。
この記事が、Google Apps Scriptでスプレッドシートにビューアーを追加する方法を知りたい方の参考になれば幸いです。
参考文献
- Class Spreadsheet | Apps Script | Google Developers
- Class Session | Apps Script | Google Developers
- Class User | Apps Script | Google Developers
このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。
すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。