我无法使用 python 正确调整 google 电子表格 body
I can't properly adjust the google spreadsheet body using python
我可以使用 python 创建一个新的空白 google 电子表格。一切正常,除了我不知道如何根据我的需要正确调整电子表格 body。我真正想做的是在第一行的单元格中传递值(有点像 headers),让这些值在每个单元格中居中,最后让这些单元格变成绿色。我知道在创建新电子表格时可以这样做(已多次阅读开发人员的 google 工作表),但我就是不知道该怎么做。任何帮助或提示将不胜感激。
import os.path
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from pprint import pprint
from googleapiclient import discovery
import gspread
from google.oauth2.credentials import Credentials
from google.oauth2 import service_account
from googleapiclient.discovery import build
import sys
SCOPES = ["https://www.googleapis.com/auth/drive.file"]
creds = None
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'desktop_client.json', SCOPES)
#creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.json', 'w') as token:
token.write(creds.to_json())
service = build('sheets', 'v4', credentials=creds)
#sheet_name = str(sys.argv[1])
folder_id = str(sys.argv[2])
spreadsheet_body = {
'properties':{
#spreadsheet name
'title':'test'
},
'sheets':[{
'properties':{
#worksheet name
'title':'Φύλλο1',
'gridProperties':{
#row\column number
'rowCount':100,
'columnCount':11
},
},
}
]
}
request = service.spreadsheets().create(body=spreadsheet_body)
response = request.execute()
# TODO: Change code below to process the `response` dict:
#pprint(response['spreadsheetUrl'])
pprint(response)
# Move the created Spreadsheet to the specific folder.
drive = build('drive', 'v3', credentials=creds)
folderId = folder_id
res = drive.files().update(fileId=response['spreadsheetId'], addParents=folderId, removeParents='root').execute()
#print(res)
我相信你的目标如下。
- 创建新的 Google 电子表格时,您希望在创建的电子表格中包含 header 行。
- 在 header 行,每个文本都与单元格的中心对齐,单元格的背景颜色为绿色。
- 您想使用 googleapis 实现此目的 python。
这样的话,下面的修改怎么样?
发件人:
spreadsheet_body = {
'properties':{
#spreadsheet name
'title':'test'
},
'sheets':[{
'properties':{
#worksheet name
'title':'Φύλλο1',
'gridProperties':{
#row\column number
'rowCount':100,
'columnCount':11
},
},
}
]
}
收件人:
header_values = ['sample1', 'sample2', 'sample3'] # Please set the header values.
header_row = [{'userEnteredValue': {'stringValue': e}, 'userEnteredFormat': {'horizontalAlignment': 'CENTER', 'backgroundColorStyle': {
'rgbColor': {
'red': 0,
'green': 1,
'blue': 0
}}}}
for e in header_values]
spreadsheet_body = {
'properties': {
# spreadsheet name
'title': 'test'
},
'sheets': [{
'properties': {
# worksheet name
'title': 'Φύλλο1',
'gridProperties': {
# row\column number
'rowCount': 100,
'columnCount': 11
},
},
'data': [{'rowData': [{'values': header_row}]}] # Added
}
]
}
注:
- 此修改后的脚本假定您已经能够使用 Sheets API 创建新的电子表格。请注意这一点。
参考:
我可以使用 python 创建一个新的空白 google 电子表格。一切正常,除了我不知道如何根据我的需要正确调整电子表格 body。我真正想做的是在第一行的单元格中传递值(有点像 headers),让这些值在每个单元格中居中,最后让这些单元格变成绿色。我知道在创建新电子表格时可以这样做(已多次阅读开发人员的 google 工作表),但我就是不知道该怎么做。任何帮助或提示将不胜感激。
import os.path
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from pprint import pprint
from googleapiclient import discovery
import gspread
from google.oauth2.credentials import Credentials
from google.oauth2 import service_account
from googleapiclient.discovery import build
import sys
SCOPES = ["https://www.googleapis.com/auth/drive.file"]
creds = None
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'desktop_client.json', SCOPES)
#creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.json', 'w') as token:
token.write(creds.to_json())
service = build('sheets', 'v4', credentials=creds)
#sheet_name = str(sys.argv[1])
folder_id = str(sys.argv[2])
spreadsheet_body = {
'properties':{
#spreadsheet name
'title':'test'
},
'sheets':[{
'properties':{
#worksheet name
'title':'Φύλλο1',
'gridProperties':{
#row\column number
'rowCount':100,
'columnCount':11
},
},
}
]
}
request = service.spreadsheets().create(body=spreadsheet_body)
response = request.execute()
# TODO: Change code below to process the `response` dict:
#pprint(response['spreadsheetUrl'])
pprint(response)
# Move the created Spreadsheet to the specific folder.
drive = build('drive', 'v3', credentials=creds)
folderId = folder_id
res = drive.files().update(fileId=response['spreadsheetId'], addParents=folderId, removeParents='root').execute()
#print(res)
我相信你的目标如下。
- 创建新的 Google 电子表格时,您希望在创建的电子表格中包含 header 行。
- 在 header 行,每个文本都与单元格的中心对齐,单元格的背景颜色为绿色。
- 您想使用 googleapis 实现此目的 python。
这样的话,下面的修改怎么样?
发件人:
spreadsheet_body = {
'properties':{
#spreadsheet name
'title':'test'
},
'sheets':[{
'properties':{
#worksheet name
'title':'Φύλλο1',
'gridProperties':{
#row\column number
'rowCount':100,
'columnCount':11
},
},
}
]
}
收件人:
header_values = ['sample1', 'sample2', 'sample3'] # Please set the header values.
header_row = [{'userEnteredValue': {'stringValue': e}, 'userEnteredFormat': {'horizontalAlignment': 'CENTER', 'backgroundColorStyle': {
'rgbColor': {
'red': 0,
'green': 1,
'blue': 0
}}}}
for e in header_values]
spreadsheet_body = {
'properties': {
# spreadsheet name
'title': 'test'
},
'sheets': [{
'properties': {
# worksheet name
'title': 'Φύλλο1',
'gridProperties': {
# row\column number
'rowCount': 100,
'columnCount': 11
},
},
'data': [{'rowData': [{'values': header_row}]}] # Added
}
]
}
注:
- 此修改后的脚本假定您已经能够使用 Sheets API 创建新的电子表格。请注意这一点。