「コメント」は、ファイルに対するユーザーからのフィードバックです。たとえば、ワープロ ドキュメントの読者が文の言い換えを提案する場合などです。 コメントには、 アンカー付きコメントとアンカーなしコメントの 2 種類があります。アンカー付きコメントは、ドキュメントの特定のバージョン内の特定の場所(ワープロ ドキュメントの文など)に関連付けられます。一方、アンカーなしコメントはドキュメントにのみ関連付けられます。
「返信」はコメントに添付され、コメントに対するユーザーの回答を表します。 Drive API を使用すると、ユーザーはアプリで作成したドキュメントにコメントや返信を追加できます。返信付きのコメントは、まとめて「ディスカッション」と呼ばれます。
fields パラメータを使用する
comments リソースのすべてのメソッド(delete を除く)で、レスポンスで返すフィールドを指定するには、fields
システム
パラメータを設定する必要があります。ほとんどの Drive リソース メソッドでは、デフォルト以外のフィールドを返す場合にのみこの操作が必要ですが、comments リソースでは必須です。fields パラメータを省略すると、メソッドはエラーを返します。詳細については、特定のフィールドを返すをご覧ください。
コメントの制約
Drive API でアンカー付きコメントとアンカーなしコメントを使用する場合は、次の制約が適用されます。
| コメントの種類 | ファイル形式 |
|---|---|
| アンカー付き |
|
| アンカーなし |
|
ドキュメントの最新リビジョンにアンカー付きコメントを追加する
コメントを追加するときに、ファイル内の領域にアンカーを設定することがあります。アンカーは、コメントが参照するファイル内の領域を定義します。
comments リソースは、anchor フィールドを JSON 文字列として定義します。
アンカー付きコメントを追加するには:
(省略可)
revisionsリソースでlistメソッドを呼び出して、ドキュメントのすべてのrevisionIDを一覧表示します。この手順は、最新リビジョン以外のリビジョンにコメントをアンカーする場合にのみ行います。最新リビジョンを使用する場合は、revisionIDにheadを使用します。createメソッドをcommentsリソースで呼び出します。パラメータはfileID、コメントを含むcommentsリソース、revisionID(r)とリージョン(a)を含む JSON アンカー 文字列です。
次のコードサンプルは、アンカー付きコメントを作成する方法を示しています。
Python
from google.oauth2.credentials import Credentials
from googleapiclient.errors import HttpError
# --- Configuration ---
# The ID of the file to comment on.
# Example: '1_aBcDeFgHiJkLmNoPqRsTuVwXyZ'
FILE_ID = 'FILE_ID'
# The text content of the comment.
COMMENT_TEXT = 'This is an example of an anchored comment.'
# The line number to anchor the comment to.
# Note: Line numbers are based on the revision.
ANCHOR_LINE = 10
# --- End of user-configuration section ---
SCOPES = ["https://www.googleapis.com/auth/drive"]
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
def create_anchored_comment():
"""
Create an anchored comment on a specific line in a Google Doc.
Returns:
The created comment object or None if an error occurred.
"""
try:
# Build the Drive API service
service = build("drive", "v3", credentials=creds)
# Define the anchor region for the comment.
# For Google Docs, the region is typically defined by 'line' and 'revision'.
# Other file types might use different region classifiers.
anchor = {
'region': {
'kind': 'drive#commentRegion',
'line': ANCHOR_LINE,
'rev': 'head'
}
}
# The comment body.
comment_body = {
'content': COMMENT_TEXT,
'anchor': anchor
}
# Create the comment request.
comment = (
service.comments()
.create(fileId=FILE_ID, fields="*", body=comment_body)
.execute()
)
print(f"Comment ID: {comment.get('id')}")
return comment
except HttpError as error:
print(f"An error occurred: {error}")
return None
create_anchored_comment()
Drive API は、anchor 文字列を含む comments リソース オブジェクトのインスタンスを返します。
アンカーなしコメントを追加する
アンカーなしコメントを追加するには、create メソッドを fileId パラメータと
comments リソースを指定して呼び出します。
コメントはプレーン テキストとして挿入されますが、レスポンスの本文には、
htmlContent フィールド
に表示用にフォーマットされたコンテンツが含まれています。
次のコードサンプルは、アンカーなしコメントを作成する方法を示しています。
Python
from google.oauth2.credentials import Credentials
from googleapiclient.errors import HttpError
# --- Configuration ---
# The ID of the file to comment on.
# Example: '1_aBcDeFgHiJkLmNoPqRsTuVwXyZ'
FILE_ID = 'FILE_ID'
# The text content of the comment.
COMMENT_TEXT = 'This is an example of an unanchored comment.'
# --- End of user-configuration section ---
SCOPES = ["https://www.googleapis.com/auth/drive"]
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
def create_unanchored_comment():
"""
Create an unanchored comment on a specific line in a Google Doc.
Returns:
The created comment object or None if an error occurred.
"""
try:
# Build the Drive API service
service = build("drive", "v3", credentials=creds)
# The comment body. For an unanchored comment,
# omit the 'anchor' property.
comment_body = {
'content': COMMENT_TEXT
}
# Create the comment request.
comment = (
service.comments()
.create(fileId=FILE_ID, fields="*", body=comment_body)
.execute()
)
print(f"Comment ID: {comment.get('id')}")
return comment
except HttpError as error:
print(f"An error occurred: {error}")
return None
create_unanchored_comment()
コメントに返信を追加する
コメントに返信を追加するには、
create パラメータと
commentId パラメータを指定して、
replies リソースで fileId メソッドを使用します。リクエストの本文では、content フィールドを使用して返信を追加します。
返信はプレーン テキストとして挿入されますが、レスポンスの本文には、表示用にフォーマットされたコンテンツを含む htmlContent フィールドが用意されています。
このメソッドは、fields フィールドにリストされているフィールドを返します。
リクエスト
この例では、fileId パスパラメータと commentId パスパラメータ、複数のフィールドを指定します。
POST https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID/replies?fields=id,comment
リクエストの本文
{
"content": "This is a reply to a comment."
}コメントを解決する
コメントを解決するには、コメントに返信を投稿する必要があります。
コメントを解決するには、create
メソッドを replies リソースで、fileId
と commentId パラメータを指定して使用します。
リクエストの本文では、
action フィールドを使用してコメントを解決します。content フィールドを設定して、コメントを閉じる返信を追加することもできます。
コメントが解決されると、Drive は comments リソースを resolved: true としてマークします。削除されたコメントとは異なり、解決済みの
コメントには htmlContent フィールドまたは content フィールドを含めることができます。
アプリがコメントを解決したら、UI でコメントが解決されたことを示す必要があります。たとえば、アプリは次のようになります。
- それ以上の返信を許可せず、以前のすべての返信と元のコメントを薄く表示します。
- 解決済みのコメントを非表示にします。
リクエスト
この例では、fileId パスパラメータと commentId パスパラメータ、複数のフィールドを指定します。
POST https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID/replies?fields=id,comment
リクエストの本文
{
"action": "resolve",
"content": "This comment has been resolved."
}コメントを取得する
ファイルのコメントを取得するには、get
メソッドをcommentsリソースで
fileIdとcommentIdパラメータを指定して使用します。コメント ID がわからない場合は、
すべてのコメントを一覧表示表示できます。list
このメソッドは、comments リソースのインスタンスを返します。
削除されたコメントを結果に含めるには、includedDeleted クエリ
パラメータを true に設定します。
リクエスト
この例では、fileId パスパラメータと commentId パスパラメータ、複数のフィールドを指定します。
GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment,modifiedTime,resolved
コメントを一覧表示する
ファイルのコメントを一覧表示するには、list
メソッドをcommentsリソースで
fileIdパラメータを指定して使用します。このメソッドは、コメントのリストを返します。
次のクエリ パラメータを渡して、コメントのページ分割をカスタマイズするか、コメントをフィルタします。
includeDeleted: 削除されたコメントを含めるには、trueに設定します。削除されたコメントには、htmlContentフィールドまたはcontentフィールドは含まれません。pageSize: ページごとに返すコメントの最大数。pageToken: 前のリスト呼び出しから受信したページトークン。このトークンを指定して、次のページを取得します。startModifiedTime: 結果のコメントのmodifiedTimeフィールドの最小値。
リクエスト
この例では、fileId パスパラメータ、includeDeleted クエリ パラメータ、複数のフィールドを指定します。
GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments?includeDeleted=true&fields=(id,comment,kind,modifiedTime,resolved)
コメントを更新する
ファイルのコメントを更新するには、
update パラメータと fileId パラメータを指定して、comments リソースで commentId
メソッドを使用します。リクエストの本文では、content フィールドを使用してコメントを更新します。
ブール値 resolved
フィールドは、comments リソースで読み取り専用です。コメントを解決するには、コメントに返信を投稿する必要があります。詳細については、コメントを
解決するをご覧ください。
このメソッドは、fields クエリ パラメータにリストされているフィールドを返します。
リクエスト
この例では、fileId パスパラメータと commentId パスパラメータ、複数のフィールドを指定します。
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment
リクエストの本文
{
"content": "This comment is now updated."
}コメントを削除する
ファイルのコメントを削除するには、
delete パラメータと commentId
パラメータを指定して、comments リソースで fileId メソッドを使用します。
コメントが削除されると、Drive はコメント リソースを deleted: true としてマークします。削除されたコメントには、htmlContent フィールドまたは content フィールドは含まれません。
リクエスト
この例では、fileId パスパラメータと commentId パスパラメータを指定します。
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID