মতামত ও পরামর্শ নিয়ে কাজ করুন

গুগল ডক্স ব্যবহারকারীদের মন্তব্য লেখা এবং পরামর্শ দেওয়ার মাধ্যমে একসাথে কাজ করার সুযোগ দেয়, যা অনুমোদনের অপেক্ষায় থাকা স্থগিত সম্পাদনা হিসেবে কাজ করে।

আপনি এপিআই ব্যবহার করে ডকুমেন্টের মূল লেখার মধ্যেই প্রস্তাবিত পরিবর্তনগুলো দেখতে পারেন। এছাড়াও, আপনি প্রোগ্রাম্যাটিকভাবে মন্তব্য এবং পরামর্শের থ্রেডগুলো পড়তে, তৈরি করতে, উত্তর দিতে, আপডেট করতে বা মুছে ফেলতে পারেন।

When you use the documents.get method to fetch document content, the content might include unresolved suggestions. To control how documents.get represents suggestions, use the optional SuggestionsViewMode parameter. The following filter conditions are available with this parameter:

  • SUGGESTIONS_INLINE সহ কন্টেন্ট নিন, যাতে মুছে ফেলা বা যোগ করার জন্য অপেক্ষাধীন টেক্সট ডকুমেন্টে প্রদর্শিত হয়।
  • সমস্ত পরামর্শ গৃহীত হলে কন্টেন্টটি প্রিভিউ হিসেবে দেখুন।
  • সমস্ত পরামর্শ প্রত্যাখ্যান করে, কোনো সাজেশন ছাড়া কন্টেন্টের প্রিভিউ পান।

If you don't provide SuggestionsViewMode , the Google Docs API uses a default setting appropriate to the current user's privileges.

কোনো ডকুমেন্ট ফেচ করার সময় কমেন্ট অন্তর্ভুক্ত করা হবে কিনা তা নিয়ন্ত্রণ করতে, ঐচ্ছিক commentsViewMode প্যারামিটারটি ব্যবহার করুন। শুধুমাত্র সাজেশন ইনলাইনভাবে রিটার্ন করা হলেই কমেন্ট রিটার্ন করা হয়। commentsViewMode সেট করার সময়, আপনাকে অবশ্যই suggestionsViewMode ও নিম্নরূপভাবে কনফিগার করতে হবে:

  • যদি commentsViewMode COMMENTS_VIEW_MODE_INCLUDED এ সেট করা থাকে, তাহলে suggestionsViewMode অবশ্যই SUGGESTIONS_INLINE এ সেট করতে হবে।
  • যদি commentsViewMode COMMENTS_VIEW_MODE_DEFAULT_FOR_CURRENT_ACCESS এ সেট করা থাকে, তাহলে suggestionsViewMode অবশ্যই SUGGESTIONS_INLINE অথবা DEFAULT_FOR_CURRENT_ACCESS এ সেট করতে হবে।

If you set commentsViewMode to COMMENTS_VIEW_MODE_INCLUDED , you must also set includeTabsContent to true . If you use a field mask that references the tabs field (or any subfield), the API implicitly treats the request as if you set includeTabsContent to true .

পরামর্শ ও সূচক

SuggestionsViewMode গুরুত্বপূর্ণ হওয়ার একটি কারণ হলো, সাজেশন আছে কি নেই তার ওপর নির্ভর করে রেসপন্সের ইনডেক্সগুলো পরিবর্তিত হতে পারে, যেমনটি নিচের উদাহরণে দেখানো হয়েছে।

পরামর্শ সহ বিষয়বস্তু পরামর্শ ছাড়া বিষয়বস্তু
{
 "tabs": [
  {
   "documentTab": {
    "body": {
     "content": [
      {
       "startIndex": 1,
       "endIndex": 31,
       "paragraph": {
        "elements": [
         {
          "startIndex": 1,
          "endIndex": 31,
          "textRun": {
           "content": "Text preceding the suggestion\n",
           "textStyle": {}
          }
         }
        ],
        "paragraphStyle": {
         "namedStyleType": "NORMAL_TEXT",
         "direction": "LEFT_TO_RIGHT"
        }
       }
      },
      {
       "startIndex": 31,
       "endIndex": 51,
       "paragraph": {
        "elements": [
         {
          "startIndex": 31,
          "endIndex": 50,
          "textRun": {
           "content": "Suggested insertion",
           "suggestedInsertionIds": [
            "suggest.vcti8ewm4mww"
           ],
           "textStyle": {}
          }
         },
         {
          "startIndex": 50,
          "endIndex": 51,
          "textRun": {
           "content": "\n",
           "textStyle": {}
          }
         }
        ],
        "paragraphStyle": {
         "namedStyleType": "NORMAL_TEXT",
         "direction": "LEFT_TO_RIGHT"
        }
       }
      },
      {
       "startIndex": 51,
       "endIndex": 81,
       "paragraph": {
        "elements": [
         {
          "startIndex": 51,
          "endIndex": 81,
          "textRun": {
           "content": "Text following the suggestion\n",
           "textStyle": {}
          }
         }
        ],
        "paragraphStyle": {
         "namedStyleType": "NORMAL_TEXT",
         "direction": "LEFT_TO_RIGHT"
        }
       }
      }
     ]
    }
   }
  }
 ]
},

