通过在云中运行的笔记本从谷歌驱动器访问电子表格文件
Posted
技术标签:
【中文标题】通过在云中运行的笔记本从谷歌驱动器访问电子表格文件【英文标题】:Accessing spreadsheet file from google drive through notebook run in the cloud 【发布时间】:2019-11-20 20:30:21 【问题描述】:我正在和一些朋友一起做一个业余项目。我想做的是在 Google Drive(或类似服务)上保存一个电子表格,我和我的朋友会定期更新。我们想要使用 Python 和 Jupyter Notebooks 可视化的电子表格中的数据。我的朋友根本不喜欢编程,所以我希望他们能够访问和运行云中的笔记本,例如通过 mybinder.org。
我从 Google API 完成了凭据,当我在本地运行时它运行良好。然而,问题在于,由于我的理解是我不应该将凭据上传到 GitHub,因此 mybinder.org 无法获得从 Google Drive 读取电子表格所需的凭据。所以我的问题是我该如何解决这个问题?
一个想法是创建一个单独的 Google 帐户,以便将电子表格放在那里。如果我这样做,那么将凭据上传到 GitHub 就可以了吗?电子表格中的数据根本不敏感。
【问题讨论】:
是否同样适用于私人 github 存储库,我知道 github 将其作为服务提供,但我不确定上传到私人存储库是否仍然被认为不是一个好主意 @oppresionslayer。私人仓库不适用于 mybinder.org。见here。 【参考方案1】:您可以通过选择“共享”下的Get shareable link
将文件设置为与拥有链接的人共享,然后使用here 描述的方法将文件带入活动的 Jupyter 会话。 (更多关于使用curl
来做到这一点的是here。)
要将其获取为 CSV,您可以将可共享链接的 URL 末尾从 edit?usp=sharing
更改为 export?exportFormat=csv
,基于 here。
要在 Jupyter 笔记本单元格中执行 curl
,您需要在命令前加上感叹号,以便任务在 shell 中运行。
然后将标准输出定向到文件。
所以结合它,代码单元的一般形式是:
!curl https://docs.google.com/spreadsheets/d/<specific_GUID_key>/export?exportFormat=csv > output.csv
可以将不带感叹号的命令放在start
文件中,这样每次会话启动时都会检索当前数据,而不是运行代码从笔记本单元中检索它。有关与 Binderhubs/MyBinder.org 一起使用的 start
配置文件的更多信息,请参阅 here。
您可能也有兴趣使用Voila 让他们通过由 Jupyter 笔记本支持的仪表板查看可视化。它也可以由 MyBinder.org 支持的会话生成。
【讨论】:
以上是关于通过在云中运行的笔记本从谷歌驱动器访问电子表格文件的主要内容,如果未能解决你的问题,请参考以下文章
用于将数据从谷歌电子表格加载到 bigquery 的独立脚本