Google Docs permet aux collaborateurs de faire des suggestions qui sont en fait des modifications différées en attente d'approbation.
Lorsque vous utilisez la méthode documents.get
pour extraire le contenu d'un document, il est possible que le contenu inclue des suggestions non résolues. Pour contrôler la façon dont documents.get
représente les suggestions, utilisez le paramètre facultatif SuggestionsViewMode
. Les conditions de filtrage suivantes sont disponibles avec ce paramètre:
- Obtenez le contenu avec
SUGGESTIONS_INLINE
afin que le texte en attente de suppression ou d'insertion s'affiche dans le document. - Obtenez un aperçu du contenu avec toutes les suggestions acceptées.
- Obtenez le contenu en tant qu'aperçu, sans suggestions, et toutes les suggestions sont refusées.
Si vous ne fournissez pas SuggestionsViewMode
, l'API Google Docs utilise un paramètre par défaut adapté aux droits de l'utilisateur actuel.
Suggestions et index
L'une des raisons pour lesquelles SuggestionsViewMode
est important est que les index de la réponse peuvent varier en fonction de la présence de suggestions, comme illustré ci-dessous.
Contenu avec suggestions | Contenu sans suggestions |
---|---|
{ "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" } } } ] } } } ] }, |
Dans la réponse ci-dessus, le paragraphe contenant la ligne "Text following the suggestion" (Texte suivant la suggestion) montre la différence lorsque vous utilisez SuggestionsViewMode
. Lorsque la valeur est définie sur SUGGESTIONS_INLINE
, le startIndex
de ParagraphElement
commence à 51 et le endIndex
s'arrête à 81. Sans suggestions, la plage startIndex
et endIndex
est comprise entre 32 et 62.
Obtenir du contenu sans suggestions
L'exemple de code partiel suivant montre comment obtenir un document en tant qu'aperçu avec toutes les suggestions rejetées (le cas échéant) en définissant le paramètre SuggestionsViewMode
sur 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() )
Omettre le paramètre SuggestionsViewMode
équivaut à fournir DEFAULT_FOR_CURRENT_ACCESS
comme valeur du paramètre.
Suggestions de style
Les documents peuvent également comporter des suggestions de style. Il s'agit de suggestions de modifications de mise en forme et de présentation, et non de contenu.
Contrairement aux insertions ou suppressions de texte, ces éléments ne décalent pas les index (bien qu'ils puissent diviser un TextRun
en segments plus petits), mais ajoutent simplement des annotations sur le changement de style suggéré.
Une telle annotation est une SuggestedTextStyle
, qui se compose de deux parties:
textStyle
, qui décrit le style du texte après la modification suggérée, mais ne précise pas ce qui a changé.textStyleSuggestionState
, qui indique comment la suggestion modifie les champs detextStyle
.
Vous pouvez le constater dans l'extrait de l'onglet de document suivant, qui inclut une suggestion de modification de style:
[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] }
Dans l'exemple ci-dessus, le paragraphe se compose de trois parcours de texte, commençant aux lignes 6, 14 et 50. Examinez la ligne de texte du milieu:
- Ligne 16: un objet
suggestedTextStyleChanges
est présent. - Ligne 18:
textStyle
spécifie différents formats. - Ligne 36:
textStyleSuggestionState
vous indique que seule la partie en gras de cette spécification était la suggestion. - Ligne 42: le style italique de cette séquence de texte fait partie du document actuel (et n'est pas affecté par la suggestion).
Seules les fonctionnalités de style définies sur true
dans textStyleSuggestionState
font partie de la suggestion.