为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 pygsheets 旋转 Google 表格中的文本?

如何使用 pygsheets 旋转 Google 表格中的文本?

qq_笑_17 2022-03-09 21:18:30
我正在尝试使用 python 中的 pygsheets 在 Google Sheet 中旋转一些长标题名称的文本。下面的代码显示了对 pygsheets 中提供的示例的轻微修改,根据文档应该可以工作。文本写入正确的单元格,单元格 A1 为粗体,但单元格 B1 和 C1 未旋转。没有出现错误消息。知道为什么这不起作用吗?import pygsheetssheet_url = "https://docs.google.com/spreadsheets/d/1t3nYyvkVkf6E36vTRucRQ35XQWbeRC--6U5h1chtikI"gc = pygsheets.authorize(service_file = "credentials.json")sh = gc.open_by_url(sheet_url)wks = sh.worksheet("title", "Sheet1")header = wks.cell('A1')header.value = 'Bold Text'header.set_text_format('bold', True)header.update()header2 = wks.cell('B1')header2.value = '45 Degree rotated text'header2.set_text_rotation('angle', 45)header2.update()header3 = wks.cell('C1')header3.value = 'Vertical Text'header3.set_text_rotation('vertical', True)header3.update()
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您想将 Sheets API 的“textRotation”与 pyghseets 一起使用。

如果我的理解是正确的,这个答案怎么样?在我的环境中,我也可以确认与您发生了同样的问题。所以当我看到“pygsheets”的脚本时,我注意到了脚本的修改点。


虽然textRotation设置了参数,但不幸的textRotation是,请求正文中不包含。这样,textRotation行不通。


修改后的脚本:

使用此修改时,请get_json()在cell.py已安装的“pygsheets”目录中修改如下。我认为可能会有更简单的修改。因此,请将此视为几个答案之一。


def get_json(self):

    """Returns the cell as a dictionary structured like the Google Sheets API v4."""

    try:

        nformat, pattern = self.format

    except TypeError:

        nformat, pattern = self.format, ""


    if self._formula != '':

        value = self._formula

        value_key = 'formulaValue'

    elif is_number(self._value):

        value = self._value

        value_key = 'numberValue'

    elif type(self._value) is bool:

        value = self._value

        value_key = 'boolValue'

    elif type(self._value) is str or type(self._value) is unicode:

        value = self._value

        value_key = 'stringValue'

    else:   # @TODO errorValue key not handled

        value = self._value

        value_key = 'errorValue'


    ret_json = dict()

    ret_json["userEnteredFormat"] = dict()


    if self.format[0] is not None:

        ret_json["userEnteredFormat"]["numberFormat"] = {"type": getattr(nformat, 'value', nformat),

                                                         "pattern": pattern}

    if self._color[0] is not None:

        ret_json["userEnteredFormat"]["backgroundColor"] = {"red": self._color[0], "green": self._color[1],

                                                            "blue": self._color[2], "alpha": self._color[3]}

    if self.text_format is not None:

        ret_json["userEnteredFormat"]["textFormat"] = self.text_format

        fg = ret_json["userEnteredFormat"]["textFormat"].get('foregroundColor', None)

        if fg:

            ret_json["userEnteredFormat"]["textFormat"]['foregroundColor'] = {"red": fg[0], "green": fg[1],

                                                                              "blue": fg[2], "alpha": fg[3]}


    if self.borders is not None:

        ret_json["userEnteredFormat"]["borders"] = self.borders

    if self._horizontal_alignment is not None:

        ret_json["userEnteredFormat"]["horizontalAlignment"] = self._horizontal_alignment.value

    if self._vertical_alignment is not None:

        ret_json["userEnteredFormat"]["verticalAlignment"] = self._vertical_alignment.value

    if self._wrap_strategy is not None:

        ret_json["userEnteredFormat"]["wrapStrategy"] = self._wrap_strategy


    ### Added -- begin

    if self.text_rotation is not None:

        ret_json["userEnteredFormat"]["textRotation"] = self.text_rotation

    ### Added -- end


    if self._note is not None:

        ret_json["note"] = self._note

    ret_json["userEnteredValue"] = {value_key: value}


    return ret_json

结果:

反映上述修改时,您的脚本将获得以下结果。

//img1.sycdn.imooc.com//6228a9400001ad3306890270.jpg

笔记:

  • 这个修改后的脚本假设 Sheets API 已经可以使用。

  • 在将 pygsheets 更新为“pygsheets-2.0.1”后,我调查了上述修改。


查看完整回答
反对 回复 2022-03-09
  • 1 回答
  • 0 关注
  • 266 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号