Python 通过gspread和googlesheetsapi更改googlesheets中的列格式

Python 通过gspread和googlesheetsapi更改googlesheets中的列格式,python,google-sheets-api,gspread,Python,Google Sheets Api,Gspread,我正在使用gspread,我正在寻找通过脚本更改列格式的正确方法。我有一个有时间段的专栏。我想将整个列的格式更改为duration。在GoogleUI中,我可以标记整个列,然后单击格式、数字和设置持续时间。可以通过gspread/googlesheetsapi实现吗 编辑 client = gspread.authorize(credentials) try: sheet = client.open(sys.argv[1]).sheet1 except (gspread.Spreadshe

我正在使用gspread,我正在寻找通过脚本更改列格式的正确方法。我有一个有时间段的专栏。我想将整个列的格式更改为
duration
。在GoogleUI中,我可以标记整个列,然后单击格式、数字和设置持续时间。可以通过gspread/googlesheetsapi实现吗

编辑

client = gspread.authorize(credentials)

try:
  sheet = client.open(sys.argv[1]).sheet1
except (gspread.SpreadsheetNotFound, IndexError):
  print("Spreadsheet not found")
  sys.exit()

try:
  tags = sheet.col_values(13)
  tags.remove('Tags')
  unique_tags = list(dict.fromkeys(tags))
except ValueError:
  print("Your spreadsheet cannot be modified and should contain original 
  columns from toggle reports.")
  sys.exit()


START_INDEX = 7
sheet.update_cell(6, 15, "SUM")
for tag in unique_tags:
  sheet.update_cell(START_INDEX, 15, tag)
  sheet.update_cell(START_INDEX, 16, "=SUMIF(M2:M; " + '"' + tag + '"' + "; 
  L2:L)")
  START_INDEX += 1

sheet.update_cell(6, 16, "=SUM(P7:P15)")
  • 您想更改Google电子表格中列的格式。
    • 在您的情况下,列中有持续时间的值。您想更改持续时间的格式
  • 您希望使用gspread和python来实现这一点
  • 您已经能够使用带有gspread的Sheets API获取和放置电子表格的值
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

修改点:
  • 为了更改列的格式,使用了Sheets API中的spreadsheets.batchUpdate方法和spreadsheets.batchUpdate方法的“RepeatCellRequest”。在gspread,电子表格.batchUpdate的方法可用作
    批量更新(正文)
修改脚本: 在此修改中,将使用问题中脚本的顶部部分

try:
    spreadsheet = client.open(sys.argv[1])  # Modified
    sheet = spreadsheet.sheet1  # Added
except (gspread.SpreadsheetNotFound, IndexError):
    print("Spreadsheet not found")
    sys.exit()

# I added below script.
requests = [{
    "repeatCell": {
        "range": {
            "startColumnIndex": 0,
            "endColumnIndex": 1,
            "sheetId": sheet._properties['sheetId']
        },
        "cell": {
            "userEnteredFormat": {
                "numberFormat": {
                    "type": "TIME",
                    "pattern": "[m]:s"
                }
            }
        },
        "fields": "userEnteredFormat.numberFormat"
    }
}]
body = {
    'requests': requests
}
res = spreadsheet.batch_update(body)
print(res)
  • 作为测试用例,当列“a”(单元“A1”)的行1具有
    1:23:45
    作为持续时间时,当运行上述脚本(格式模式为
    [m]:s
    )时,
    1:23:45
    变为
    83:45
    • 顺便说一下,
      1:23:45
      的格式模式作为持续时间是
      [h]:mm:ss
  • 如果格式模式为
    [s]
    1:23:45
    变为
    5025
注:
  • 使用此脚本时,我建议使用示例电子表格。因为脚本更改了格式。
  • 在上面修改的脚本中,
    sys.argv[1]
    电子表格名称中第一个选项卡上列“A”的持续时间格式更改为
    [m]:s
  • 这是一个简单的示例脚本。因此,请根据您的实际情况进行修改。特别是,请根据您的实际情况修改格式模式。因为我不确定你的实际情况
参考资料:
  • 关于持续时间的模式,官方文件如下所示

    • [h+]
      :一段时间内经过的小时数。字母数表示最小位数(添加前导0)
    • [m+]
      :一段时间内经过的分钟数。字母数表示最小位数(添加前导0)
    • [s+]
      :持续时间内经过的秒数。字母数表示最小位数(添加前导0)

您想使用gspread修改单元格的格式。我认为你的目标是可以实现的。如果您想要一个示例脚本,我可以问一下您的情况吗?您已经能够使用gspread和python为Google电子表格获取和输入值。我的理解正确吗?还有,你能提供你当前的脚本吗?是的,已经完成了,我用python脚本把我的值放到Google电子表格中,但是我在列格式上有问题。我的示例脚本在我的问题中。感谢您的回复和添加信息。我提出了一个示例脚本。你能确认一下吗?如果我误解了你的问题,而这不是你想要的方向,我道歉。届时,请提供一份样本电子表格,包括您期望的输入和输出。通过这一点,我想确认一下。当然,请删除您的个人信息。效果很好!格式[h]:mm:ss是我想要的。非常感谢@谢谢你的回复。我很高兴你的问题解决了。也谢谢你。