Google表格API - 格式化插入的值

时间:2016-09-29 17:07:30

标签: python google-spreadsheet-api

通过此代码,我在Google电子表格中更新了一堆行。 请求顺利,并返回下面的updatedRange

result = service.spreadsheets().values().append(
    spreadsheetId=spreadsheetId,
    range=rangeName,
    valueInputOption="RAW",
    insertDataOption="INSERT_ROWS",
    body=body
).execute()
print(result)
print("Range updated")
updateRange = result['updates']['updatedRange']

现在,我想要batchUpdate请求设置格式或设置受保护的范围,但这些API需要指定范围为startRowIndexendRowIndex的范围等。< / p>

如何从updatedRange

中检索行索引

1 个答案:

答案 0 :(得分:1)

等待原生或更好的答案,我会发布一个我创建的功能,将namedRange翻译成gridRange。 该函数远非完美,并且不会将工作表名称转换为工作表ID(我将该任务转移到另一个特定函数),但接受表单中的命名范围:

  • sheet!A:B
  • sheet!A1:B
  • sheet!A:B5
  • sheet!A1:B5

这是代码

    import re

    def namedRange2Grid(self, rangeName):
        ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
        match = re.match(".*?\!([A-Z0-9]+)\:([A-Z0-9]+)", rangeName)
        if match:
            start = match.group(1)
            end = match.group(2)
            matchStart = re.match("([A-Z]{1,})([1-9]+){0,}", start)
            matchEnd = re.match("([A-Z]{1,})([1-9]+){0,}", end)
            if matchStart and matchEnd:
                GridRange = {}
                letterStart = matchStart.group(1)
                letterEnd = matchEnd.group(1)
                if matchStart.group(2):
                    numberStart = int(matchStart.group(2))
                    GridRange['startRowIndex'] = numberStart - 1
                if matchEnd.group(2):
                    numberEnd = int(matchEnd.group(2))
                    GridRange['endRowIndex'] = numberEnd

                i = 0
                for l in range(0, len(letterStart)):
                    i = i + (l * len(ascii_uppercase))
                    i = i + ascii_uppercase.index(letterStart[l])
                GridRange['startColumnIndex'] = i

                i = 0
                for l in range(0, len(letterEnd)):
                    i = i + (l * len(ascii_uppercase))
                    i = i + ascii_uppercase.index(letterEnd[l])
                GridRange['endColumnIndex'] = i + 1

                return GridRange