Utiliser les suggestions

Google Docs permet aux collaborateurs de créer suggestions de manière efficace les modifications différées en attente d'approbation.

Lorsque vous utilisez documents.get pour récupérer le contenu du document, ce dernier peut inclure des erreurs des suggestions. Pour contrôler la façon dont documents.get représente les suggestions, utilisez les facultatif SuggestionsViewMode . Les conditions de filtre suivantes sont disponibles avec ce paramètre:

  • Obtenez du contenu avec SUGGESTIONS_INLINE, donc un texte en attente de suppression ou s'affiche dans le document.
  • Obtenez un aperçu du contenu avec toutes les suggestions acceptées.
  • Obtenir des contenus sous forme d'aperçu, sans suggestions, avec toutes les suggestions refusé.

Si vous ne fournissez pas SuggestionsViewMode, l'API Google Docs utilise une valeur 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 peut varier selon qu'il existe ou non des suggestions, comme indiqué 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 "Texte après le suggestion" indique la différence lorsque SuggestionsViewMode est utilisé. Avec l'attribut définie sur SUGGESTIONS_INLINE, le startIndex de la ParagraphElement commence à 51 et endIndex s'arrête à 81. Sans suggestions, le startIndex et endIndex sont compris entre 32 et 62.

Obtenir des contenus sans suggestions

L'exemple de code partiel suivant montre comment obtenir un aperçu d'un document avec toutes les suggestions refusées (le cas échéant) en définissant l'attribut SuggestionsViewMode sur 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()
)

Si vous omettez le paramètre SuggestionsViewMode, cela revient à fournir DEFAULT_FOR_CURRENT_ACCESS comme valeur de paramètre.

Suggestions de style

Les documents peuvent également comporter des suggestions de style. Il s'agit de suggestions de modifications la mise en forme et la présentation, plutôt que les modifications du contenu.

Contrairement aux insertions ou aux suppressions de texte, celles-ci ne compensent pas des index, même s'ils risquent de diviser une TextRun en plus petit mais vous devez simplement ajouter des annotations concernant le changement de style suggéré.

Une de ces annotations est un SuggestedTextStyle qui se compose de deux parties:

  • textStyle, qui décrit le style appliqué au texte après la suggestion change, mais ne précise pas ce qui a changé.

  • Le textStyleSuggestionState, qui indique l'évolution de la suggestion les champs de textStyle.

Vous pouvez le voir dans l'extrait d'onglet du document suivant, qui comprend une modification de style suggérée:

[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 comprend trois exécutions de texte, à partir des lignes 6, 14 et 50. Examinez l'exécution du texte du milieu:

  • Ligne 16: un objet suggestedTextStyleChanges
  • Ligne 18: textStyle spécifie plusieurs mises en forme.
  • Ligne 36: textStyleSuggestionState vous indique que seule la partie en gras de cette spécification était la suggestion.
  • Ligne 42: le style en italique de cette séquence de texte fait partie du document actuel (et non concernées par la suggestion).

Seuls les éléments géographiques de style définis sur true dans textStyleSuggestionState font partie de la suggestion.