Python 3.x 在google电子表格中更新多个工作表
我有一些代码如下所示:Python 3.x 在google电子表格中更新多个工作表,python-3.x,pandas,google-api,Python 3.x,Pandas,Google Api,我有一些代码如下所示: from __future__ import print_function import pickle import os.path from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request SCOPES = ['https://w
from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
service = build('sheets', 'v4', credentials=creds)
spreadsheet = {
'properties': {
'title': 'Data Integrity Report Completed on {}'.format(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
}
}
spreadsheet = service.spreadsheets().create(body=spreadsheet,
fields='spreadsheetId').execute()
gsheet_id = spreadsheet.get('spreadsheetId')
response_date = service.spreadsheets().values().append(
spreadsheetId=gsheet_id,
valueInputOption='RAW',
range='A1:Z100',
body=dict(
majorDimension='ROWS',
values=miss_occ_df.T.reset_index().T.values.tolist())
).execute()
这段代码基本上创建了一个google电子表格,并将我的数据框附加到第一个工作表中。我想要的是有一个有3个工作表的电子表格。我还需要为每个工作表命名,并向每个工作表上载3个不同的数据帧。我该怎么做?- 您希望实现以下目标。
- 创建新的电子表格
- 在创建的电子表格中需要3张图纸。
- 您想重命名这些工作表
- 将这些值放到每张纸上
- 您希望使用带有python的google api python客户端来实现它们
- 此时,通过给出名称创建3张图纸(工作表)。在这种情况下,将使用
方法create()
values().batchUpdate()
的方法将值放入3张表中。
- 在您的情况下,这些值将被放入新的电子表格中。因此,可以使用此方法输入值
service=build('sheets','v4',credentials=creds)
,如下所示。请设置工作表名称和值的变量
# Please set worksheet names.
sheetNameForWorksheet1 = "sample1"
sheetNameForWorksheet2 = "sample2"
sheetNameForWorksheet3 = "sample3"
# Please set values for each worksheet. Values are 2 dimensional array.
valuesForWorksheet1 = miss_occ_df.T.reset_index().T.values.tolist()
valuesForWorksheet2 = miss_occ_df.T.reset_index().T.values.tolist()
valuesForWorksheet3 = miss_occ_df.T.reset_index().T.values.tolist()
spreadsheet = {
'properties': {
'title': 'Data Integrity Report Completed on {}'.format(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
},
"sheets": [
{
"properties": {
"title": sheetNameForWorksheet1
}
},
{
"properties": {
"title": sheetNameForWorksheet2
}
},
{
"properties": {
"title": sheetNameForWorksheet3
}
}
]
}
spreadsheet = service.spreadsheets().create(body=spreadsheet, fields='spreadsheetId').execute()
gsheet_id = spreadsheet.get('spreadsheetId')
batch_update_values_request_body = {
"data": [
{
"values": valuesForWorksheet1,
"range": sheetNameForWorksheet1,
},
{
"values": valuesForWorksheet2,
"range": sheetNameForWorksheet2,
},
{
"values": valuesForWorksheet3,
"range": sheetNameForWorksheet3,
}
],
"valueInputOption": "USER_ENTERED"
}
response = service.spreadsheets().values().batchUpdate(spreadsheetId=gsheet_id, body=batch_update_values_request_body).execute()
注:
- 这个修改后的脚本假设您已经能够使用Sheets API向电子表格中输入和获取值