2016-11-13 20 views
5

Ich verwende Python. Ich muss ein Blatt in Tabellen mit Google API v4 hinzufügen. Ich kann ein Blatt erstellen, indem ich batchUpdate mit der Tabellenkalkulations-ID und der addSheet-Anforderung verwende (es gibt shetId zurück und erstellt ein leeres Blatt). Aber wie kann ich Daten darin hinzufügen?Fügen Sie Google Datenblatt mit Daten mit Google API v4

data = {'requests': [ 
    { 
     'addSheet':{ 
      'properties':{'title': 'New sheet'} 
     } 
    } 
]} 

res = service.spreadsheets().batchUpdate(spreadsheetId=s_id, body=data).execute() 
SHEET_ID = res['replies'][0]['addSheet']['properties']['sheetId'] 

Antwort

1

herausgefunden, dass Blatt innerhalb Kalkulationstabelle nach dem Erstellen Sie Bereich ‚nameofsheet! A1‘, dh Zugriff auf

service.spreadsheets().values().update(spreadsheetId=s_id, range='New sheet!A1', body=data_i, valueInputOption='RAW').execute() 

Diese Anfrage wird die Daten in neu erstellte Blatt mit dem Namen ‚Neuem Blatt‘ Post

2

Sie können diesen Code hinzufügen, um Daten in Google Sheet zu schreiben. In dem Dokument - Reading & Writing Cell Values

Tabellen können mehrere Blätter haben, wobei jedes Blatt eine beliebige Anzahl von Zeilen oder Spalten haben kann. Eine Zelle ist eine Position am Schnittpunkt einer bestimmten Zeile und Spalte und kann einen Datenwert enthalten. Die Google Tabellen-API bietet die spreadsheets.values-Sammlung zum einfachen Lesen und Schreiben von Werten.

auf einen einzigen Bereich Schreiben

Um Daten auf einen einzigen Bereich zu schreiben, verwenden Sie eine spreadsheets.values.update Anfrage:

values = [ 
    [ 
     # Cell values ... 
    ], 
    # Additional rows ... 
] 
body = { 
    'values': values 
} 
result = service.spreadsheets().values().update(
    spreadsheetId=spreadsheet_id, range=range_name, 
    valueInputOption=value_input_option, body=body).execute() 

Den Körper der Aktualisierungsanforderung muss sein ValueRange Objekt, obwohl das einzige erforderliche Feld ist values. Wenn range angegeben ist, muss es mit dem Bereich in der URL übereinstimmen. Im ValueRange können Sie optional majorDimension angeben. Standardmäßig wird ROWS verwendet. Wenn COLUMNS angegeben ist, wird jedes innere Array in eine Spalte anstatt in eine Zeile geschrieben.

Schreiben mehrere Bereiche

Wenn Sie mehrere diskontinuierliche Bereiche schreiben wollen, können Sie eine spreadsheets.values.batchUpdate Anfrage verwenden:

values = [ 
    [ 
     # Cell values 
    ], 
    # Additional rows 
] 
data = [ 
    { 
     'range': range_name, 
     'values': values 
    }, 
    # Additional ranges to update ... 
] 
body = { 
    'valueInputOption': value_input_option, 
    'data': data 
} 
result = service.spreadsheets().values().batchUpdate(
    spreadsheetId=spreadsheet_id, body=body).execute() 

Der Körper des batchupdate Anfrage sein muss ein BatchUpdateValuesRequest Objekt, das eine ValueInputOption und eine Liste von ValueRange Objekten enthält (eines für jedes wri tten Bereich). Jedes ValueRange-Objekt gibt seine eigenen range, und die Daten zur Eingabe an.

Hoffe das hilft.

1

Sie könnten auch versuchen, eine "intuitivere" Bibliothek, die ich für Google Sheets API v4, pygsheets geschrieben habe, da ich das Standard-Client-Bit umständlich fand.

import pygsheets 
gc = pygsheets.authorize() 

# Open spreadsheet 
sh = gc.open('my new ssheet') 

# create a worksheet  
sh.add_worksheet("new sheet",rows=50,cols=60) 

# update data with 2d vector 
sh.update_cells('A1:B10', values) 

# or skip let it infer range from size of values 
sh.update_cells('A1', values) 
Verwandte Themen