#125 Google ドキュメントにコメントを追加する → 不完全😖
Google が提供する生成 AI Gemini を利用して得られた内容を、Google ドキュメントの本文ではなく、コメントに書き出せないか?と考えて、少し調べてみました…
結論
はじめに結論を書いてしまうと…
この記事か書いている時点では GAS(Google Apps Script)では Google ドキュメントのコメントを作成することはできても、どの部分に対するコメントなのかを示すアンカーが設定できず、下図のように「元のコンテンツは削除されました」という感じで作成され、意図的に「すべてのコメントを表示」ボタンを押さないと表示されません。
Google ドキュメントの UI で作成したコメントは「解決済み」にマークされていなければ、コメントした位置のドキュメントの右側に ↓ のように表示されてくれるはずなのですが、この位置情報(アンカー)が設定できないために、↑ のようになっているのだと思います。
アンカーが設定されていないことで、「元のコンテンツは削除されました」と表示されているのだろうということはわかりましたが、いろいろと調べたものの解決方法はわかりませんでした。
以降、試行錯誤の経過を列記しておきます…
スクリーンショット中にわたしの個人名が表記されていたりしますが、大っぴらに公表していないだけで、しっかり隠そうとしているものではないので、マスキングせずにおきます。悪用厳禁でお願いします。
コメントの作成方法
①Google ドキュメントの API
以下 URL で説明されている GAS で利用できる Googleドキュメントのリファレンスを見ていても、コメントに関する API(メソッドやクラス)は提供されていないようでした。😖
存在しているのであれば、以下 URL の Document クラスの中に関連しそうな API が存在していてもいいように思えるのですが、そのようなクラスが存在していませんでした…
②拡張ドキュメントサービス
標準で利用可能なライブラリでなく、下図のように追加する「Google Docs API サービス」についても確認してみました。
この API の詳細は、↓ の URL にリファレンスがありますが、この中にもコメント(comment)といった表記は見つかりませんでした。
③Drive API でコメントを作成
前述の ② の Drive 版である Google Drive API の中に、Google ドライブに保存されたファイルに対してコメントを設定する API が提供されています。
Google ドキュメントのコメントも、この API を利用してコメントを実現しているようで、この API を用いることでコメントを追加できます。
上記 URL で利用できる API Explorer を利用すれば、GAS などでプログラムを作成しなくても、目的の Googleドキュメントのファイル ID さえ確認できていれば、ファイルにコメントを追加できます。
ただし、「Show standard parameters」の項目を開いて、下図のように fields の項目に * を設定しておかなければなりません。
そして、Request body の部分で content にコメントとなる文字列を設定して「Execute」ボタンを押してやれば、コメントを作成できます。
実行した結果は、以下のような形で表示されます。
この操作によって追加されたコメントは、下図のような感じで「元のコンテンツは削除されました」という表示となっています。
Drive API で作成したコメントの不備?
前述のように作成視されたコメントと、Googleドキュメントの UI で作成されたコメントの違いを、以下 URL のファイルに設定されたコメントの一覧を取得する API で確認してみました。
UI で設定したコメント
{
"id": "AAABWnVfllg",
"kind": "drive#comment",
"createdTime": "2024-10-14T07:37:47.473Z",
"modifiedTime": "2024-10-14T07:37:47.473Z",
"replies": [],
"author": {
"displayName": "坂本智勝",
"kind": "drive#user",
"me": true,
"photoLink": "//lh3.googleusercontent.com/a/ACg8ocLGmDuibYR0Cxb2lVYQMOudewh-WQuCrBgIEufJRz57qF8ocNLmUQ=s50-c-k-no"
},
"deleted": false,
"htmlContent": "ここにコメントを設定",
"content": "ここにコメントを設定"
},
前述の API Explorer で作成したものです。作成時には指定しなかった内容が設定されていますが、コメントを作成したユーザー情報なので、問題視している事象とは直接関係ないものと考えられます。
API で設定したコメント
{
"id": "AAABXRMUKG4",
"kind": "drive#comment",
"createdTime": "2024-10-13T05:39:20.931Z",
"modifiedTime": "2024-10-13T05:39:20.931Z",
"resolved": false,
"anchor": "kix.39cg9ad850ah",
"replies": [],
"author": {
"displayName": "坂本智勝",
"kind": "drive#user",
"me": true,
"photoLink": "//lh3.googleusercontent.com/a/ACg8ocLGmDuibYR0Cxb2lVYQMOudewh-WQuCrBgIEufJRz57qF8ocNLmUQ=s50-c-k-no"
},
"deleted": false,
"htmlContent": "UIで作成したコメント",
"content": "UIで作成したコメント",
"quotedFileContent": {
"mimeType": "text/html",
"value": "こ"
}
API Explorer で作成したコメントにはなかった情報が
anchor
quotedFileContent
の二つです。これらについての説明は、以下 URL で説明されていますが、前者が位置情報、後者がその内容を示しているようです。
具体的には、以下 URL で説明されているのですが、一般的なファイルについては説明されているものの、Googleドキュメントにおいての説明がなされていませんでした。
前述したように、UI で設定した場合には、API Explorer で作成したときには設定していなかった二つの情報が設定されていました。quotedFileContent の内容は、プログラムの中でも設定が可能なのですが、anchor として設定されているコメントを作成した位置情報がお手上げです。
"anchor": "kix.39cg9ad850ah",
というような kix. ではじまる ID を設定しているようですが、これについての情報がまるで見つかりません。
恐らく、UI で設定した場合にはブックマークのように位置情報を設定して ID を割り当てているのでしょうが、その API が提供されていないために、ユーザー側で GAS で制御できないのです。
せめて、この anchor が付されていない場合には、ファイルに対して設定されたコメントとして解釈してくれればよかったのですが、前述のように「元のコンテンツは削除されました」と一手間の操作を行わないと表示されない状態にされてしまっています。
下記 URL の情報をもとにして、試行錯誤してみましたが、うまく位置情報を設定できませんでした。
補足:画像ファイルの場合
Googleドキュメントの場合は、前述の通りでしたが、Googleドライブ内の画像ファイルに対してコメントを設定した結果が ↓ のような感じです。
Google ドライブの UI によって設定したコメントは、矩形で位置を指定しました。そのコメントの情報は、以下のように保存されていました。
{
"id": "AAABWkF4QAo",
"kind": "drive#comment",
"createdTime": "2024-10-13T06:03:36.133Z",
"modifiedTime": "2024-10-13T06:03:36.133Z",
"resolved": false,
"anchor": "[null,[null,[0.32063492063492066,0.2478813559322034,0.6761904761904762,0.5911016949152542]],null,\"0BwlncW1-kp5hZVl0U25vRUVwdUhkM2s0OUNtcGRkSUxXUCswPQ\"]",
"replies": [],
"author": {
"displayName": "坂本智勝",
"kind": "drive#user",
"me": true,
"photoLink": "//lh3.googleusercontent.com/a/ACg8ocLGmDuibYR0Cxb2lVYQMOudewh-WQuCrBgIEufJRz57qF8ocNLmUQ=s50-c-k-no"
},
"deleted": false,
"htmlContent": "画像にコメント",
"content": "画像にコメント"
}
anchor の部分には、位置情報が保存されているのだと想定しますが、以下 URL で説明されているような指定方法とは異なっているように見受けられます。
もう一方のコメントは、API Explorer で作成したものです。これは、Googleドキュメントの場合と異なり、特別な操作を行わなくても、ファイルに対してのコメントと解釈され、何かしらの操作を行わなくても、上図のようにコメントが表示されています。
{
"id": "AAABWkF4QBM",
"kind": "drive#comment",
"createdTime": "2024-10-13T06:28:01.126Z",
"modifiedTime": "2024-10-13T06:28:01.126Z",
"resolved": false,
"replies": [],
"author": {
"displayName": "坂本智勝",
"kind": "drive#user",
"me": true,
"photoLink": "//lh3.googleusercontent.com/a/ACg8ocLGmDuibYR0Cxb2lVYQMOudewh-WQuCrBgIEufJRz57qF8ocNLmUQ=s50-c-k-no"
},
"deleted": false,
"htmlContent": "AAAAA",
"content": "AAAAA"
},
Googleドキュメントも、こんな感じで API で追加したコメントを扱ってくれればいいのに…
この問題はいつから?
この問題視している事象を何とか解決できないか?と調べたところ、日本語での情報は見つからず、以下 URL のような英語の情報を見つけました。
いずれも、9~10年前に質問されたやりとりです。この頃から、問題視されているものの、現在でも解決に至っていないもののようです。
Googleドキュメントの UI では実現できているので、内部的には実装されている API で実現可能なのでしょうが、それらは一般に公開されていないもののようです。
ここまで確認して、わたしには解決できない問題なことがわかり、冒頭のような結論に達しました。
痒い所に手が届く GAS でも届かないときが、こんな感じであります… とりあえず、現時点でのゴールにたどり着いたので、「よし!」としておきます。
同じ事象で悩んだ人が、スムーズにゴールにたどり着けるように、日本語で書き残しておきます。