[Python] Adding text to gdoc using Google API sets random paragraph style

Discussão em 'Python' iniciado por Stack, Junho 18, 2025.

  1. Stack

    Stack Membro Participativo

    I have the following method that adds formatted text to a data structure for it to be used in a batchUpdate request:

    def add_text(
    self,
    text,
    bold=None,
    color=None,
    font_size=None,
    bg_color=None,
    italic=None,
    ):
    if text == "":
    return
    else:
    # Force to string to further processing
    text = str(text)
    style_updates = {
    "updateTextStyle": {
    "range": {
    "startIndex": self.index,
    "endIndex": self.index + len(text),
    },
    "textStyle": {
    "bold": False,
    "italic": False,
    "foregroundColor": {
    "color": {
    "rgbColor": {
    "red": 0,
    "green": 0,
    "blue": 0,
    }
    }
    },
    "backgroundColor": {},
    },
    "fields": "bold, italic, foregroundColor, backgroundColor",
    }
    }

    if bold:
    style_updates["updateTextStyle"]["textStyle"]["bold"] = bold

    if italic:
    style_updates["updateTextStyle"]["textStyle"]["italic"] = italic

    if color:
    style_updates["updateTextStyle"]["textStyle"][
    "foregroundColor"
    ] = {
    "color": {
    "rgbColor": {
    "red": color[0],
    "green": color[1],
    "blue": color[2],
    }
    }
    }
    if font_size:
    style_updates["updateTextStyle"]["textStyle"]["fontSize"] = {
    "magnitude": font_size,
    "unit": "PT",
    }
    style_updates["updateTextStyle"]["fields"] += ", fontSize"

    if bg_color:
    style_updates["updateTextStyle"]["textStyle"][
    "backgroundColor"
    ] = {
    "color": {
    "rgbColor": {
    "red": bg_color[0],
    "green": bg_color[1],
    "blue": bg_color[2],
    }
    }
    }

    self.updates += [
    {
    "insertText": {
    "location": {
    "index": self.index,
    },
    "text": text,
    }
    },
    style_updates,
    ]
    self.index += len(text)


    The problem I'm having is that the resulting text in the target GDoc is "Heading 6" styled. I don't know where that style spec came from (the previous paragraph is "Heading 5", so it is not a hanging context that was taken). I also tried to append a paragraph style:

    if style:
    style_updates["updateParagraphStyle"] = {
    "range": {
    "startIndex": self.index,
    "endIndex": self.index + len(text),
    },
    "paragraphStyle": {"namedStyleType": style},
    "fields": "namedStyleType",
    }


    But it raises a Google API exception saying that it os not allowed.

    Any help would be appreciated.

    Continue reading...

Compartilhe esta Página