टिप्पणियां और जवाब मैनेज करना

टिप्पणियां, किसी फ़ाइल पर उपयोगकर्ता से मिले सुझाव/राय या शिकायत होती है. जैसे, वर्ड प्रोसेसिंग दस्तावेज़ पढ़ने वाला कोई व्यक्ति, किसी वाक्य को फिर से लिखने का सुझाव देता है. टिप्पणियां दो तरह की होती हैं: ऐंकर की गई टिप्पणियां और ऐंकर नहीं की गई टिप्पणियां. ऐंकर की गई टिप्पणी, किसी खास जगह से जुड़ी होती है. जैसे, किसी दस्तावेज़ के किसी खास वर्शन में मौजूद वर्ड-प्रोसेसिंग दस्तावेज़ का कोई वाक्य. इसके उलट, किसी टेक्स्ट से न जुड़ी टिप्पणी सिर्फ़ दस्तावेज़ से जुड़ी होती है.

जवाब, टिप्पणियों से जुड़े होते हैं. इनसे पता चलता है कि किसी व्यक्ति ने टिप्पणी का जवाब दिया है. Google Drive API की मदद से, आपके ऐप्लिकेशन से बनाए गए दस्तावेज़ों में उपयोगकर्ता टिप्पणियां जोड़ सकते हैं और उनके जवाब दे सकते हैं. टिप्पणियों और उनके जवाबों को मिलाकर, बातचीत कहा जाता है.

फ़ील्ड पैरामीटर का इस्तेमाल करना

comments रिसॉर्स पर मौजूद सभी तरीकों (delete को छोड़कर) के लिए, आपको fields system parameter को सेट करना ज़रूरी है. इससे यह तय किया जा सकेगा कि जवाब में कौनसे फ़ील्ड दिखाए जाएं. Drive के ज़्यादातर रिसॉर्स के तरीकों में, इस कार्रवाई की ज़रूरत सिर्फ़ नॉन-डिफ़ॉल्ट फ़ील्ड दिखाने के लिए होती है. हालांकि, comments रिसॉर्स के लिए यह ज़रूरी है. fields पैरामीटर को शामिल न करने पर, यह तरीका गड़बड़ी दिखाता है. ज़्यादा जानकारी के लिए, चुनिंदा फ़ील्ड की वैल्यू वापस पाना लेख पढ़ें.

टिप्पणी करने से जुड़ी शर्तें

Drive API के साथ ऐंकर की गई और ऐंकर नहीं की गई टिप्पणियों का इस्तेमाल करते समय, ये पाबंदियां लागू होती हैं:

टिप्पणी किस तरह की है फ़ाइल टाइप
ऐंकर किया गया
  • डेवलपर, ऐंकर के स्पेसिफ़िकेशन के लिए अपना फ़ॉर्मैट तय कर सकते हैं.
  • टिप्पणी वापस पाने पर, ऐंकर सेव हो जाता है और वापस आ जाता है. हालांकि, Google Workspace के एडिटर ऐप्लिकेशन इन टिप्पणियों को बिना ऐंकर वाली टिप्पणियां मानते हैं.
  • एडिटर में बनाई गई Google Workspace फ़ाइलों (जैसे कि Google Docs, Google Sheets या Google Slides) पर की गई टिप्पणियां वापस पाने के दौरान, anchor फ़ील्ड में एडिटर के हिसाब से इंटरनल ऐंकर डेटा होता है. जैसे, Sheets फ़ाइलों पर workbook-range JSON स्ट्रिंग. Drive API इस डेटा को अपारदर्शी के तौर पर देखता है. साथ ही, यह दस्तावेज़ के अंदर मौजूद क्षेत्रों, सेल के कोऑर्डिनेट या स्लाइड के एलिमेंट को हल नहीं कर सकता. इन फ़ाइल टाइप पर सीधे तौर पर ऐंकर की गई टिप्पणियों का इस्तेमाल करने के लिए, इनसे जुड़े एपीआई का इस्तेमाल करें: Google Docs API, Google Sheets API या Google Slides API.
अनऐंकर्ड
  • यह सुविधा Google Workspace के दस्तावेज़ों के साथ काम करती है. इससे टिप्पणियां "सभी टिप्पणियां" व्यू में दिखती हैं.
  • एंकर नहीं की गई टिप्पणियां, Drive में फ़ाइल की झलक दिखाने वाले टूल में रेंडर किए गए PDF पर नहीं दिखती हैं. हालांकि, ये टिप्पणियां सेव हो जाती हैं और Drive API के ज़रिए इन्हें वापस पाया जा सकता है.

ऐंकर की गई टिप्पणी जोड़ना

टिप्पणी जोड़ते समय, आपको उसे फ़ाइल के किसी हिस्से से जोड़ना पड़ सकता है. ऐंकर, फ़ाइल में मौजूद उस हिस्से को कहते हैं जिसके बारे में टिप्पणी की गई है. comments संसाधन, anchor फ़ील्ड को JSON स्ट्रिंग के तौर पर तय करता है.

किसी जगह से जुड़ी टिप्पणी जोड़ने के लिए:

  1. (ज़रूरी नहीं). किसी दस्तावेज़ के लिए हर revisionID की सूची बनाने के लिए, revisions संसाधन पर list तरीके को कॉल करें. इस चरण को सिर्फ़ तब अपनाएं, जब आपको किसी टिप्पणी को सबसे नए वर्शन के अलावा किसी दूसरे वर्शन से जोड़ना हो. अगर आपको सबसे नए बदलाव का इस्तेमाल करना है, तो revisionID के लिए head का इस्तेमाल करें.

  2. comments रिसॉर्स पर create तरीके को कॉल करें. इसके लिए, fileId पैरामीटर, टिप्पणी वाला comments रिसॉर्स, और आपके ऐप्लिकेशन से तय की गई JSON ऐंकर स्ट्रिंग का इस्तेमाल करें.

