Googleドキュメントのリビジョン履歴を見るとき、2つのバージョンを比較するのは手間がかかります。特に長文のドキュメントでは、どの部分が変更されたのかを目視で見つけるのは大変です。そこで便利なのが、Apps Scriptを使って自動的に差分を取得する方法です。この記事では、Drive APIを利用して2つのリビジョンの内容を比較するスクリプトを紹介します。スクリプトの書き方と実行手順を詳しく解説します。
【要点】Apps Scriptでリビジョン比較を自動化する3つのステップ
- Drive APIを有効化する: スクリプトからリビジョン情報を取得するために、事前にAPIを有効にします。
- リビジョン一覧を取得するスクリプト: 特定のドキュメントの全リビジョンを取得し、Revision IDを抽出します。
- 本文を比較して差分を出力する: 2つのリビジョンの本文を取得し、テキストの差分を新しいドキュメントに書き出します。
ADVERTISEMENT
目次
リビジョン比較にApps Scriptを使う仕組み
Googleドキュメントには「変更履歴」機能があり、手動でリビジョン間の差分を確認できます。しかし、大量のリビジョンがある場合や、特定のリビジョン間の差分だけをプログラムで取得したい場合は、Apps ScriptとDrive APIの組み合わせが便利です。Drive APIのRevisionsリソースを使うと、任意のドキュメントのリビジョン一覧や各リビジョンの内容を取得できます。この仕組みを利用して、2つのリビジョンのテキストを比較し、追加・削除された部分を自動で抽出します。
Apps Scriptでリビジョン比較を実行する手順
ここでは、2つのリビジョンを比較するスクリプトの作成から実行までを解説します。事前にGoogleドライブ上に比較したいドキュメントを用意してください。
- Google Apps Scriptプロジェクトを作成する
比較したいドキュメントを開き、「拡張機能」メニューから「Apps Script」をクリックします。新しいスクリプトエディタが開きます。 - Drive APIを有効化する
スクリプトエディタの左側にある「サービス」の「+」ボタンをクリックし、一覧から「Drive API」を選択して追加します。バージョンはv2またはv3を選びます。 - リビジョン一覧を取得する関数を書く
listRevisionsという関数を作成します。この関数は、documentIdを引数に受け取り、Drive.Revisions.listメソッドを呼び出してリビジョン一覧を取得します。取得したデータはログに出力します。documentIdは対象のドキュメントIDです。URLの「/d/」と「/edit」の間にある文字列を指定します。 - リビジョンIDを確認する
上記の関数を実行すると、ログにリビジョン一覧が出力されます。各リビジョンにはidというプロパティがあり、これがRevision IDです。比較したい2つのリビジョンのIDをメモします。 - 2つのリビジョンの本文を取得する関数を書く
getRevisionContentという関数を作成します。この関数は、documentIdとrevisionIdを引数に取り、Drive APIのrevisions.getメソッドでリビジョンのエクスポートリンクを取得し、そのリンクからテキストデータをダウンロードします。リンクの取得には、revisions.getメソッドの引数にdocumentIdとrevisionIdを指定します。 - 差分比較を行う関数を書く
compareTwoRevisionsという関数を作成します。この関数は、documentId、古いリビジョンID、新しいリビジョンIDを引数に取ります。内部でgetRevisionContentを2回呼び出し、取得したテキストを行ごとに分割して比較します。差分は追加行と削除行を分けて配列に格納し、結果を新しいドキュメントに書き出します。新しいドキュメントはDocumentApp.createメソッドで作成します。 - 関数を実行して結果を確認する
すべての関数を保存し、compareTwoRevisions関数を選択して実行ボタンを押します。初回実行時は権限の承認が必要です。承認後、新しいドキュメントに差分が出力されます。
リビジョン比較スクリプト使用時の注意点
Drive APIの有効化を忘れてエラーが発生する
スクリプトエディタでDrive APIを追加しないと、「Drive is not defined」というエラーが出ます。手順2のサービス追加を必ず行ってください。
リビジョンIDの指定を間違える
listRevisions関数を実行してログに出力されるIDは、文字列です。コピー&ペーストする際に余分なスペースが入らないように注意します。
大量のリビジョンがある場合の処理時間
リビジョン数が多いドキュメントでは、一覧を取得するのに時間がかかることがあります。スクリプトの実行時間制限に引っかからないよう、必要なリビジョンのみを処理する工夫が必要です。
権限の承認が必要
初回実行時、スクリプトがドキュメントやドライブへのアクセスを要求します。内容を確認して承認してください。承認しないと実行できません。
手動のリビジョン比較とApps Scriptの自動比較の違い
| 項目 | 手動比較(変更履歴) | Apps Script自動比較 |
|---|---|---|
| 操作の手間 | リビジョンを1つずつ開いて目視で確認 | スクリプトを1回実行するだけ |
| 比較できるリビジョン数 | 2つのみ(履歴上で選択) | 任意の2つを指定可能 |
| 差分の可視化 | Google標準の比較ビュー(色付き) | 自作のスクリプト次第でカスタマイズ可能 |
| 自動化との連携 | 手動操作が必要 | 定期的な実行やトリガーと連携可能 |
まとめ
この記事では、Apps ScriptとDrive APIを使ってGoogleドキュメントの2つのリビジョン間の差分を自動比較する方法を解説しました。スクリプトを書けば、手動で目視確認する手間が省けます。特にバージョン管理が必要なドキュメントで重宝します。応用例として、特定の日時以降のリビジョンのみを抽出したり、差分をメールで送信する機能も追加できます。自分自身のプロジェクトに合わせてカスタマイズしてみてください。
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で配布した文書が編集できない時のコピー設定
- 【iPhone・iPad】iPadの写真をiCloudではなくGoogleドライブに自動保存する設定手順
