【Googleドキュメント】Apps Scriptでドキュメントロック機能!編集禁止期間の設定

【Googleドキュメント】Apps Scriptでドキュメントロック機能!編集禁止期間の設定
🛡️ 超解決

Googleドキュメントで、特定の期間だけ編集を禁止したいと思ったことはありませんか。例えば、締切後の修正を防いだり、承認プロセス中に変更を加えさせたくない場合です。Apps Scriptを使えば、指定した日時に自動でドキュメントをロックし、編集を禁止する仕組みを簡単に作成できます。この記事では、Apps Scriptで編集禁止期間を設定する具体的な手順を詳しく解説します。

【要点】Apps Scriptでドキュメントの編集禁止期間を自動設定する方法

  • スクリプトエディタの開き方: メニューの「拡張機能」→「Apps Script」からスクリプトプロジェクトを起動します。
  • setEditingDisabled関数の利用: 指定日時を判定し、DocumentクラスのsetEditingDisabledメソッドでロックします。
  • タイマートリガーの設定: 時間主導型トリガーで定期的にスクリプトを実行し、自動的にロック期間を管理します。

ADVERTISEMENT

Apps Scriptでドキュメントをロックする仕組み

Googleドキュメントには、標準機能として編集禁止のスケジュール設定はありません。しかし、Apps Scriptの「Document」クラスに用意された「setEditingDisabled」メソッドを使うと、プログラムで編集権限を制御できます。このメソッドに「true」を渡すとドキュメントがロックされ、編集ができなくなります。ロックを解除したい場合は「false」を渡します。さらに、Google Apps Scriptには時間主導型トリガーという機能があり、指定した日時や間隔で自動的にスクリプトを実行できます。これを組み合わせることで、例えば「毎月1日0時にロック、5日0時に解除」といった自動化が可能です。

編集禁止期間を設定する具体的な手順

ここでは、実際にスクリプトを作成し、トリガーを設定するまでの流れを説明します。使用するGoogleドキュメントは、編集禁止をかけたいドキュメントをあらかじめ開いておいてください。

1. スクリプトエディタを開く

  1. 拡張機能メニューを開く
    Googleドキュメントのメニューバーから「拡張機能」をクリックし、表示されたメニューから「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。
  2. プロジェクト名を設定する
    左上の「無題のプロジェクト」をクリックし、分かりやすい名前(例:「ドキュメントロック管理」)に変更します。

2. スクリプトコードを記述する

スクリプトエディタのコード.gsに、以下のコードを貼り付けます。コードの詳細はコメントで説明します。

// ロック開始日時と終了日時を設定(例:2025年4月1日0時~4月5日0時)
var startDate = new Date('2025-04-01T00:00:00+09:00');
var endDate = new Date('2025-04-05T00:00:00+09:00');

function lockDocument() {
  var doc = DocumentApp.getActiveDocument();
  var now = new Date();
  
  if (now >= startDate && now < endDate) {
    // 期間中なのでロック
    doc.setEditingDisabled(true);
  } else {
    // 期間外なのでロック解除
    doc.setEditingDisabled(false);
  }
}

このコードでは、現在時刻がstartDateからendDateの間にある場合にロックを有効にし、それ以外はロックを解除します。日時の部分はご自身のスケジュールに合わせて書き換えてください。

3. トリガーを設定する

  1. トリガー管理画面を開く
    スクリプトエディタの左側にある時計アイコン(トリガー)をクリックします。
  2. 新しいトリガーを追加する
    右下の「トリガーを追加」をクリックします。
  3. トリガーの詳細を設定する
    以下のように設定します。
    – 実行する関数: lockDocument
    – 実行するデプロイ: Head
    – イベントのソース: 時間主導型
    – 時間ベースのトリガーのタイプ: 分タイマー、時間タイマー、日タイマー、週タイマーのいずれかを選択。定期的にチェックしたい場合は「分タイマー」で5分おきなどに設定します。ただし、頻繁すぎると制限に引っかかる可能性があるため、通常は「時間タイマー」で1時間おきが推奨です。
  4. 承認する
    初めてトリガーを実行する際は、権限の承認を求められます。自分のGoogleアカウントで承認してください。

4. 動作を確認する

設定した開始日時になると、自動的にドキュメントがロックされ、編集できなくなります。ロックされている間は、編集中のドキュメントに「編集できません」というバナーが表示されます。解除日時を過ぎると自動的にアンロックされます。動作確認のため、一時的にstartDateとendDateを現在時刻の前後に設定してテストしてみてください。

スクリプト実行時の注意点とよくあるトラブル

トリガーが正しく動作しない場合

トリガーの実行に失敗する原因として、権限の承認が切れていることがあります。定期的にトリガーの実行ログを確認し、エラーが出た場合は再承認を行います。また、Google Apps Scriptのトリガーには1日あたりの実行回数制限(1時間あたり約30回など)があります。頻繁にトリガーを実行すると制限に達するため、間隔は最低でも10分以上にしてください。

ロックが解除されない

ロック解除条件が正しく記述されていない可能性があります。コード内のendDateの比較が'<‘(未満)になっているか確認します。また、トリガーの実行間隔によって、解除時刻から実際のチェックまでタイムラグが生じます。例えば、1時間おきのトリガーなら最大1時間遅れることを考慮してください。

複数のドキュメントを同時に管理したい場合

複数のドキュメントに同じロックをかけたい場合は、スクリプト内でドキュメントのIDを指定して開く方法があります。例えば、var doc = DocumentApp.openById(‘ドキュメントID’); のように記述します。トリガーで実行する際は、各ドキュメントごとにスクリプトを分けるか、配列でループ処理をします。

ADVERTISEMENT

タイマー起動と手動起動の比較

項目 タイマー起動 手動起動
自動化の度合い 完全自動 手動でスクリプトを実行する必要あり
セットアップの手間 トリガーの設定が必要 コードのみで即時実行可能
対応可能な期間 長期的・反復的な期間 単発のロック・解除
トリガー制限の影響 実行回数制限あり 影響なし

日常的に決まったスケジュールでロックするならタイマー起動が便利ですが、トリガーの制限に注意します。テストや臨時のロックには手動起動が簡単です。

まとめ

この記事では、GoogleドキュメントでApps Scriptを使い、指定した期間だけ編集を禁止する方法を解説しました。setEditingDisabledメソッドと時間主導型トリガーを組み合わせることで、自動化されたロック機能を実現できます。例えば、毎月の報告書の締切後に自動ロックをかけるといった応用も可能です。まずはサンプルコードをコピーして、ご自身のスケジュールに合わせて日時を調整してみてください。定期的なロック管理が格段に楽になります。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

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

SPONSORED