ADVERTISEMENT

【Googleスプレッドシート】共有リンクの有効期限を設定する!時限アクセスの構築

【Googleスプレッドシート】共有リンクの有効期限を設定する!時限アクセスの構築
🛡️ 超解決

Googleスプレッドシートで共有リンクを作成すると、デフォルトでは有効期限がありません。そのため、不特定多数に長期間アクセスを許可してしまうリスクがあります。この記事では、指定した日時で自動的にアクセス権を失効させる2つの方法を解説します。標準機能とApps Scriptを用いた自動化の両方を学べば、セキュリティを高めながら効率的に共有管理ができるようになります。

【要点】共有リンクに有効期限を設定する2つの方法

  • 共有設定画面の詳細設定: リンク作成時にアクセス権の有効期限を指定できる場合は、直接設定します。
  • Apps Scriptによる自動権限削除: トリガーを使って指定日時に共有権限を自動削除するスクリプトを作成します。
  • トリガーの定期実行: スクリプトを毎日または毎時間実行することで、確実に期限を守ります。

ADVERTISEMENT

共有リンクに有効期限が必要な理由と実現方法

Googleスプレッドシートの共有リンクには、作成後に有効期限を設定するネイティブ機能が用意されていません。一度作成したリンクは、明示的にアクセス権を取り消さない限り永続的に有効です。これは、外部に一時的なデータを共有する際にセキュリティ上のリスクとなります。そこで、Apps Scriptを利用して、指定した日時に自動的に権限を削除する仕組みを構築します。これにより、時限式のアクセス制限を実現できます。

有効期限を設定する具体的な手順

ここでは、2つの方法を紹介します。1つ目は共有画面から手動で日時を指定する裏技的な方法、2つ目はApps Scriptで自動化する本格的な方法です。

方法1: 共有リンク作成時に有効期限を手動設定する

  1. 共有画面を開く
    スプレッドシートを開き、右上の「共有」ボタンをクリックします。
  2. リンク取得の設定
    「リンクを知っている全員」を選択し、権限を「閲覧者」または「コメント閲覧者」にします。編集者権限は許可しないほうが良いでしょう。
  3. 詳細設定で有効期限を指定
    「詳細設定」をクリックし、「有効期限を設定する」のチェックボックスをオンにします。表示された日付と時刻を設定し「保存」します。ただし、この設定は一部のGoogle Workspaceアカウント(Enterpriseなど)でのみ利用可能な場合があります。お使いの環境で表示されない場合は方法2をご利用ください。

方法2: Apps Scriptで自動権限削除を構築する

Apps Scriptを使用して、指定日時にスプレッドシートの共有権限を削除するスクリプトを作成します。以下の手順で設定します。

  1. スクリプトエディタを開く
    スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択します。
  2. スクリプトコードを記述する
    エディタに以下のコードを貼り付け、スプレッドシートのIDと権限を削除したいユーザーのメールアドレスを指定します。スプレッドシートIDはURLの「/d/」と「/edit」の間の文字列です。

    function removeAccess() {
    var sheetId = 'あなたのスプレッドシートIDを入力';
    var file = DriveApp.getFileById(sheetId);
    var userEmail = '削除したいユーザーのメールアドレス';
    file.removeEditor(userEmail);
    file.removeCommenter(userEmail);
    file.removeViewer(userEmail);
    }

  3. 保存してプロジェクト名を付ける
    Ctrl+Sで保存し、任意のプロジェクト名を入力します。
  4. トリガーを作成する
    左メニューの「トリガー」アイコンをクリックし、「トリガーを追加」を選択します。関数に「removeAccess」、イベントのソースを「時間主導型」、時間ベースのトリガーのタイプを「日付ベースのタイマー」にし、実行する時刻を設定します。例えば、期限の日の午前9時などに設定します。ただし、日付ベースのタイマーは日時の指定が細かくできないため、複数のトリガーを組み合わせる必要がある場合もあります。より正確に制御したい場合は、「特定の日時」を選択できるカスタムトリガーを使用します。
  5. 承認を実行する
    初回実行時に権限の承認が求められます。自分のアカウントで承認してください。

注意点とよくあるトラブル

共有設定の有効期限が表示されない

方法1の「有効期限を設定する」オプションは、すべてのGoogleアカウントで利用できるわけではありません。特に、無料のGoogleアカウントでは表示されないことがあります。その場合は方法2のApps Scriptを利用してください。

Apps Scriptのトリガーが正しく動作しない

トリガーが正しく設定されていても、実行時間にずれが生じることがあります。また、スクリプトがエラーで停止すると権限が削除されません。定期的に実行ログを確認することをおすすめします。ログはスクリプトエディタの「実行」メニューから確認できます。

複数のユーザーに一括で権限削除したい場合

上記のコードは単一ユーザーを対象としています。複数ユーザーを対象にするには、email配列をループ処理するコードに変更します。例えば、var users = ['user1@gmail.com', 'user2@gmail.com']; のように配列で定義し、forEachで削除を繰り返します。

ADVERTISEMENT

手動削除とApps Script自動化の比較

項目 手動削除 Apps Script自動化
有効期限の柔軟性 特定の日時を設定可能(環境依存) 任意の日時をプログラミング可能
操作の手間 毎回手動で共有解除が必要 一度設定すれば自動実行
信頼性 人間が忘れるリスクあり トリガーが正しく動けば確実
利用条件 一部のGoogle Workspaceのみ すべてのGoogleアカウントで可能

まとめ

この記事では、Googleスプレッドシートの共有リンクに有効期限を設定する2つの方法を解説しました。標準の共有設定画面から設定する方法と、Apps Scriptで自動権限削除を構築する方法です。特にApps Scriptを活用すれば、柔軟な時間制限を実現できます。次は、複数のスプレッドシートを一括管理するスクリプトや、メール通知と連携する仕組みにも挑戦してみてください。セキュリティを高めつつ、効率的な共有運用を実現しましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。