Tworzenie pustych arkuszy kalkulacyjnych na Dysku Google przy użyciu interfejsu Drive API (w Pythonie)

Chcę utworzyć pusty arkusz Google (utworzony tylko z metadanymi) na Dysku Google. Kiedy odwołałem się do dokumentacji Google SpreadSheet API , mówi się, aby używać interfejsu API DocumentsList, ale jest on przestarzały i zamiast tego prosi mnie o użycie interfejsu API Dysku Google. W dokumentach API dysku nie mogłem znaleźć sposobu na utworzenie pustego arkusza. Ktoś wie jak to zrobić?

Author: wescpy, 2012-10-05

5 answers

Możesz to zrobić używając Drive API , ustawiając typ MIME na application/vnd.google-apps.spreadsheet:

Aby to zrobić w Pythonie:

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)

Udaj się do Google APIs Explorer , aby go wypróbować!

 28
Author: bossylobster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-23 17:00:23

(Jul 2016) odpowiedź BossyLobster jest nadal ważna (ponieważ Drive API v2 nie zostało [[10]} jeszcze przestarzałe]). Jednak poniżej znajdują się bardziej nowoczesne sposoby robienia tego samego i kilka filmów, które pomagają w zrozumieniu: {]}

Authorization boilerplate dla obu przykładów poniżej

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)

Uwaga: aby utworzyć projekt API i poświadczenia OAuth2, a także pobrać te poświadczenia do pliku client_secret.json (lub client_id.json), przejdź do Google Developers Konsola .

  • aby dowiedzieć się, jak korzystać z konsoli deweloperów, zobacz ten film .
  • aby przejść przez ten kod autoryzacyjny kotła, zobacz ten film . (Uwaga: powyższa Płyta kotła jest nieco nowsza/ulepszona w stosunku do kodu Z Filmu)
  • aby uzyskać wstęp do korzystania z Google Drive API v2( Lista plików dysku), zobacz ten film .
  • aby dowiedzieć się więcej o interfejsie API Dysku Google v3 (pobieranie/pobieranie plików), zobacz to blogpost & video . (Uwaga: v2 i v3 na żywo obok siebie... v2 nie jest jeszcze przestarzała; v3: mniej wywołań API, lepsza wydajność w porównaniu z v2)
  • aby dowiedzieć się więcej o Google Sheets API v4 (migracja danych SQL do arkusza), zobacz ten post na blogu i wideo.

Utwórz nowy / pusty arkusz w / Google Drive API 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

Utwórz nowy / pusty arkusz w / Google Sheets API 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()
Teraz możesz zapytać: "Dlaczego istnieją dwa różne sposoby tworzenia pustego arkusza?"Mówiąc zwięźle, interfejs API arkuszy jest przeznaczony przede wszystkim do operacji zorientowanych na arkusz kalkulacyjny, tj. wstawiania danych, czytania wierszy arkusza kalkulacyjnego, formatowania komórek, tworzenia wykresów, dodawania tabel przestawnych itp., nie żądań zorientowanych na pliki , takich jak tworzenie/usuwanie i import/eksport, gdzie API dysku jest właściwym do użycia. Tak się składa, że tworzenie jest w pewnym sensie jednym i drugim, dlatego istnieją dwa sposoby na zrobienie tego.
 8
Author: wescpy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:00:06

Odniesienie api do tworzenia arkusza kalkulacyjnego znajduje się w https://developers.google.com/sheets/reference/rest/v4/spreadsheets/create .

Fragment kodu do utworzenia nowego arkusza kalkulacyjnego jest następujący.

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()
 1
Author: Uma sankar pradhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-06 02:34:23

Zaproponowane metody nie działają dla mnie, ale działa następujący kod:

# 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:'):]
 0
Author: GrigorisG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-16 19:22:41

Możesz również wypróbować bibliotekę pygsheets , którą napisałem, oczywiście oferuje więcej funkcji niż tylko tworzenie arkuszy kalkulacyjnych,

import pygsheets

gc = pygsheets.authorize(outh_file='client_secret.json')

# Open spreadsheet and then worksheet
gc.create('my new sheet')
 0
Author: nithin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-27 14:34:45