Abh*_*bhi 68 python google-api google-sheets google-api-python-client google-sheets-api
我想知道你是否可以给我一个使用python阅读/写入谷歌文档/电子表格的例子.
我确实在这里查看了google docs API https://developers.google.com/google-apps/spreadsheets/但不确定我是否点击了正确的链接.另外一个例子将是非常有帮助的.
我想要做的是查询基于不同列的电子表格,更像是SQL查询,然后使用数据进行下游解析,并将其放入google docs中的另一个电子表格或doc.
最好的,-Abhi
wes*_*cpy 103
(2016年6月 - 12月)此处的大多数答案现在已经过时了:1)GData API是上一代Google API,这就是为什么@Josh Brown很难找到旧的GData Docs API文档.虽然不是所有的GData API与已被否决,所有更新的谷歌的API都没有使用谷歌数据协议 ; 2)谷歌发布了新的Google表格API(不是GData).要使用新的API,您需要获取适用于Python的Google API客户端库(它就像pip install -U google-api-python-client[或pip3适用于Python 3] 一样简单)并使用最新的Sheets API v4 +,它比旧的API版本更强大,更灵活.
以下是来自官方文档的一个代码示例,可帮助您快速启动.但是,这里使用您可以学习的API(视频和博客文章)的时间稍长,更"真实"的例子:
最新的Sheets API提供旧版本中不可用的功能,即为开发人员提供对Sheet的编程访问,就像您使用用户界面一样(创建冻结行,执行单元格格式化,调整行/列大小,添加数据透视表,创建图表等) .),但不是好像是某个数据库,你可以执行搜索并从中获取选定的行.您基本上必须在API之上构建一个查询层来执行此操作.另一种方法是使用Google Charts Visualization API查询语言,该语言支持类似SQL的查询.您也可以从工作表本身进行查询.请注意,此功能在v4 API之前存在,并且安全模型已于2016年8月更新.要了解更多信息,请查看我的G +转贴到全写了由谷歌开发者专家.
另请注意,Sheets API主要用于以编程方式访问上述电子表格操作和功能,但要执行文件级访问,例如导入/导出,复制,移动,重命名等,请改用Google Drive API.使用Drive API的示例:
(*) - TL; DR:将纯文本文件上传到云端硬盘,导入/转换为Google文档格式,然后将该文档导出为PDF格式.上面的帖子使用Drive API v2; 这篇后续文章描述了将其迁移到Drive API v3,这里是一个结合了"穷人的转换器"帖子的开发者视频.
要了解有关如何在Python中使用Google API的更多信息,请查看我的博客以及我正在制作的各种Google开发者视频(系列1和系列2).
PS.就Google Docs而言,目前还没有可用的REST API,因此以编程方式访问Doc的唯一方法是使用Google Apps脚本(类似Node.js是浏览器之外的JavaScript,而不是在节点服务器上运行,这些应用程序在Google的云中运行;还可以查看我的介绍视频.)使用Apps脚本,您可以为Docs(以及其他内容,如表格和表格)构建文档应用程序或附加组件.
更新2018年7月:以上"ps".不再是真的.G Suite开发团队在Google Cloud NEXT '18预先宣布了一个新的Google Docs REST API.有兴趣进入新API早期访问计划的开发人员应在https://developers.google.com/docs上注册.
Art*_*r G 55
我发现它非常容易使用,因为你可以检索整个列
first_col = worksheet.col_values(1)
Run Code Online (Sandbox Code Playgroud)
并且整整一个
second_row = worksheet.row_values(2)
Run Code Online (Sandbox Code Playgroud)
你可以或多或少地建立一些基本的选择...,其中... = ...容易.
Jos*_*own 28
我知道这个帖子现在已经老了,但是这里有一些关于Google Docs API的文档.这很难找到,但很有用,所以它可能对你有所帮助.http://pythonhosted.org/gdata/docs/api.html.
我最近使用gspread来绘制员工时间数据的图表.我不知道它对你有多大帮助,但这里是代码的链接:https://github.com/lightcastle/employee-timecards
Gspread让我很轻松.我还能够添加逻辑来检查各种条件,以创建月初至今和年初至今的结果.但是我刚刚导入了整个电子表格并从那里解析了它,所以我不能100%确定它正是你正在寻找的.祝你好运.
Nit*_*hin 10
看看api v4的gspread端口 - pygsheets.它应该非常容易使用而不是谷歌客户端.
示例示例
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")
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档.
作者在这里.
最新的谷歌api文档记录了如何使用python写入电子表格,但导航有点困难.这是一个如何追加的例子的链接.
以下代码是我第一次成功尝试附加到Google电子表格.
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()
Run Code Online (Sandbox Code Playgroud)
Amb*_*ous -2
我认为您正在查看该 API 文档页面中基于单元格的提要部分。然后,您可以在 Python 脚本中使用 PUT/GET 请求,使用commands.getstatusoutput或subprocess。
| 归档时间: |
|
| 查看次数: |
101273 次 |
| 最近记录: |