नीचे दिए गए कोड सैंपल में, ऐंकर की गई टिप्पणी बनाने का तरीका बताया गया है:

Python

import json

from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
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 in your application to anchor the comment to.
# Note: Google Workspace editor apps (such as Google Docs, Sheets, and
# Slides) treat comments created using the Drive API as unanchored
# comments. Custom anchors are intended for your own applications or
# custom file viewers.
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 with a custom application-defined anchor.

    Returns:
        The created comment object or None if an error occurred.
    """
    try:
        # Build the Drive API service
        service = build("drive", "v3", credentials=creds)

        # Define a custom anchor specification for your application.
        # The Drive API stores the anchor as an opaque string. Your custom
        # application or file viewer can parse this JSON string to position
        # the comment in your UI.
        anchor_data = {
            'line': ANCHOR_LINE,
            'revision': 'head'
        }

        # The comment body. The 'anchor' field must be a serialized
        # JSON string.
        comment_body = {
            'content': COMMENT_TEXT,
            'anchor': json.dumps(anchor_data)
        }

        # 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, comments रिसॉर्स ऑब्जेक्ट का एक इंस्टेंस दिखाता है. इसमें anchor स्ट्रिंग शामिल होती है.

बिना ऐंकर की गई टिप्पणी जोड़ना

बिना ऐंकर वाली टिप्पणी जोड़ने के लिए, fileId पैरामीटर और टिप्पणी वाला comments संसाधन इस्तेमाल करके create तरीके को कॉल करें.

टिप्पणी को सादे टेक्स्ट के तौर पर डाला जाता है. हालांकि, जवाब के मुख्य हिस्से में htmlContent फ़ील्ड होता है. इसमें डिसप्ले के लिए फ़ॉर्मैट किया गया कॉन्टेंट होता है.

यहां दिए गए कोड सैंपल में, बिना ऐंकर की गई टिप्पणी बनाने का तरीका बताया गया है:

Python


from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
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 file in Drive.

    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()

किसी टिप्पणी का जवाब देना

किसी टिप्पणी का जवाब देने के लिए, fileId और commentId पैरामीटर के साथ replies संसाधन पर create तरीके का इस्तेमाल करें. अनुरोध के मुख्य हिस्से में, जवाब जोड़ने के लिए 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 फ़ील्ड शामिल हो सकते हैं.

जब आपका ऐप्लिकेशन किसी टिप्पणी को हल कर लेता है, तो आपके यूज़र इंटरफ़ेस (यूआई) में यह दिखना चाहिए कि टिप्पणी को हल कर दिया गया है. उदाहरण के लिए, आपका ऐप्लिकेशन:

  • आगे जवाब देने की अनुमति न दें. साथ ही, पिछली सभी टिप्पणियों और मूल टिप्पणी को धुंधला कर दें.
  • वे टिप्पणियां छिपाएं जिनका समाधान हो गया है.

अनुरोध

इस उदाहरण में, हमने 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."
}

कोई टिप्पणी पाना

किसी फ़ाइल पर टिप्पणी पाने के लिए, comments रिसॉर्स पर get तरीके का इस्तेमाल करें. इसके लिए, fileId और commentId पैरामीटर का इस्तेमाल करें. अगर आपको टिप्पणी का आईडी नहीं पता है, तो list तरीके का इस्तेमाल करके, सभी टिप्पणियों की सूची बनाएं.

यह तरीका, comments संसाधन का एक इंस्टेंस दिखाता है.

नतीजों में मिटाई गई टिप्पणियों को शामिल करने के लिए, includeDeleted क्वेरी पैरामीटर को true पर सेट करें.

अनुरोध

इस उदाहरण में, हमने fileId और commentId पाथ पैरामीटर और कई फ़ील्ड दिए हैं.

GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment,modifiedTime,resolved

टिप्पणियों की सूची बनाना

किसी फ़ाइल पर की गई टिप्पणियों की सूची बनाने के लिए, comments रिसॉर्स पर list तरीके का इस्तेमाल करें. इसके लिए, 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)

किसी टिप्पणी को अपडेट करना

किसी फ़ाइल पर मौजूद टिप्पणी को अपडेट करने के लिए, fileId और commentId पैरामीटर के साथ comments रिसॉर्स पर update तरीके का इस्तेमाल करें. अनुरोध के मुख्य हिस्से में, टिप्पणी को अपडेट करने के लिए content फ़ील्ड का इस्तेमाल किया जाता है.

comments संसाधन पर मौजूद बूलियन resolved फ़ील्ड को सिर्फ़ पढ़ा जा सकता है. किसी टिप्पणी को सिर्फ़ तब बंद किया जा सकता है, जब उसका जवाब दिया गया हो. ज़्यादा जानकारी के लिए, टिप्पणी हल करना लेख पढ़ें.

यह तरीका, 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."
}

टिप्पणी मिटाना

किसी फ़ाइल पर की गई टिप्पणी मिटाने के लिए, fileId और commentId पैरामीटर के साथ comments संसाधन पर delete तरीके का इस्तेमाल करें.

किसी टिप्पणी को मिटाने पर, Drive टिप्पणी के संसाधन को deleted: true के तौर पर मार्क करता है. मिटाई गई टिप्पणियों में htmlContent या content फ़ील्ड शामिल नहीं होते.

अनुरोध

इस उदाहरण में, हमने fileId और commentId पाथ पैरामीटर दिए हैं.

DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID