Google Apps Scriptでスプレッドシートにビューアーを追加する方法【addViewer関数の使い方】

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でスプレッドシートにビューアーを追加する方法を知りたい方の参考になれば幸いです。

参考文献

GASをイチから学びたい方へ

このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。

すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。