Làm việc với các đề xuất

Google Tài liệu giúp cộng tác viên tạo đề xuất trì hoãn nội dung chỉnh sửa một cách hiệu quả đang chờ phê duyệt.

Khi bạn sử dụng documents.get để tìm nạp nội dung tài liệu, nội dung có thể bao gồm chưa được phân giải nội dung đề xuất. Để kiểm soát cách documents.get thể hiện nội dung đề xuất, hãy sử dụng không bắt buộc SuggestionsViewMode . Các điều kiện lọc sau đây có sẵn với thông số này:

  • Nhận nội dung bằng SUGGESTIONS_INLINE, vì vậy, văn bản đang chờ xoá hoặc chèn sẽ xuất hiện trong tài liệu.
  • Nhận nội dung dưới dạng bản xem trước với tất cả các đề xuất đều được chấp nhận.
  • Nhận nội dung dưới dạng bản xem trước mà không có đề xuất, với tất cả các đề xuất bị từ chối.

Nếu bạn không cung cấp SuggestionsViewMode, API Google Tài liệu sẽ sử dụng chế độ mặc định phù hợp với đặc quyền của người dùng hiện tại.

Đề xuất và chỉ mục

Một lý do khiến SuggestionsViewMode rất quan trọng là các chỉ mục trong phần tử câu trả lời có thể khác nhau tuỳ thuộc vào việc có đề xuất hay không, như được trình bày dưới đây.

Nội dung có đề xuất Nội dung không có đề xuất
{
 "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"
        }
       }
      }
     ]
    }
   }
  }
 ]
},

Trong phản hồi ở trên, đoạn có chứa dòng "Văn bản theo sau đề xuất" cho thấy sự khác biệt khi sử dụng SuggestionsViewMode. Với giá trị được đặt thành SUGGESTIONS_INLINE, startIndex của ParagraphElement bắt đầu từ 51 và endIndex kết thúc ở 81. Nếu không có đề xuất, startIndexendIndex có giá trị từ 32 đến 62.

Nhận nội dung mà không cần đề xuất

Mã mẫu một phần sau đây cho biết cách tải một tài liệu dưới dạng bản xem trước bằng tất cả đề xuất đã bị từ chối (nếu có) bằng cách đặt SuggestionsViewMode thành PREVIEW_WITHOUT_SUGGESTIONS.

Java

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

Python

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

Việc bỏ qua tham số SuggestionsViewMode tương đương với việc cung cấp DEFAULT_FOR_CURRENT_ACCESS làm giá trị tham số.

Kiểu đề xuất

Tài liệu cũng có thể có đề xuất kiểu. Đây là những thay đổi được đề xuất cho định dạng và trình bày thay vì các thay đổi đối với nội dung.

Không giống như chèn hoặc xoá văn bản, các thao tác này không bù trừ chỉ mục—mặc dù chúng có thể chia nhỏ TextRun thành nhỏ hơn nhưng chỉ cần thêm chú thích về thay đổi kiểu được đề xuất.

Một trong những chú thích này là SuggestedTextStyle! gồm 2 phần:

  • textStyle, mô tả cách văn bản được tạo kiểu sau khi được đề xuất thay đổi nhưng không cho biết điều gì đã thay đổi.

  • textStyleSuggestionState cho biết cách đề xuất thay đổi các trường của textStyle.

Bạn có thể xem nội dung này trong bản trích xuất thẻ tài liệu sau đây, trong đó có thay đổi kiểu được đề xuất:

[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] }

Trong mẫu trên, đoạn bao gồm 3 đoạn văn bản, bắt đầu từ dòng 6, 14 và 50. Kiểm tra lần chạy văn bản ở giữa:

  • Dòng 16: Có một đối tượng suggestedTextStyleChanges.
  • Dòng 18: textStyle chỉ định định dạng khác nhau.
  • Dòng 36: textStyleSuggestionState cho bạn biết rằng chỉ phần in đậm của đặc tả này là đề xuất.
  • Dòng 42: Kiểu in nghiêng của lần chạy văn bản này là một phần của tài liệu hiện tại (và không bị ảnh hưởng bởi đề xuất đó).

Chỉ các tính năng kiểu được đặt thành true trong textStyleSuggestionState mới là một phần về đề xuất.