Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google drive api 为什么谷歌电子表格文档有两种不同的URL格式?_Google Drive Api_Google Sheets_Google Spreadsheet Api - Fatal编程技术网

Google drive api 为什么谷歌电子表格文档有两种不同的URL格式?

Google drive api 为什么谷歌电子表格文档有两种不同的URL格式?,google-drive-api,google-sheets,google-spreadsheet-api,Google Drive Api,Google Sheets,Google Spreadsheet Api,我的应用程序代表授权用户访问私人谷歌电子表格文档。谷歌的API似乎希望开发者在获取特定电子表格的密钥之前,首先请求授权用户提供所有电子表格文档的列表。我想找到一个解决方法,并最终从URL电子表格URL中提取关键参数值,如下所示: https://docs.google.com/spreadsheet/ccc?key={some long key here}&usp=drive\u webgid=0 它非常简单,只需将字符串分解,就可以相当容易地检索键的值,而不需要正则表达式 最近,虽然我不知道最

我的应用程序代表授权用户访问私人谷歌电子表格文档。谷歌的API似乎希望开发者在获取特定电子表格的密钥之前,首先请求授权用户提供所有电子表格文档的列表。我想找到一个解决方法,并最终从URL电子表格URL中提取关键参数值,如下所示:

https://docs.google.com/spreadsheet/ccc?key={some long key here}&usp=drive\u webgid=0

它非常简单,只需将字符串分解,就可以相当容易地检索键的值,而不需要正则表达式

最近,虽然我不知道最近有多少,但我注意到新创建的Google Drive电子表格的URL以以下形式出现:

https://docs.google.com/spreadsheets/d/{此处有一些长键}/editgid=0

我还能够从这个URL字符串中提取密钥,但我只是好奇这两个URL之间的区别:

这两个URL之间的意义是什么。 为什么Google的API强制开发人员首先获取所有可用文档的列表,而开发人员可能只想从Google Drive电子表格文档的直接URL提取一个密钥。
谢谢

您从哪里获取URL?您不应该依赖于特定的URL格式,这些格式可能会发生更改,而且并不可靠。通过在请求中指定fields参数,您应该能够只获取id。请参见旧式样式表 它们仅在线工作,每个电子表格的单元格数量限制在40万个左右

https://docs.google.com/spreadsheets/d/{some long key here}/edit#gid=0
旧式网址

 https://docs.google.com/spreadsheet/ccc?key={some long key here}&usp=drive_web#gid=0
新样式表 2013年12月中旬发布

脱机工作,如果我记得每个电子表格最多有2000000个单元格

https://docs.google.com/spreadsheets/d/{some long key here}/edit#gid=0
电子表格键 我使用Google apps脚本获取密钥,如下所述:
Cloudward通过云代码片段解决了这个问题。这里有两个可能会有所帮助,还有很多其他的方法需要探索

从Google工作表发布简单列表:

按ID发布Google文档:

希望这有帮助


Bob

我正在从web浏览器的地址栏获取URL。我不希望用户必须通过挖掘他们所有的文件来获取单个电子表格的数据。我希望他们只需将URL粘贴到我的应用程序的UI中。看来这是最直接的方法。我的问题是:这两种格式之间的意义是什么?为什么我们必须在检索文档列表后才能获取电子表格数据?如果您使用的是单个电子表格,听起来您可能应该使用appscript和新的附加组件直接连接到电子表格中。我不确定我是否理解你的建议。我知道应用程序脚本是在谷歌的服务器上执行的。是否可以从已授权的桌面应用程序中运行的我的javascript调用应用程序脚本?我可以通过某种类型的API端点进行调用吗?我不知道您想要实现什么,所以很难说什么是正确的解决方案。正如我所说的,您不应该依赖于特定的URL格式,因此这些格式可能会更改,恕不另行通知。如果你不在乎你的应用程序在发生变化时会被随机破坏,那就试试吧。更好的选择包括:使用其中一个提供的文件选择器让用户选择文件,使用列表功能为用户提供一些选择,使用appscript在电子表格应用程序中集成菜单。谢谢,我将研究更改我的应用程序的UI,以便用户搜索以选择文档,而不是将URL粘贴到字段中。感谢您澄清这两个URL的含义。在您引用的SO线程的答案中,作者正在使用代码创建一个新文档,因此当然可以检索id。然而,如果你所拥有的只是URL本身呢?显然没有从URL中提取密钥的最佳实践?我在我的应用程序中使用普通的javascript。另一种方法是列出所有用户的电子表格。按名称列出电子表格。。。。但是我同意Cheryl Simon的观点,从URL中提取ID是一个混乱的黑客行为,很难作为一个解决方案来维护。是的,我最终实现了它,但现在在检索工作表时遇到了一个问题。当我请求获取工作表时,Google的API会告诉我该文件已经被删除,即使它没有被删除。显然这是一个已知的问题?以下是我在实施Cheryl方法后提出的一个问题: