最新的 Sheets API 提供了旧版本中没有的功能,即给开发人员编程访问一个 Sheets,就好像你在使用用户界面一样(创建冻结行,执行单元格格式化,调整行/列大小,添加数据透视表,创建图表等) ,但不是像一些数据库,你可以执行搜索并从中获取选定的行。您基本上必须在执行此操作的 API 之上构建一个查询层。一种替代方法是使用支持 类 SQL 查询的 谷歌图表可视化 API 查询语言。你也可以 从工作表内查询本身。请注意,这个功能在 v4 API 之前就已经存在,而 安全模式在2016年8月更新。要了解更多信息,请从 谷歌开发专家检查 我的 G + 再分享到一个完整的报道。
还要注意,Sheets API 主要用于以编程方式访问上述电子表格操作和功能,但要执行 文件级别的 进入,如导入/导出、复制、移动、重命名等,则使用 < strong > Google Drive API 。使用驱动器 API 的例子:
更新2018年7月 : 以上“ ps”不再是真的了。G Suite 开发团队在 Google Cloud NEXT’18上预先发布了一个新的 Google Docs REST API。对进入新 API 的早期访问程序感兴趣的开发人员应该在 https://developers.google.com/docs注册。
2019年2月更新 : 去年7月推出的预览版 Docs API 现在对所有人开放... 阅读 发射台了解更多细节。
更新2019年11月 : 为了使 G Suite 和 GCP API 更加内联,今年早些时候,所有 G Suite 代码示例都部分集成到 GCP 的较新(低级别而非产品) Python 客户端库中。Auth 的实现方式与此类似,但是(目前)需要更多一点的代码来管理令牌存储,这意味着与我们的库管理 storage.json不同,您将使用 pickle(token.pickle或任何您喜欢的名称)来存储它们,或者选择您自己的持久存储形式。对于这里的读者来说,看看 更新的 Python 快速启动示例。
import httplib2
import os
from apiclient import discovery
import oauth2client
from oauth2client import client
from oauth2client import tools
try:
import argparse
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
flags = None
# If modifying these scopes, delete your previously saved credentials
# at ~/.credentials/sheets.googleapis.com-python-quickstart.json
SCOPES = 'https://www.googleapis.com/auth/spreadsheets'
CLIENT_SECRET_FILE = 'client_secret.json'
APPLICATION_NAME = 'Google Sheets API Python Quickstart'
def get_credentials():
"""Gets valid user credentials from storage.
If nothing has been stored, or if the stored credentials are invalid,
the OAuth2 flow is completed to obtain the new credentials.
Returns:
Credentials, the obtained credential.
"""
home_dir = os.path.expanduser('~')
credential_dir = os.path.join(home_dir, '.credentials')
if not os.path.exists(credential_dir):
os.makedirs(credential_dir)
credential_path = os.path.join(credential_dir,
'mail_to_g_app.json')
store = oauth2client.file.Storage(credential_path)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = APPLICATION_NAME
if flags:
credentials = tools.run_flow(flow, store, flags)
else: # Needed only for compatibility with Python 2.6
credentials = tools.run(flow, store)
print('Storing credentials to ' + credential_path)
return credentials
def add_todo():
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
'version=v4')
service = discovery.build('sheets', 'v4', http=http,
discoveryServiceUrl=discoveryUrl)
spreadsheetId = 'PUT YOUR SPREADSHEET ID HERE'
rangeName = 'A1:A'
# https://developers.google.com/sheets/guides/values#appending_values
values = {'values':[['Hello Saturn',],]}
result = service.spreadsheets().values().append(
spreadsheetId=spreadsheetId, range=rangeName,
valueInputOption='RAW',
body=values).execute()
if __name__ == '__main__':
add_todo()
import pygsheets
gc = pygsheets.authorize()
# Open spreadsheet and then workseet
sh = gc.open('my new ssheet')
wks = sh.sheet1
# Update a cell with value (just to let him know values is updated ;) )
wks.update_cell('A1', "Hey yank this numpy array")
# update the sheet with array
wks.update_cells('A2', my_nparray.to_list())
# share the sheet with your friend
sh.share("myFriend@gmail.com")
from sheetfu import Table
spreadsheet = SpreadsheetApp('path/to/secret.json').open_by_id('<insert spreadsheet id here>')
data_range = spreadsheet.get_sheet_by_name('people').get_data_range()
table = Table(data_range, backgrounds=True)
for item in table:
if item.get_field_value('name') == 'foo':
item.set_field_value('surname', 'bar') # this set the surname field value
age = item.get_field_value('age')
item.set_field_value('age', age + 1)
item.set_field_background('age', '#ff0000') # this set the field 'age' to red color
# Every set functions are batched for speed performance.
# To send the batch update of every set requests you made,
# you need to commit the table object as follow.
table.commit()