Google Apps Script(GAS)でスプレッドシートのリンク共有を自動化する方法(ドキュメントも)

2020年2月12日

リンクを知っているユーザーのみがスプレッドシートを閲覧・編集できる「リンク共有」の設定をGoogle Apps Script(GAS)で行う方法を解説します。

GASで自動化することで、リンク共有を手動で行う手間の軽減や、設定漏れを防ぐのに有効です。

※Googleドキュメントでも同様にGASによるリンク自動化が可能です。

外部共有に便利なスプレッドシートの「リンク共有」

Googleのスプレッドシートやドキュメントを他のユーザーに共有するために、便利な機能として「リンク共有」があります。

リンク共有を使うと、リンクを知っているユーザーなら、スプレッドシート・ドキュメントを閲覧または編集可能になります。

Googleスプレッドシートやドキュメントのリンク共有の設定画面

通常のGoogleドキュメントの共有はGoogleアカウント単位で設定します。

しかし、共有したい人数が増えると権限付与がとても面倒です。

通常の権限付与に比べ、リンク共有は大人数にスプレッドシートやドキュメントを共有する際に便利です。

リンク共有は情報漏えいのリスクも

ただ、スプレッドシート・ドキュメントのリンク共有にもデメリットが存在します。

リンクURLを知っていれば、誰でも見ることができるというメリットが、リンクURLが流出すると、情報漏えいに繋がります。

個人情報や機密情報などのデータが含まれている場合、リンクURLが漏れると、セキュリティーインシデントです。

情報流出に気づいた時点でリンク共有を解除しても、スプレッドシート・ドキュメントのコピーが作成されている可能性もあります。

リンク共有はお手軽な機能な反面、扱うデータ次第で恐ろしい事故につながります。

リンク共有をGoogle Apps Scriptで自動化

そんなGoogleスプレッドシートやドキュメントのリンク共有は、実はGoogle Apps Scriptで自動化することができます。

Google Apps Scriptで自動化すれば、手動でリンク共有の設定が不要になります。

Google Apps Scriptのロゴ

例えばスプレッドシートの場合、どこかのセルに「リンク共有」の設定値を設けておきます。

セルの値がONの場合にリンク共有を有効にし、OFFの場合にはリンク共有を解除する、といったことが自動で行えるようになります。

このように行うことで、リンク共有を設定する手間と、リンク共有の解除忘れを防止することができます。

GASによるリンク共有はDriveAppクラス

リンク共有はSpreadSheetAppクラスやDocumentAppクラスではなく、DriveAppクラスで操作します。

リンク共有はGoogleドキュメントやスプレッドシートの機能ではなく、Googleドライブの機能だったことが分かります。

ちなみにGoogleドライブの機能のため、実はGoogleドライブに格納したいかなるファイルでも設定が可能になっています。

リンク共有を行うGASサンプルコード

リンク共有を行うGASのサンプルコードを紹介します。

リンク共有を有効(閲覧権限のみと編集権限の場合の2種類)と、リンク共有無効の合計3種類のコードで記述しています。

Google Apps ScriptでGoogleドキュメントやスプレッドシートのリンク共有(閲覧・編集)の有効・無効化
function driveAccessPermission() {
  var document = DriveApp.getFileById("スプレッドシートのID");
  var access;
  var permission;

  //①リンク共有有効(編集権限あり)
  access = DriveApp.Access.ANYONE_WITH_LINK;
  permission = DriveApp.Permission.EDIT;
  document.setSharing(access, permission);

  //②リンク共有有効(閲覧権限のみ)
  access = DriveApp.Access.ANYONE_WITH_LINK;
  permission = DriveApp.Permission.VIEW;
  document.setSharing(access, permission);

  //③リンク共有無効
  access = DriveApp.Access.PRIVATE;
  permission = DriveApp.Permission.EDIT;
  document.setSharing(access, permission);
}

1つ目のリンク共有の有効を行うと、スプレッドシート上でもリンク共有が有効になっていることが確認できます。

Google Apps Scriptで自動的にリンク共有を設定する

リンク共有の設定漏れを防ぐコード

さらに、前述したような特定のセルにリンク共有の設定値を格納し、その値を読み取ってリンク共有を有効/無効にするサンプルコードも作成してみました。

スプレッドシートのセルから値を読み取って、リンク共有を有効・無効化するコード

A1セルが「リンク共有有効」になっている場合は、リンク共有を有効にします。

それ以外の場合にはリンク共有を無効にするコードです。

まとめ・終わりに

今回、Googleのスプレッドシートやドキュメントのリンク共有をGoogle Apps Script(GAS)で自動的に設定する方法を解説しました。

リンク共有は便利な機能な反面、情報流出にもつながるリスクもあります。

サンプルコードのようにスプレッドシートのセルにリンク共有のパラメータをセットしておくことで、リンク共有の無効にすることの漏れを防ぐことができます。

また、たくさんのGoogleドキュメントを取り扱う際には手動でリンク共有設定するのも面倒です。

Google Apps Scriptによるリンク共有自動化で省力化を図りましょう。