我无法使用 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 创建新的电子表格。请注意这一点。

参考: