Создание пустых таблиц в Google Диске с использованием Drive API (на Python)
Я хочу создать пустой Google Лист (созданный только с метаданными) на Google Диске. Когда я ссылался на документацию Google SpreadSheet API, он говорит, что использует API DocumentList, но он устарел и вместо этого просит меня использовать Google Диск API. В документах Дисковода API я не смог найти способ создания пустого листа. Кто-нибудь знает, как это сделать?
Ответы
Ответ 1
Вы можете сделать это, используя Drive API, установив MIME-тип до application/vnd.google-apps.spreadsheet
:
Для этого в Python:
from apiclient.discovery import build
service = build('drive', 'v2')
import httplib2
credentials = ... # Obtain OAuth 2.0 credentials
http = credentials.authorize(httplib2.Http())
body = {
'mimeType': 'application/vnd.google-apps.spreadsheet',
'title': 'Name of Spreadsheet',
}
file = service.files().insert(body=body).execute(http=http)
# or for version 3 it would be
# file = service.files().create(body=body).execute(http=http)
Перейдите к Google API Explorer, чтобы попробовать!
Ответ 2
(июль 2016) BossyLobster выше, остается в силе (поскольку Drive API v2 не устарел [пока]). Однако ниже представлены более современные способы сделать то же самое и несколько видеороликов, чтобы помочь с пониманием:
Шаблон авторизации для обоих примеров ниже
from apiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
ПРИМЕЧАНИЕ. Чтобы создать свой API-проект и учетные данные OAuth2, а также загрузить эти учетные данные в файл client_secret.json
(или client_id.json
), перейдите в Google Developers Console.
- Чтобы узнать, как использовать Консоль разработчиков, см. это видео.
- Чтобы пройти этот код авторизации шаблона, см. это видео. (ПРИМЕЧАНИЕ: приведенный выше рисунок выше немного улучшен/улучшен из кода в видеоролике).
- Чтобы получить представление об использовании Google Drive API версии 2 (список ваших файлов на Диске), см. это видео.
- Чтобы узнать о Google Диске API v3 (файлы для загрузки/загрузки), см. этот блогпост и видео. (ПРИМЕЧАНИЕ: v2 и v3 живут бок о бок... v2 еще не устарели, v3: меньше вызовов API, более высокая производительность по сравнению с v2)
- Чтобы узнать о API Google Таблиц v4 (перенос данных SQL на лист), см. этот блогпост и видео.
Создать новый/пустой лист с API Google Диска v3 (& v2)
# above: SCOPES = 'https://www.googleapis.com/auth/drive.file'
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
data = {
'name': 'My new Sheet',
'mimeType': 'application/vnd.google-apps.spreadsheet',
}
sheet = DRIVE.files().create(body=data).execute() # insert() for v2
Создать новый/пустой лист с API Google Таблиц v4
# above: SCOPES = 'https://www.googleapis.com/auth/spreadsheets'
SHEETS = discovery.build('sheets', 'v4', http=creds.authorize(Http()))
data = {'properties': {'title': 'My new Sheet'}}
sheet = SHEETS.spreadsheets().create(body=data).execute()
Теперь вы можете спросить: "Почему существуют два разных способа создания чистого листа?" Короче говоря, Sheets API предназначен в первую очередь для ориентированных на электронные таблицы операций, то есть вставки данных, чтения строк таблицы, форматирования ячеек, создания диаграмм, добавления сводных таблиц и т.д., А не для файлов-ориентированных запросов, таких как создание/удаление и импорт /export, где API-интерфейс Drive является правильным для использования. Просто так происходит, что создание - это то, и другое, поэтому есть два способа сделать это.
Ответ 3
Я тоже искал это, но это потому, что я уже использую API документов для этого, но теперь они говорят, что он устарел. Я предполагаю, что API документов по-прежнему будет поддерживаться какое-то время, чтобы вы могли попробовать.
Ответ 4
Предлагаемые методы не сработали для меня, но работает следующий код:
# requires: uid='[email protected]', pass1='password',
# name_spr='name_of_spreadsheet'
import gdata.docs.client
docs_client = gdata.docs.client.DocsClient()
docs_client.ClientLogin(uid, pass1, 'any')
document = gdata.docs.data.Resource(type='spreadsheet', title=name_spr)
resource = docs_client.CreateResource(document)
full_id = resource.resource_id.text # returned by gdata
gs_id = full_id[len('spreadsheet:'):]
Ответ 5
Ссылка api для создания электронной таблицы находится на https://developers.google.com/sheets/reference/rest/v4/spreadsheets/create.
Фрагмент кода для создания новой электронной таблицы выглядит следующим образом.
String[] SCOPES = { SheetsScopes.SPREADSHEETS };
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(),
Arrays.asList(SCOPES)).setBackOff(new ExponentialBackOff());
credential.setSelectedAccountName("[email protected]");
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
com.google.api.services.sheets.v4.Sheets service =
new com.google.api.services.sheets.v4.Sheets.Builder(
transport,
jsonFactory,
credential)
.setApplicationName("Google Sheets API Android Quickstart")
.build();
Spreadsheet spreadsheet = new Spreadsheet();
SpreadsheetProperties properties = new SpreadsheetProperties();
properties.setTitle("SpreadSheetTitle");
spreadsheet.setProperties(properties);
service.spreadsheets().create(spreadsheet).execute()
Ответ 6
вы также можете попробовать библиотеку pygsheets, которую я написал. Это, конечно, больше возможностей, чем просто создание электронных таблиц,
import pygsheets
gc = pygsheets.authorize(outh_file='client_secret.json')
# Open spreadsheet and then worksheet
gc.create('my new sheet')
Ответ 7
Создание новой листинга Google с помощью API Диска Google путем установки типа MIME на application/vnd.google-apps.spreadsheet
не работает.
Он дает:
java.lang.IllegalArgumentException: May not create shortcut files using this method. Use DriveFolder.createShortcutFile() instead