{
 "tabs": [
  {
   "documentTab": {
    "body": {
     "content": [
      {
       "startIndex": 1,
       "endIndex": 31,
       "paragraph": {
        "elements": [
         {
          "startIndex": 1,
          "endIndex": 31,
          "textRun": {
           "content": "Text preceding the suggestion\n",
           "textStyle": {}
          }
         }
        ],
        "paragraphStyle": {
         "namedStyleType": "NORMAL_TEXT",
         "direction": "LEFT_TO_RIGHT"
        }
       }
      },
      {
       "startIndex": 31,
       "endIndex": 32,
       "paragraph": {
        "elements": [
         {
          "startIndex": 31,
          "endIndex": 32,
          "textRun": {
           "content": "\n",
           "textStyle": {}
          }
         }
        ],
        "paragraphStyle": {
         "namedStyleType": "NORMAL_TEXT",
         "direction": "LEFT_TO_RIGHT"
        }
       }
      },
      {
       "startIndex": 32,
       "endIndex": 62,
       "paragraph": {
        "elements": [
         {
          "startIndex": 32,
          "endIndex": 62,
          "textRun": {
           "content": "Text following the suggestion\n",
           "textStyle": {}
          }
         }
        ],
        "paragraphStyle": {
         "namedStyleType": "NORMAL_TEXT",
         "direction": "LEFT_TO_RIGHT"
        }
       }
      }
     ]
    }
   }
  }
 ]
},

In the preceding response, the paragraph containing the line "Text following the suggestion" shows the difference when using SuggestionsViewMode . With the value set to SUGGESTIONS_INLINE , the startIndex of the ParagraphElement begins at 51 and the endIndex stops at 81. Without suggestions, the startIndex and endIndex range from 32–62.

পরামর্শ ছাড়াই কন্টেন্ট পান

The following partial code sample shows how to get a document as a preview with all suggestions rejected (if there are any) by setting the SuggestionsViewMode parameter to PREVIEW_WITHOUT_SUGGESTIONS .

জাভা

final string SUGGEST_MODE = "PREVIEW_WITHOUT_SUGGESTIONS";
Document doc =
    service
        .documents()
        .get(DOCUMENT_ID)
        .setIncludeTabsContent(true)
        .setSuggestionsViewMode(SUGGEST_MODE)
        .execute();

পাইথন

SUGGEST_MODE = "PREVIEW_WITHOUT_SUGGESTIONS"
result = (
  service.documents()
  .get(
      documentId=DOCUMENT_ID,
      includeTabsContent=True,
      suggestionsViewMode=SUGGEST_MODE,
  )
  .execute()
)

SuggestionsViewMode প্যারামিটারটি বাদ দেওয়া, প্যারামিটারের মান হিসেবে DEFAULT_FOR_CURRENT_ACCESS প্রদান করার সমতুল্য।

শৈলীর পরামর্শ

ডকুমেন্টে স্টাইল সাজেশনও থাকতে পারে। এগুলো হলো ফরম্যাটিং এবং উপস্থাপনার জন্য প্রস্তাবিত পরিবর্তন, বিষয়বস্তুর কোনো পরিবর্তন নয়।

টেক্সট সংযোজন বা অপসারণের মতো নয়, এগুলো ইনডেক্সগুলোকে স্থানান্তরিত করে না—যদিও এগুলো একটি TextRun ছোট ছোট খণ্ডে বিভক্ত করতে পারে—বরং প্রস্তাবিত স্টাইল পরিবর্তন সম্পর্কে শুধু টীকা যোগ করে।

এরকম একটি অ্যানোটেশন হলো SuggestedTextStyle , যা দুটি অংশ নিয়ে গঠিত:

  • textStyle বর্ণনা করে যে প্রস্তাবিত পরিবর্তনের পর টেক্সটটি কীভাবে স্টাইল করা হবে, কিন্তু কী পরিবর্তন হয়েছে তা বলে না।

  • The textStyleSuggestionState , which indicates how the suggestion alters the fields of the textStyle .

আপনি নিম্নলিখিত ডকুমেন্ট ট্যাবের উদ্ধৃতাংশে এটি দেখতে পারেন, যেখানে একটি প্রস্তাবিত শৈলী পরিবর্তন অন্তর্ভুক্ত রয়েছে:

[01] "paragraph": {
[02]    "elements": [
[03]        {
[04]            "endIndex": 106,
[05]            "startIndex": 82,
[06]            "textRun": {
[07]                "content": "Some text that does not ",
[08]                "textStyle": {}
[09]            }
[10]        },
[11]        {
[12]            "endIndex": 115,
[13]            "startIndex": 106,
[14]            "textRun": {
[15]                "content": "initially",
[16]                "suggestedTextStyleChanges": {
[17]                    "suggest.xymysbs9zldp": {
[18]                        "textStyle": {
[19]                            "backgroundColor": {},
[20]                            "baselineOffset": "NONE",
[21]                            "bold": true,
[22]                            "fontSize": {
[23]                                "magnitude": 11,
[24]                                "unit": "PT"
[25]                            },
[26]                            "foregroundColor": {
[27]                                "color": {
[28]                                    "rgbColor": {}
[29]                                }
[30]                            },
[31]                            "italic": false,
[32]                            "smallCaps": false,
[33]                            "strikethrough": false,
[34]                            "underline": false
[35]                        },
[36]                        "textStyleSuggestionState": {
[37]                            "boldSuggested": true,
[38]                            "weightedFontFamilySuggested": true
[39]                        }
[40]                    }
[41]                },
[42]                "textStyle": {
[43]                    "italic": true
[44]                }
[45]            }
[46]        },
[47]        {
[48]            "endIndex": 143,
[49]            "startIndex": 115,
[50]            "textRun": {
[51]                "content": " contain any boldface text.\n",
[52]                "textStyle": {}
[53]            }
[54]        }
[55]    ],
[56]    "paragraphStyle": {
[57]        "direction": "LEFT_TO_RIGHT",
[58]        "namedStyleType": "NORMAL_TEXT"
[59]    }
[60] }

পূর্ববর্তী নমুনাটিতে, অনুচ্ছেদটি তিনটি টেক্সট রান নিয়ে গঠিত, যা যথাক্রমে ৬, ১৪ এবং ৫০ নম্বর লাইন থেকে শুরু হয়েছে। মাঝের টেক্সট রানটি পরীক্ষা করুন:

  • Line 16: There's a suggestedTextStyleChanges object.
  • লাইন ১৮: textStyle বিভিন্ন ফরম্যাটিং নির্দিষ্ট করে।
  • Line 36: The textStyleSuggestionState tells you that only the bold part of this specification was the suggestion.
  • লাইন ৪২: এই টেক্সট রানের ইটালিক স্টাইলিং বর্তমান ডকুমেন্টেরই একটি অংশ (এবং সাজেশন দ্বারা প্রভাবিত নয়)।

Only the style features set to true in the textStyleSuggestionState are part of the suggestion.

মন্তব্য তৈরি ও পরিচালনা করুন

আপনি documents.batchUpdate মেথডটি ব্যবহার করে প্রোগ্রাম্যাটিকভাবে কমেন্ট ও রিপ্লাই যোগ করতে, কমেন্ট এডিট করতে এবং কমেন্ট বা রিপ্লাই ডিলিট করতে পারেন।

When performing batch updates involving comments or suggestions, you should monitor for potential partial failures. For more information, see Comment and suggestion update status .

একটি মন্তব্য লিখুন

একটি মন্তব্য থ্রেড যুক্ত করতে, InsertCommentRequest অবজেক্টটি ব্যবহার করুন। আপনাকে অবশ্যই মন্তব্যের মূল লেখা এবং মন্তব্যটি সংযুক্ত করার জন্য একটি অ্যাঙ্কর লোকেশন (যেমন একটি রেঞ্জ) প্রদান করতে হবে।

নিম্নলিখিত JSON উদাহরণটি নির্দিষ্ট পরিসরে একটি অনির্বাচিত মন্তব্য থ্রেড যোগ করে:

