ADVERTISEMENT

【Googleドキュメント】Apps Scriptでコメントを操作できない時の代替手順

【Googleドキュメント】Apps Scriptでコメントを操作できない時の代替手順
🛡️ 超解決

Googleドキュメントで共同編集を行う際、コメント機能は非常に便利です。しかし、Google Apps Scriptを使ってコメントの追加・編集・削除を自動化しようとすると、想定通りに動作しないケースが多くあります。DocumentAppクラスに用意されているメソッドは限られており、特に既存コメントの編集や削除、返信の操作は公式にはサポートされていません。この記事では、Apps Scriptでコメントを操作できないときに考えられる原因を整理し、実際に利用できる代替手順を詳しく解説します。

【要点】この記事で確認すること

  • 最初に見る場所: Google Apps ScriptのDocumentAppの公式リファレンス。コメント関連メソッドの有無を確認する。
  • 切り分けの軸: コメント操作が「できない」のはスクリプトの制限か、権限や設定の問題かを分けて考える。
  • 注意点: 会社PCではGoogle Workspaceの管理者設定により、Apps Scriptの一部機能が制限されている場合がある。勝手に変更せず、管理者に確認する。

ADVERTISEMENT

1. Apps Scriptでコメント操作ができない主な原因

Google Apps Scriptでコメントを操作する際に直面する問題は、大きく分けて三つあります。一つ目は、DocumentAppクラスにコメントの追加・削除・編集を完全に行えるメソッドが存在しないことです。DocumentAppにはDocument.addComment()メソッドが存在しますが、既存のコメントを取得するDocument.getComments()や、コメントを削除するメソッドはありません。また、コメントへの返信や解決状態の変更もできません。二つ目は、Google Workspaceのセキュリティポリシーにより、スクリプトの実行権限が制限されている場合です。特に会社のアカウントでは、管理者がApps Scriptを無効にしていたり、OAuthスコープを制限していることがあります。三つ目は、スクリプトのトリガーや呼び出し元の権限不足です。コメントの操作にはドキュメントの編集権限が必要で、閲覧権限のみのユーザーでは操作できません。

DocumentAppの制限

DocumentAppで利用できるメソッドは、文書の内容(本文、ヘッダー、フッター、表など)の操作に特化しています。コメントはDocumentクラスではなく、Commentクラスとして存在しますが、スクリプトからはDocument.addComment()で新規コメントを追加することしかできません。取得系のメソッドは用意されておらず、既存コメントをスクリプトで編集・削除するAPIは提供されていません。この制限はGoogle側の設計によるもので、今後も拡張される予定は公式には発表されていません。

権限・ポリシーによる制限

会社でGoogle Workspaceを利用している場合、管理者がApps Scriptの実行を制限していることがあります。具体的には、Apps Scriptの「実行可能なユーザー」を指定したり、特定のスコープへのアクセスを禁止しているケースです。また、ドキュメントの共有設定が「閲覧のみ」になっていると、スクリプトからコメントを追加することはできません。コメント操作には編集権限が必要なため、事前に権限を確認してください。

2. まず確認すべきポイント(端末・アカウント・管理設定)

問題を切り分けるために、次の三つの観点で確認してください。最初に、スクリプトを実行しているアカウントがドキュメントの編集権限を持っているか確認します。次に、Apps Scriptのエディタで「表示」→「ログ」を開き、エラーメッセージが出力されているか確認します。権限不足の場合、「このドキュメントにアクセスできません」といったエラーが表示されることがあります。最後に、Google Workspace管理者にApps Scriptの利用ポリシーを問い合わせてください。管理者画面「アプリ」→「Google Workspace」→「ドライブとドキュメント」で、Apps Scriptの設定を確認できます。

端末側の確認

会社PCでブラウザの拡張機能がスクリプトの実行を妨げている可能性は低いですが、シークレットモードで動作確認することをおすすめします。また、Googleドキュメントのオフラインモードが有効だと、スクリプトが正しく動作しないことがあります。オフラインモードを無効にしてから再試行してください。

アカウント側の確認

複数のGoogleアカウントを使用している場合、スクリプトが想定外のアカウントで実行されていないか確認します。Apps Scriptエディタの右上に表示されているアカウントが、ドキュメントの編集権限を持つアカウントであることを確認してください。

管理設定の確認

