Korzystanie z sugestii

Dokumenty Google umożliwiają współpracownikom tworzenie sugestie, które są odroczenie zmian w oczekiwaniu na zatwierdzenie.

Gdy korzystasz z narzędzia documents.get pobierania treści dokumentu, treść może zawierać nierozwiązane sugestie. Aby określić, jak documents.get ma wyświetlać sugestie, użyj funkcji opcjonalnie SuggestionsViewMode. . W przypadku tego parametru dostępne są te warunki filtra:

  • Pobieraj treści za pomocą funkcji SUGGESTIONS_INLINE, więc tekst oczekuje na usunięcie lub .
  • Pobierz treść w formie podglądu z zaakceptowanymi wszystkimi sugestiami.
  • Wyświetlaj treści w formie podglądu bez sugestii ze wszystkimi sugestiami odrzucono.

Jeśli nie podasz SuggestionsViewMode, interfejs API Dokumentów Google użyje wartości domyślnej odpowiednie do uprawnień bieżącego użytkownika.

Sugestie i Indeksy

Jednym z powodów, dla których SuggestionsViewMode jest ważny, jest to, że indeksy w tabeli odpowiedź może się różnić w zależności od tego, czy są dostępne sugestie, jak pokazano poniżej.

Treści z sugestiami Treści bez sugestii
{
 "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"
        }
       }
      }
     ]
    }
   }
  }
 ]
},

W powyższej odpowiedzi akapit zawierający wiersz „Tekst następujący po fragmencie sugestia pokazuje różnicę w przypadku użycia funkcji SuggestionsViewMode. Za pomocą ustawiona na SUGGESTIONS_INLINE, startIndex funkcji ParagraphElement. zaczyna się na 51, a endIndex kończy na 81. Bez sugestii startIndex i endIndex mieszczą się w przedziale od 32 do 62.

Otrzymywanie treści bez sugestii

Poniższy przykładowy częściowy kod pokazuje, jak wyświetlić dokument jako podgląd wszystkie sugestie (jeśli takie są) zostały odrzucone przez ustawienie SuggestionsViewMode na 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()
)

Pominięcie parametru SuggestionsViewMode oznacza podanie DEFAULT_FOR_CURRENT_ACCESS jako wartość parametru.

Sugestie dotyczące stylu

Dokumenty mogą też zawierać sugestie dotyczące stylu. To są sugerowane zmiany w: formatowania i prezentacji, a nie zmian treści.

W przeciwieństwie do operacji wstawiania lub usuwania tekstu indeksów – choć mogą one rozdzielać TextRun na mniejszy fragmenty – ale wystarczy dodać adnotacje o sugerowanej zmianie stylu.

Jedną z takich adnotacji jest SuggestedTextStyle, która składa się z 2 części:

  • Pole textStyle, które określa styl tekstu na podstawie sugerowanego tekstu zmiany, ale nie informuje o tym, co się zmieniło.

  • textStyleSuggestionState, który wskazuje, jak zmienia się sugestia pól textStyle.

Możesz to zobaczyć w poniższym fragmencie karty dokumentu, który zawiera sugerowana zmiana stylu:

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

W przykładzie powyżej akapit składa się z 3 uruchomień tekstu, zaczynając od wiersza 6 14 i 50. Sprawdź drugie uruchomienie tekstu:

  • Wiersz 16: występuje obiekt suggestedTextStyleChanges.
  • Wiersz 18: element textStyle określa różne formatowanie.
  • Wiersz 36: textStyleSuggestionState informuje, że tylko pogrubiona część że ta specyfikacja była sugestią.
  • Wiersz 42: styl kursywy w tym uruchomieniu tekstu jest częścią bieżącego dokumentu (i sugestia nie powinna ich dotyczyć).

Uwzględniane są tylko funkcje stylu ustawione na true w textStyleSuggestionState z sugestii.