{
  "requests": [
    {
      "insertComment": {
        "content": "This is a comment added via the API.",
        "range": {
          "startIndex": 10,
          "endIndex": 25
        }
      }
    }
  ]
}

You can assign a comment to a specific user by providing their email in the assigneeEmailAddress field:

{
  "requests": [
    {
      "insertComment": {
        "content": "Please review this paragraph.",
        "assigneeEmailAddress": "user@example.com",
        "range": {
          "startIndex": 10,
          "endIndex": 25
        }
      }
    }
  ]
}

একটি উত্তর যোগ করুন অথবা পদক্ষেপ নিন

কোনো মন্তব্য বা পরামর্শ থ্রেডের উত্তর দিতে, অথবা কোনো থ্রেড সমাধান বা পুনরায় খুলতে, AddCommentReplyRequest ব্যবহার করুন।

একটি উত্তর একটি Post অবজেক্ট দ্বারা উপস্থাপিত হয়। Post অবজেক্টটিতে উত্তরের content থাকে এবং এতে ঐচ্ছিকভাবে একটি commentAction (থ্রেডটি RESOLVE বা REOPEN জন্য) নির্দিষ্ট করা যায়।

You can also re-assign a comment thread by specifying a new assigneeEmail in the Post object.

একটি বিদ্যমান মন্তব্য থ্রেডের নিম্নলিখিত নমুনা উত্তরগুলো দেওয়া হলো:

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "comment_thread_id",
        "post": {
          "content": "Replying to the comment thread."
        }
      }
    }
  ]
}

নিম্নলিখিত নমুনাটি একটি মন্তব্য থ্রেড সমাধান করে, যার জন্য কোনো বিষয়বস্তুর প্রয়োজন নেই:

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "comment_thread_id",
        "post": {
          "commentAction": "RESOLVE"
        }
      }
    }
  ]
}

নিম্নলিখিত JSON নমুনাটি দেখায় কিভাবে একটি মন্তব্য থ্রেড পুনরায় বরাদ্দ করতে হয়:

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "comment_thread_id",
        "post": {
          "content": "Replying to the comment thread.",
          "assigneeEmail": "user@example.com"
        }
      }
    }
  ]
}

একটি পোস্ট সম্পাদনা করুন

আপনার লেখা কোনো পোস্টের টেক্সট কন্টেন্ট সম্পাদনা করতে, UpdateCommentPostRequest ব্যবহার করুন। আপনাকে অবশ্যই থ্রেড আইডি ( commentId অথবা suggestionId ), যে পোস্টটি সম্পাদনা করতে চান তার postId এবং নতুন প্লেইন টেক্সট content উল্লেখ করতে হবে।

মনে রাখবেন যে আপনি কোনো সাজেশন থ্রেডের মূল পোস্টটি সম্পাদনা করতে পারবেন না (কারণ সেগুলি সাজেস্ট-মোড সম্পাদনার মাধ্যমে তৈরি হয়)।

{
  "requests": [
    {
      "updateCommentPost": {
        "commentId": "comment_thread_id",
        "postId": "post_id",
        "content": "This is the updated comment text."
      }
    }
  ]
}

মন্তব্য এবং উত্তরগুলো মুছে ফেলুন

  • মন্তব্য থ্রেড মুছুন: সম্পূর্ণ মন্তব্য থ্রেডটি মুছে ফেলার জন্য, DeleteCommentRequest ব্যবহার করুন। আপনি শুধুমাত্র তখনই একটি মন্তব্য থ্রেড মুছতে পারবেন, যদি আপনি থ্রেডটির প্রধান পোস্টের লেখক হন।
  • একটি উত্তর মুছুন: একটি নির্দিষ্ট উত্তর পোস্ট মুছতে, DeleteCommentReplyRequest ব্যবহার করুন। আপনি শুধুমাত্র আপনার নিজের লেখা উত্তরগুলোই মুছতে পারবেন। যে উত্তর পোস্টগুলোতে কোনো কাজ বা দায়িত্বপ্রাপ্ত ব্যক্তি (assignee) রয়েছে, সেগুলো আপনি মুছতে পারবেন না।

নিম্নলিখিত নমুনাটি একটি মন্তব্য থ্রেড মুছে দেয়:

{
  "requests": [
    {
      "deleteComment": {
        "commentId": "comment_thread_id"
      }
    }
  ]
}

পরামর্শ লিখুন এবং পরামর্শের থ্রেডগুলি পরিচালনা করুন

