- Вы хотите создать новую электронную таблицу в указанной папке c.
- Вы хотите создать новую электронную таблицу, создав несколько рабочих листов.
- Вы хотите добиться этого с помощью googleapis с python.
- Вы уже можете использовать Drive API.
Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Проблема и обходное решение:
Drive API может напрямую создавать электронную таблицу. Но в этом случае электронную таблицу нельзя создать из нескольких листов. Поэтому в этом случае необходимо также использовать Sheets API.
Прежде чем использовать следующие сценарии, включите Sheets API. И, пожалуйста, добавьте https://www.googleapis.com/auth/spreadsheets
в область видимости. В этом случае, пожалуйста, удалите файл учетных данных (token.pickle
), включая токен доступа и refre sh, и повторите авторизацию. Этим отражаются новые возможности. Пожалуйста, будьте осторожны с этим.
Шаблон 1:
В этом шаблоне после создания электронной таблицы в заданной папке c с использованием метода создания API-интерфейса накопителя в нее добавляются 2 рабочих листа. создал электронную таблицу, используя метод batchUpdate of Sheets API.
Пример сценария:
sheets = build('sheets', 'v4', credentials=creds)
drive = build('drive', 'v3', credentials=creds)
google_folder_id = '###'
file_metadata = {'properties': {'title': 'test title'}, 'name': 'google sheets filename', 'parents': [google_folder_id], 'mimeType': 'application/vnd.google-apps.spreadsheet'}
google_sheets_metadata = drive.files().create(body=file_metadata).execute()
fileId = google_sheets_metadata['id']
body = {"requests": [{"addSheet": {}}, {"addSheet": {"properties": {"title": "sampleSheet"}}}]}
res = sheets.spreadsheets().batchUpdate(spreadsheetId=fileId, body=body).execute()
print(res)
- В этом случае 3-е имя листа
sampleSheet
в качестве образца.
Шаблон 2:
В этом шаблоне после создания электронной таблицы в папке root с 3 рабочими листами с использованием метода создания Sheets API созданная электронная таблица перемещается в указать папку c с использованием метода обновления Drive API.
Пример сценария:
sheets = build('sheets', 'v4', credentials=creds)
drive = build('drive', 'v3', credentials=creds)
google_folder_id = '###'
body = {"properties": {"title": "sampleSpreadsheet"}, "sheets": [{}, {}, {"properties": {"title": "sampleSheet"}}]}
res = sheets.spreadsheets().create(body=body).execute()
spreadsheetId = res['spreadsheetId']
google_sheets_metadata = drive.files().update(fileId=spreadsheetId, removeParents='root', addParents=google_folder_id).execute()
- В этом случае имя 3-го листа
sampleSheet
в качестве образца .
Примечание:
- В приведенных выше сценариях предполагается, что ваш сценарий для авторизации работает.
Ссылки:
Если я неправильно понял ваш вопрос и это было не то направление, которое вы хотите, я прошу прощения.
Добавлено:
Когда вы хотите использовать шаблон 1, и вы хотите дать листу имена "a" и "b" для 1-й и 2-й вкладок сценарий выглядит следующим образом.
Когда новая электронная таблица создается с помощью Drive API, созданная электронная таблица имеет первую вкладку. Поэтому в вашем случае необходимо переименовать 1-й лист в «a» и добавить один лист с именем «b».
sheets = build('sheets', 'v4', credentials=creds)
drive = build('drive', 'v3', credentials=creds)
google_folder_id = '###'
file_metadata = {'properties': {'title': 'test title'}, 'name': 'google sheets filename', 'parents': [google_folder_id], 'mimeType': 'application/vnd.google-apps.spreadsheet'}
google_sheets_metadata = drive.files().create(body=file_metadata).execute()
fileId = google_sheets_metadata['id']
title = [{"addSheet": {"properties": {"title": name}}} for name in set(['b'])]
title.append({"updateSheetProperties": {"fields": "title", "properties": {"title": "a", "index": 0}}})
body = {"requests": title}
res = sheets.spreadsheets().batchUpdate(spreadsheetId=fileId, body=body).execute()
print(res)