结果= GetGoogleSpreadsheet (DOCID)
[DOCID]类似于'0AmQ013fj5234gSXFAWLK1REgwRW02hsd3c'的值,可以在电子表格的url中找到:这里https://docs.google.com/spreadsheets/d/ < > /编辑# gid = 0.
在电子表格中的值的单元格数组
重要提示:电子表格必须与“任何有链接的人”选项共享。
这没有错误处理,也没有经过广泛的测试。
请在下面的评论中报告问题。
感谢@MarkTomaszewski和@Constantine注意到更新的url格式(上面的描述已经更新以反映这一点)。
丹尼尔(2021)。GetGoogleSpreadsheet(//www.tatmou.com/matlabcentral/fileexchange/39915-getgooglespreadsheet), MATLAB中央文件交换。检索.
这是可行的,但你可以直接使用API下载:
https://docs.google.com/spreadsheets/d/ {{ID}} / gviz / tq ? tqx =: csv&sheet = {{sheet_name}}
url_name = sprintf ('https://docs.google.com/spreadsheets/d/%s/gviz/tq?tqx=out:csv&sheet=%s”,……
ID, sheet_name);
sheet_data = webread (url_name);
你好,我有一个组织的谷歌电子表格。没有办法读吗?谢谢
这在windows和mac上工作得很好,但在Linux上一直在第27行得到一个429错误……有人看到并修复了吗?
^^^如果工作表的单元格有空值,它中断,还不确定如何修复它
我将永远珍惜这个函数
如果你只有数字数据,想把它输出成矩形矩阵。将这段代码插入第34行之后!
Result = cellfun(@str2num, Result);
警告!只适用于数值数据
伟大的功能,谢谢!顺便说一下,我注意到如果一个文本行有换行符,它会被读成多行到MATLAB中。
请注意下面关于如何访问单个表格/选项卡的评论。
2020年4月工作。谢谢你创造了这个!如果在谷歌表上没有设置权限,只产生结果而不产生数据。似乎只工作单电子表格/从第一个表格拉数据。有没有从其他表格中提取数据的方法?一种方法是在谷歌工作表中设置要处理第一个工作表的工作表,但如果需要来自多个工作表的数据,则需要在每次读取操作之前重新安排谷歌工作表中的工作表。
重要注意:您必须设置谷歌表单文档的权限,以便每个拥有链接的人都可以打开它
谢谢你。
工作https://docs.google.com/spreadsheets/d/NUMBEROFDOC/htmlview?sle=true
这最近对我不起作用了——我得到了HTML。为了解决这个问题,我发现谷歌在高级共享中添加了一个复选框,效果是“禁止公共下载”。一旦我不检查这个,它又起作用了。
史蒂夫的解决方案几乎奏效了。试试这个:
data = parseCsv(data)
%将数据分割成单独的行
data =分裂(数据、sprintf (' \ r \ n '));%关闭阀2017-12-15
% data = textscan(data,'%s','空格','\n');%这在一般情况下不起作用:不能处理单元格中有单个\n或\r的数据
如果为空(data{end}), %修剪任何空的最后一行% SDV 2017-12-15
=数据(1:end-1);
结束;
数据=数据。';
2 = 1:长度(数据)
%为每一行,将字符串分割成以逗号分隔的单元
'%q'格式适当地处理"引号"约定。
{二}tmp = textscan(数据,“% q”,“分隔符”,',');
数据(2,1:长度(tmp {1})) = tmp {1};
结束
结束
直接从盒子里拿出来。对实际问题的一个很好的解决方案。
它工作得很好,但是,我的电子表格中的中文单词导入单元格数组不正确……
很有魅力。
如果你想要一个特定的表单,我在Daniel的文件中找到了这个编辑:
csvURL = ['https://docs.google.com/spreadsheet/ccc?key=' DOCID '&gid=' GID '&output=csv&pref=2'];
其中,可以在特定工作表的谷歌电子表格url中找到GID,并将其作为额外参数传递给函数。
我不想评价这个应用程序,然而,我不知道如何撤消这。所以我给其他用户打了5颗星:)
我有一个错误,意外的matlab表达式在第1行
它不能读取我的DOCID是= '1FysI4O-MLyE0dETK5LU-e_L4axfOXeQj5OwhQzkagmo'
有什么紧急的帮助吗?
哦。每一个想法。没有分享医生!愚蠢的wabbit)。
感谢尼古拉斯的推荐。出于某些原因,我无法在Mac上解压,只能在PC上解压。不知道为什么会这样……我能够运行程序,但现在混淆了输出。我对电子表格使用result = GetGoogleSpreadsheet(DOCID)命令,该电子表格的单元格中只包含数值。不是每个单元格都包含值。然而,我得到的返回是空单元格(显示为[]),除了第一列给出的是HTML代码的字符返回,第一行(result{1,1})是。我如何得到我的数值,如果我想看到沿着行第三列的值范围是2:10。我本以为它会是结果{2:10,3},但得到的只是每个单元格[],即使我在电子表格中有值。我哪里做错了? Thanks,
@hxen,尝试安装第三方存档工具,我强烈推荐“Unarchiver”。我能够解压缩' getgooglespreaddress .zip'与那个实用程序没有问题。
theunarchiver。com
嗯…我无法解压缩这个下载。我用的是Mac电脑,已经下载了好几次了。上面写着:“无法将‘getgoogleeshreadsheet .zip’解释为‘Downloads’。(错误1 -不允许操作。)还有人遇到过这个问题吗?
有一个小问题。在当前版本中,如果谷歌工作表单元格内的文本包含新行,那么它们将被解释为CSV描述电子表格的新行。
修复方法是将内部函数parseCsv替换为:
data = parseCsv(data)
%将数据分割成单独的行
data =分裂(数据、sprintf (' \ r \ n '));%关闭阀2017-12-15
% data = textscan(data,'%s','空格','\n');%这在一般情况下不起作用:不能处理单元格中有单个\n或\r的数据
如果为空(data{end}), %修剪任何空的最后一行% SDV 2017-12-15
=数据(1:end-1);
结束;
2 = 1:长度(数据)
%为每一行,将字符串分割成以逗号分隔的单元
'%q'格式适当地处理"引号"约定。
{二}tmp = textscan(数据,“% q”,“分隔符”,',');
数据(2,1:长度(tmp {1})) = tmp {1};
结束
最好的
史蒂夫
真管用!
按要求工作。
我用的是gmail公司账户…脚本将返回HTML和单元格数组,类似于“Timothy OConnor”编写的....
我在我的个人gmail帐户上创建了一个文件,并得到了完美的结果....
有人知道如何从谷歌文件中读取数据吗?
我使这张表“对任何人都可见”,并把“DOCID”信息作为要求。不幸的是,我总是得到以下消息:错误:意外的MATLAB表达式。有人遇到同样的问题并找到了解决方案吗?
蒂莫西,你得让所有有链接的人都能看到这张表。
+1在corp帐户-脚本显示返回HTML在1861x1265单元格数组
作为对我下面评论的回应,Matlab似乎使用它自己的内置浏览器来完成与web相关的任务。我可以用这个浏览器登录谷歌,但当我试图下载链接时,仍然得到html。
如果我使用web(url)手动打开链接,我可以登录谷歌,然后它问我在哪里保存链接,但在选择一个位置后,它似乎进入一个无限的等待循环在浏览器中…
由于某些原因,当我尝试这个时,我得到谷歌登录屏幕的HTML结果。我用Chrome和IE登录谷歌。
我不能让这张表与任何人共享,因为它是谷歌公司账户的一部分,不允许与外界共享。当我用我的默认浏览器登录谷歌时,用其他软件(例如JMP)下载链接没有问题。
有人能解决这个问题吗?
我从哪里得到parseCsv(第36行)?我在matlab上没有这个函数,也不能在网上找到。
@ mpn17
第1行应该是:
function result = GetGoogleSpreadsheet(DOCID, gid)
第20行应该是:
csvURL = ['https://docs.google.com/spreadsheet/ccc?key=' DOCID '&output=csv&pref=2&gid=' gid];
Yau Benor的回复是在第20行代码中有一个错误,在2和&之间有一个错误的空格。参照= 2 gid……”
@ Yau Benor,我尝试了您的更改更改多个表的代码,但没有运气。
试图将第20行更改为以下内容以匹配新的URL格式,但它输出了一个太大而无法读取的594x44192数组。
csvURL = ['https://docs.google.com/spreadsheets/d/' DOCID '/编辑#gid=' gid];
任何帮助都非常感谢!
要允许多个工作表-修改脚本中的第1行和第20行:
1 .查询查询结果
20 csvURL = ['https://docs.google.com/spreadsheet/ccc?key=' DOCID '&output=csv&pref=2 &gid=' gid];
如果它支持使用URL中的“GID”的多表电子表格,那么这将是完美的。金宝app
这个脚本工作得很好,只是注意到在工作表单元格中添加新行会导致对工作表的错误解析。
先生,你彻底改变了我的实验记录
嗨,我花了一段时间才弄明白这个非常有用的脚本,用于从谷歌表传递信息。脚本中的'DOCID'信息并没有提到删除/edit#gid=0和spreadsheets/d之类的东西……你在下面的回答中明确地陈述了什么。如果你能更新脚本中的注释就太好了!谢谢!
感谢一个伟大的脚本工作的好。:-)但是,对于如何存储与单元格文本相关联的超链接有什么想法吗?
@Daniel,
非常感谢!这是完美的工作时,工作表被设置为任何人与链接查看。否则,输出将包含一个很大的html单元格数组。
有没有办法使这工作的床单没有共享设置?
此外,你的描述可能受益于根据以下的编辑…
@Adam,
当我在浏览器中访问我的表单时,我看到一个URL像这样:
https://docs.google.com/spreadsheets/d/ <这里的文本是文档id>/edit#gid=0
希望这可以帮助!
~马克
这看起来非常有用。
任何更新现在谷歌表已经合并好驱动器,不再包含'key='部分(替换为/d/,但仍然不能与此代码工作)?
完美的工作
谢谢你!