আপনি সরাসরি সম্পাদনার পরিবর্তে পরামর্শ হিসেবে সম্পাদনা লিখতে পারেন এবং প্রোগ্রামগতভাবে পরামর্শের থ্রেড গ্রহণ, প্রত্যাখ্যান বা মুছে ফেলতে পারেন।

When performing batch updates involving suggestions, you should monitor for potential partial failures. For more information, see Comment and suggestion update status .

সাজেস্ট মোড ব্যবহার করে সাজেশন তৈরি করুন

সম্পাদনাগুলোকে সাজেশন হিসেবে প্রয়োগ করতে, আপনার ব্যাচ আপডেট রিকোয়েস্টে WriteControl অবজেক্টের writeMode ফিল্ডটিকে SUGGEST এ সেট করুন। রিকোয়েস্টের সমস্ত আপডেট সাজেশন হিসেবেই প্রক্রিয়াজাত করা হয়।

{
  "requests": [
    {
      "insertText": {
        "text": "suggested insertion text",
        "location": {
          "index": 1
        }
      }
    }
  ],
  "writeControl": {
    "writeMode": "SUGGEST"
  }
}

সাজেস্ট মোডে অসমর্থিত অনুরোধ

WriteMode.SUGGEST ব্যবহার করার সময়, নিম্নলিখিত অনুরোধের ধরণগুলি সমর্থিত নয় এবং একটি ত্রুটি দেখাবে:

  • AddDocumentTab
  • CreateNamedRange
  • DeleteFooter
  • DeleteHeader
  • DeleteNamedRange
  • DeleteTab
  • UpdateDocumentTabProperties
  • UpdateTableColumnProperties

Additionally, you cannot suggest changes to document format or header and footer settings. In UpdateDocumentStyle , suggestions aren't supported for the following style types:

  • documentFormat
  • useEvenPageHeaderFooter
  • useFirstPageHeaderFooter

পরামর্শ থ্রেডগুলি গ্রহণ, প্রত্যাখ্যান বা মুছে ফেলুন

আপনি নিম্নলিখিত অনুরোধগুলি ব্যবহার করে সাজেশন থ্রেডগুলি পরিচালনা করতে পারেন:

  • পরামর্শ গ্রহণ করুন: পরামর্শটি গ্রহণ করতে AcceptSuggestionRequest ব্যবহার করুন। এর জন্য ডকুমেন্টটি সম্পাদনা করার অনুমতি প্রয়োজন।
  • Reject suggestion: Use RejectSuggestionRequest to reject the suggestion. This requires edit access to the document or being the author of the suggestion.
  • সাজেশন মুছুন: সাজেশনটি মুছতে DeleteSuggestionRequest ব্যবহার করুন। এর জন্য আপনাকে সাজেশনটির লেখক হতে হবে।

নিম্নলিখিত নমুনাটি একটি পরামর্শ থ্রেড গ্রহণ করে:

{
  "requests": [
    {
      "acceptSuggestion": {
        "suggestionId": "suggestion_thread_id"
      }
    }
  ]
}

মন্তব্য এবং পরামর্শের স্ট্যাটাস আপডেট করুন

যেসব অনুরোধের জন্য মন্তব্য বা পরামর্শের থ্রেড সংরক্ষণ করার প্রয়োজন হয় (যেমন মন্তব্য যোগ করা, উত্তর দেওয়া বা পরামর্শ দেওয়া), সেগুলোতে আংশিক ব্যর্থতা দেখা দিতে পারে। এই ক্ষেত্রে, ডকুমেন্ট মডেলের পরিবর্তনগুলো (যেমন টেক্সট যোগ করা বা মুছে ফেলা) ডকস মডেলে সফলভাবে কমিট হলেও, এর সাথে যুক্ত মন্তব্য বা পরামর্শগুলো সংরক্ষিত নাও হতে পারে।

You can verify whether comment or suggestion updates were successfully applied by checking the commentUpdateState field in the BatchUpdateDocumentResponse .

The following states are returned in CommentUpdateState :

  • ব্যাচ অপারেশনে কোনো মন্তব্য বা পরামর্শমূলক আপডেটের অনুরোধ করা NO_UPDATES_REQUESTED ।
  • ALL_SAVED : All requested comment or suggestion updates were successfully applied.
  • ALL_FAILED_UNKNOWN_REASON : অনুরোধ করা সমস্ত মন্তব্য বা পরামর্শের আপডেট সেভ হতে ব্যর্থ হয়েছে, যদিও ডক্স মডেলের পরিবর্তনগুলো কমিট করা হয়ে থাকতে পারে।