管理者が「Apps Scriptの実行を許可するユーザー」を制限している場合、一般ユーザーはスクリプトを実行できません。また、カスタムスクリプトの実行そのものが無効になっていることもあります。この確認は管理者しかできないため、該当する場合は管理者に問い合わせてください。

3. 代替手順1:Google Drive APIを使用する

Apps ScriptのDocumentAppではできないコメントの編集・削除も、Google Drive API v3のCommentsリソースを使うことで実現できます。Advanced Drive Serviceを利用すると、Apps Scriptから直接Drive APIを呼び出せます。以下の手順で設定してください。

  1. Apps Scriptエディタを開き、左側の「リソース」→「Googleの拡張サービス」をクリックします。
  2. 「Drive API」を「オン」に切り替え、バージョンを「v3」に設定します。
  3. Google Cloud ConsoleでAPIを有効にする必要があります。エディタの「リソース」→「Cloud Platform Project」からプロジェクトを開き、APIライブラリで「Google Drive API」を有効にします。
  4. スクリプトのマニフェストファイル(appsscript.json)に、Drive APIのスコープhttps://www.googleapis.com/auth/driveまたはhttps://www.googleapis.com/auth/drive.fileを追加します。
  5. 以下のコード例を参考に、コメントの一覧取得、追加、編集、削除を行います。
    // コメント一覧取得
    function getComments(fileId) {
    var comments = Drive.Comments.list(fileId);
    return comments.items;
    }
    // コメント追加
    function addComment(fileId, content) {
    var resource = {content: content};
    var comment = Drive.Comments.insert(resource, fileId);
    return comment;
    }
    // コメント削除
    function deleteComment(fileId, commentId) {
    Drive.Comments.remove(fileId, commentId);
    }
  6. ただし、Drive APIで操作できるコメントは、GoogleドキュメントのUIで表示されるコメントと同一です。ただし、返信に対する「解決済み」マークの操作は、Commentsリソースでは対応していない場合があります。

注意点として、Drive APIの利用にはOAuth認証が必要です。初回実行時に権限の承認画面が表示されます。また、APIの利用回数に制限(Quota)があるため、大量のコメントを処理する場合は注意してください。

4. 代替手順2:手動操作の効率化(スクリプトではなくユーザーアクション)

スクリプトでの自動化が難しい場合、ユーザー自身が効率的にコメントを操作する方法を代替案として提供します。Googleドキュメントにはキーボードショートカットが多数用意されており、コメント操作も高速化できます。

  1. コメントの追加: Ctrl + Alt + M(Windows)またはCmd + Option + M(Mac)で、選択範囲にコメントを追加できます。
  2. コメントの編集: コメント内でEnterキーを押すと編集モードになります。編集後、Ctrl + Enterで確定できます。
  3. コメント一覧の表示: 右上のコメントアイコンをクリックするか、Ctrl + Alt + Shift + Aでコメントパネルを開きます。
  4. 「解決済み」マーク: コメント右上のチェックマークをクリックするか、コメント内でCtrl + Shift + Enterで解決状態にできます。
  5. コメントの削除: コメント右上の三点リーダーから「削除」を選択します。キーボードのみでは削除できませんが、マウス操作と組み合わせて効率化できます。

また、Google Workspaceの「推奨アクション」機能を使うと、コメントに対する「承認」や「却下」をクリック一つで行えます。これらの手動操作をマクロ代わりに使うことで、ある程度の自動化に近づけることができます。

5. 代替手順3:Google スプレッドシートを介したコメント管理

コメントをGoogleドキュメントではなく、Googleスプレッドシートで一元管理する方法です。スプレッドシートはApps Scriptで自由にセル操作ができ、コメントの代わりにセルにテキストを書き込んだり、コメントノート(セルに付随するメモ)を使ったりできます。以下の手順で実装できます。

  1. Googleスプレッドシートを新規作成し、1行目に見出し(「ドキュメントID」「範囲」「コメント内容」「作成者」「日時」「状態」など)を設定します。
  2. Apps Scriptでドキュメントの変更をトリガーにするには、onEditトリガーではなく、時間主導型トリガーやドキュメントの開封時トリガーを使います。
  3. ドキュメント内の特定の文字列(例:【コメント】)を検出し、その行をスプレッドシートに書き出すスクリプトを作成します。
  4. スプレッドシート側でセルにコメントを入力すると、スクリプトが自動的にドキュメントの該当箇所にテキストとして反映する仕組みを作ります。
  5. これにより、コメントの管理はスプレッドシート上で行い、ドキュメント側には結果だけを表示できます。完璧な代替にはなりませんが、スクリプトで完全に制御できます。

この方法の欠点は、Googleドキュメントのコメント機能(スレッド形式、返信、解決マーク)が使えないことです。そのため、シンプルなフィードバック収集に適しています。

6. 比較表:各代替手順のメリット・デメリット

代替方法 メリット デメリット
Google Drive API 既存コメントの編集・削除が可能。返信も可能。 APIの有効化と権限設定が必要。Quota制限あり。
手動操作の効率化 スクリプト不要。既存機能をそのまま使える。 完全な自動化は不可。大量作業には不向き。
スプレッドシート経由 Apps Scriptで完全制御可能。カスタム性が高い。 コメントスレッド機能が失われる。ドキュメントとシートの同期が複雑。

7. 失敗パターンと注意点

実際に試したユーザーからよく聞かれる失敗例を紹介します。

Drive APIで「権限不足」エラー

Drive APIを使用するには、アプリケーション名(スクリプト)が適切なOAuthスコープを要求している必要があります。スコープがdrive.fileの場合、そのスクリプトで作成または開いたファイルにしかアクセスできません。既存のファイルにアクセスするにはdriveスコープが必要です。エラーが発生したら、マニフェストファイルでスコープを確認してください。

DocumentApp.addComment()が動作しない

このメソッドはドキュメントの本文にコメントを追加しますが、実行するユーザーが編集権限を持っている必要があります。また、スクリプトが「簡易プロセス」として実行されている場合、Document.getActiveDocument()が正しく動作しないことがあります。スクリプトの実行モードを「権限承認が必要」に変更してください。

返信や解決状態を操作したい場合

これらはDrive APIでも完全にはサポートされていません。返信はrepliesリソースを利用することで可能ですが、解決状態はコメントのstatusプロパティを変更することで設定できます。ただし、Apps ScriptのAdvanced Drive Serviceではこのプロパティへのアクセスが制限されているため、直接HTTPリクエストを送る必要があります。

8. 管理者に確認すべき設定

会社PCでGoogle Workspaceを使用している場合、以下の設定を管理者に確認してください。

  • Apps Scriptの実行が許可されているか(管理コンソール > アプリ > Google Workspace > ドライブとドキュメント > アプリの設定)
  • OAuthスコープのホワイトリスト設定。特にdriveスコープが許可されているか。
  • IMAPやGoogle Cloud Consoleへのアクセス制限。Drive APIを使用する場合は、Cloud ConsoleでAPIを有効にする必要があるため、その権限があるか確認する。

管理者に伝える際は、具体的なスクリプトの内容と、なぜコメント操作が必要かを説明するとスムーズです。

9. よくある質問(Q&A)

Q1. Google Apps Scriptでコメントを追加する一番簡単な方法は?
A. Document.getActiveDocument().addComment('テキスト', document.getCursor())を使う方法です。ただし、カーソル位置が正しくない場合はnullが返る可能性があります。

Q2. 既存コメントを削除する方法は?
A. DocumentAppではできません。Drive APIのComments.remove()を使用してください。

Q3. コメントの一覧を取得してスプレッドシートに出力したい。
A. Drive APIでDrive.Comments.list(fileId)を使い、取得したデータをスプレッドシートに書き込むスクリプトを作成してください。

Q4. 会社でスクリプトが実行できません。どうすればいいですか?
A. 管理者にApps Scriptの実行許可を依頼してください。また、スクリプトに必要なスコープを最小限に絞ることで承認を得やすくなります。

10. まとめ

Google Apps Scriptでのコメント操作はDocumentAppの制限により完全には行えませんが、Google Drive APIを利用することで多くの操作が可能になります。最初にアカウントの権限と管理設定を確認し、問題がなければDrive APIへの切り替えを検討してください。どうしても自動化が必要でない場合は、キーボードショートカットによる手動操作の効率化も有効です。スプレッドシートを経由する方法は、カスタム性が高い反面、コメントのスレッド機能を犠牲にするため、用途に応じて選択してください。


ADVERTISEMENT

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

超解決 第一編集部

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

ADVERTISEMENT