Googleドキュメントで長文の資料を作成していると、どの時点でどんな変更を加えたか管理が難しくなります。標準のバージョン履歴機能はありますが、特定のバージョンに名前を付けるのは手間がかかります。そこでApps Scriptを使うと、自動的にバージョンタグをドキュメントに記録し、Gitのように運用できます。この記事では、Apps Scriptを使ってバージョンタグを付け、運用を効率化する方法を解説します。
【要点】Apps Scriptでドキュメントのバージョンタグ付けを自動化する3つの方法
- ドキュメント本文にタグを挿入する方法: 現在日時とバージョン番号を文末に追記し、手動でタグ付けする煩わしさを解消します。
- Google Drive APIのリビジョン機能を利用する方法: 保存のたびにリビジョンに名前を付け、外部からバージョン管理できます。
- 日次バックアップとタグ付けを組み合わせる方法: 指定した間隔でドキュメントを複製し、バージョンごとにファイル名にタグを含めます。
ADVERTISEMENT
目次
Apps Scriptでバージョンタグ管理ができる理由
Apps ScriptはGoogleドキュメント内で動作するスクリプト環境です。ドキュメントの本文を操作できるため、バージョン情報を自動で書き込めます。またGoogle Drive APIを呼び出せば、リビジョン名を直接設定することも可能です。標準のバージョン履歴は手動で名前を付ける必要がありますが、スクリプトを使えば保存のたびに自動で名前を付けられます。これにより、Gitのコミットメッセージのように、バージョンごとに意味のあるタグを残せます。
本文タグ挿入方式でバージョンタグを付ける手順
ここでは最も簡単な方法として、ドキュメントの末尾に日時とバージョン番号を追記するスクリプトを紹介します。スクリプトエディタを開き、関数を作成してカスタムメニューやトリガーで実行します。
- スクリプトエディタを開く
Googleドキュメントを開き、メニューの「拡張機能」から「Apps Script」をクリックしてエディタを表示します。プロジェクト名は任意です。 - 関数を定義する
次のコードをエディタに貼り付けます。function addVersionTag() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var count = body.getParagraphs().length;
var now = new Date();
var tag = "=== v" + count + " " + Utilities.formatDate(now, "JST", "yyyy-MM-dd HH:mm") + " ===";
body.appendParagraph(tag);
} - 権限を承認する
初めて実行するときは権限の承認画面が表示されます。「許可」をクリックしてスクリプトにドキュメントの編集権限を与えてください。 - 関数を実行する
エディタの実行ボタン(▶)でaddVersionTagを選択し実行します。ドキュメントの末尾に日時が付いたタグが追加されることを確認しましょう。 - カスタムメニューに登録する(応用)
関数onOpen()を追加して、ドキュメントを開いたときに専用メニューを表示できます。function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('バージョン管理').addItem('タグを追加', 'addVersionTag').addToUi();
}
トリガーで自動実行する設定
保存のたびに自動でタグを付けたい場合、編集トリガーを設定します。スクリプトエディタの左メニューから「トリガー」を選び、新しいトリガーを追加します。関数をaddVersionTag、イベントの種類を「変更時」に設定すると、ドキュメントが編集されるたびにタグが追加されます。ただし毎回追記するとタグが増えすぎるため、日次や時間指定のトリガーがおすすめです。
Drive APIでリビジョン名を自動設定する手順
よりGitらしい運用として、リビジョンに直接名前を付ける方法もあります。Google Drive APIのv3を使用し、リビジョンのプロパティを更新します。スクリプトエディタでDrive APIを有効にし、関数から呼び出します。
- Drive APIを有効にする
スクリプトエディタの左メニューから「サービス」を選び、Drive APIを追加します。バージョンはv3を選んでください。 - リビジョン名を設定する関数を作成
次のコードを追加します。function nameLatestRevision() {このコードは最新リビジョンのタイトルを変更します。
var fileId = DocumentApp.getActiveDocument().getId();
var revision = Drive.Revisions.get(fileId, 'latest');
revision.title = 'v1.0 ' + new Date().toLocaleString();
Drive.Revisions.update(revision, fileId, 'latest');
} - 実行前にリビジョンIDを確認する
コード内の’latest’は固定ですが、実際にはリビジョンIDを特定する必要があります。リビジョンの一覧を取得する関数を併用すると確実です。 - 権限を承認して実行する
Drive APIのスコープ(drive.readonly.metadata, drive.fileなど)が必要なため、スクリプトエディタで適切なスコープを設定してから承認してください。
注意点とよくあるトラブル
認証エラーが発生する場合
Drive APIを使用するとき、OAuth同意画面の設定が必要です。スクリプトエディタから「プロジェクトの設定」→「Appsscript.json」マニフェストを編集して、必要なスコープを明示的に追加します。スコープは以下の1つで十分です。"oauthScopes": ["https://www.googleapis.com/auth/drive.file"]
リビジョン名が変更できない場合
Google Driveのリビジョンポリシーにより、最新リビジョンのタイトルは変更できないことがあります。その場合は1つ前のリビジョンを対象にするか、本文タグ方式を併用してください。
スクリプトの実行制限に注意
Apps Scriptには1日あたりの実行回数制限(無料アカウントで最大90分/日)があります。トリガーを多用すると制限に達するため、バージョンタグの追加は必要なタイミングに絞りましょう。
手動バージョン管理とApps Script自動タグ付けの比較
| 項目 | 手動バージョン管理 | Apps Script自動タグ付け |
|---|---|---|
| 手間 | バージョン名を毎回手入力 | スクリプトが自動実行 |
| 一貫性 | フォーマットがぶれやすい | 一定の規則でタグを付与 |
| 履歴の可視性 | ドキュメント内に残らない | タグが本文内に記録 |
| 設定の難易度 | 不要 | 初回承認とトリガー設定のみ |
| バックアップとの連携 | 手動でファイル名にバージョン | スクリプトで自動複製しタグを付与可能 |
まとめ
この記事では、Apps Scriptを使った2つのバージョンタグ付け方法を紹介しました。本文タグ挿入方式は導入が簡単で、カスタムメニューやトリガーを組み合わせることで、保存や編集のたびに自動でタグが追記されます。Drive API方式はより本格的なバージョン管理が可能ですが、設定が少し複雑です。次のステップとして、トリガーを時間指定にして日次バックアップを自動化したり、ドキュメントのコピーにバージョン番号を付けてGoogleドライブに保存するスクリプトに応用してみてください。これらの関数を組み合わせれば、GoogleドキュメントでもGitに近い運用を実現できます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Google Driveの人気記事ランキング
- 【SharePoint】SharePointで「同期」ボタンが表示されない時の確認手順
- 【PDF】スマホからPCへPDFをケーブル無しで送る!クラウド(Googleドライブ/iCloud)同期の基本
- 【SharePoint】ドキュメントライブラリを開けない時のアクセス許可と保存場所チェック
- 【Googleスプレッドシート】テンプレートギャラリーを使い倒すコツ!業務別の活用例
- 【Googleスプレッドシート】Apps Scriptが動かない・実行されない時のチェックポイント
- 【Googleアカウント】会社アカウントと個人アカウントを分けたい時の運用方法
- 【Googleドキュメント】WordファイルをDocs形式に変換!互換性と書式維持
- 【Googleドキュメント】AndroidからWordファイル開く!アプリ選択の指定
- 【Googleドキュメント】Google Classroomで配布した文書が編集できない時のコピー設定
- 【Googleスプレッドシート】Excel互換で保存!xlsxエクスポートの設定
