Google 工作表 API - 格式化插入的值
Google Sheets API - Formatting inserted values
通过这段代码,我在 Google 电子表格中更新了一堆行。
请求进展顺利,returns 我在下面 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 需要一个指定为 startRowIndex
、[=16= 的范围]等等。
如何从 updatedRange
检索行索引?
等待本地或更好的答案,我将 post 我创建的一个函数,用于将 namedRange
转换为 gridRange
。
该函数远非完美,不会将 sheet 名称转换为 sheet 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
通过这段代码,我在 Google 电子表格中更新了一堆行。
请求进展顺利,returns 我在下面 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 需要一个指定为 startRowIndex
、[=16= 的范围]等等。
如何从 updatedRange
检索行索引?
等待本地或更好的答案,我将 post 我创建的一个函数,用于将 namedRange
转换为 gridRange
。
该函数远非完美,不会将 sheet 名称转换为 sheet 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