文件交换
20下载
更新2017年9月21日
从GitHub
查看许可GitHub
一起使用这个GetGoogleSpreadsheet从文件交换,你可以读/写从MATLAB谷歌表。灵感来自一个年长组函数(Matlab谷歌电子表格),不再使用谷歌的新v4 API。- - -状态= mat2sheets (spreadsheetID sheetID sheetpos, d)%这个函数将值从一个数组或单元阵列和地点%谷歌电子表格。它需要的一次性使用RunOnce(见下文)%的语法:状态= mat2sheets (spreadsheetID, sheetID pos d)%%参数:% spreadsheetID:(字符串),从你的谷歌表的URL标识符% sheetID:(字符串),另一个identier URL% pos: 1 x2数组与指数(sheetrow, sheetcolumn)%开始粘贴数据% d:数组或单元阵列的数据粘贴到表。如果% [],pos表明行或范围的行(开始停止)%删除%%的回报:状态(0 =失败,1 =成功)%%的例子:使用以下URL: %的表%https://docs.google.com/spreadsheets/d/1GPd-vBsX5VUejz5hrxE/edit gid = 552%%的电话可能看起来像:% mat2sheets (1 gpd-vbsx5vuejz5hrxe ', ' 552 ', 3 [2], [1 2 3 4 5])%%将值1,2,3,4,5进入细胞C2, D2, E2, F2,分别G2%%删除行(年代)% mat2sheets (1 gpd-vbsx5vuejz5hrxe ', ' 552 ', 2,[]) %删除第2行% mat2sheets (“1 gpd-vbsx5vuejz5hrxe”、“552”, 10[2],[]) %删除行2 - 10包容性%使用RunOnce () %。%在使用这段代码之前,你必须使驱动器/床单api通过:%https://console.developers.google.com/%这里,你将“创建凭证”,通过OAuth 2.0客户机ID%客户ID和客户的秘密。这些代码的两个参数% RunOnce (client_id, client_secret)。与这两种RunOnce运行%代码作为字符串传递,并遵循指令。%%以下代码是启发,利用的代码%最初发表在文件交换Claudiu Giurumescu。% (//www.tatmou.com/matlabcentral/fileexchange/31221-matlab-to-google-spreadsheets)%%我写这容纳最近Google API的变化,增加了一些%的评论,和简化,以便它可以实现的%普通用户(希望!)%%此外,我使用loadjson千千方读取输入流%来自谷歌学习的元数据表% (//www.tatmou.com/matlabcentral/fileexchange/33381-jsonlab--a-toolbox-to-encode-decode-json-files)%%安德鲁·罗伯特bogaard 2016年9月26日%更新2017年7月25日(删除行)% abogaard@uw.edu
安德鲁Bogaard (2021)。Matlab谷歌表(matlab2sheets)GitHub (https://github.com/abogaard/matlab2gsheets)。检索2021年7月1日。
2021年4月3
我跟着这些步骤但当运行RunOnce我有以下错误:“错误使用保存google_tokens无法写文件。垫:拒绝访问。错误RunOnce(22)行保存(google_tokens。席”、“client_id”、“client_secret”、“aSheets”、“rSheets”、“tSheets”);”作为一个建议,确保google_tokens Matlab建议我。垫在MATLAB的路径。我想知道如何解决。
2020年12月9日
伟大的工作截至2020年12月,和google_tokens做一些重命名的文件,我能够得到一个脚本,它使用这个函数和google drive上传功能顺利地。然而,我想知道我可以禁用这个函数数据覆盖。我不希望mat2sheets函数覆盖细胞已经在他们在google的数据表。
2020年9月22日
我跟着Readme文件的指示,所有事情都很顺利,直到命令的执行:con.getResponseCode在mat2sheets因数()。我得到以下错误:
Java异常发生:java.net.ConnectException:连接超时:联系了java.net.DualStackPlainSocketImpl.connect0(本机方法)java.net.DualStackPlainSocketImpl.socketConnect(未知源)java.net.AbstractPlainSocketImpl.doConnect(未知源)java.net.AbstractPlainSocketImpl.connectToAddress(未知源)java.net.AbstractPlainSocketImpl.connect(未知源)java.net.PlainSocketImpl.connect(未知源)java.net.SocksSocketImpl.connect(未知源)java.net.Socket.connect(未知源)在sun.security.ssl.SSLSocketImpl。连接(未知来源)在sun.security.ssl.BaseSSLSocketImpl。连接(未知来源)sun.net.NetworkClient.doConnect(未知源)在sun.net上。www.http.HttpClient.openServer(未知源)在sun.net上。www.http.HttpClient.openServer(未知源)在sun.net上。www.protocol.https.HttpsClient。< init >(未知源)在sun.net上。www.protocol.https.HttpsClient.New(未知源)在sun.net上。www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(未知源)在sun.net上。www.protocol.http.HttpURLConnection.plainConnect(未知源)在sun.net上。www.protocol.https.AbstractDelegateHttpsURLConnection.connect(未知源)在sun.net上。www.protocol.http.HttpURLConnection.getInputStream(未知源)java.net.HttpURLConnection.getResponseCode(未知源)在sun.net上。www.protocol.https.HttpsURLConnectionImpl.getResponseCode(未知源)
你能帮ti修复它吗?
2020年9月21日
这是壮观的。真正的问题,试图写一张——Excel,开放的办公室,或谷歌,真的不在乎——而不是击败格式化。Mathworks说writecell()能够在2020 b但是有各种原因(临时)不方便。这似乎绕过所有,因为最终我们希望它在谷歌,而不是当地的电子表格。
3 2020年7月
这对我来说太棒了!是2020年7月。必须在105个不同的表,这使得过程更快。确保如果你阅读单元阵列,单元阵列不能有一个细胞数组里面,即使是1 x1单元阵列。变量选项卡在MATLAB不显示,这对我来说是一个单元阵列,只是看起来像一个字符串。
2020年4月21日
当我试着删除行它失败。错误消息“失败的尝试删除行。最后一个反应是:400 /错误请求“然而在输出数值数据没有问题。我怎么能修复它吗?
2020年4月8日
是2020年4月!成功写表。非常感谢创造。未来的用户请注意:使用前,需要RunOnce凭证从谷歌RunOnce文档中描述。
2019年1月4
最终我获得了客户秘密,但是当我试着RunOnce,我收到以下错误错误:urlread:方法必须“获得”或“后”错误:从RunOnce > getAccessToken行26列17RunOnce行18列26
2019年1月3
也许Console.Developers.Google.com改变了一点点,我不能够遵循ReadMe的指导方针。PDF设置开/床单api。我访问API库后点击谷歌床单和显示,它启用了。然后我点击凭证,我选择创建凭据,并选择OAuth客户机ID。在下一个屏幕上有一个警告,“创建一个OAuth客户机ID,您必须首先同意屏幕上设置一个产品名称”。点击编辑谷歌警告我设定一个范围表,它回答说,需要请求授权什么的程度。我做错了什么吗?很明显我丢失的东西。
2018年12月18日
修复皮埃尔的问题这样做:在第350行(根据pasteSheetData函数),改变:“‘valueInputOption”:“生”、“…来:“‘valueInputOption USER_ENTERED”、“…
撇号是谷歌的函数表格式化文本作为文本而不是数字。更多信息,看看这个:https://developers.google.com/sheets/api/guides/values在写作部分。
2018年11月19日
解决问题非常大的表做以下更改:在“getSheetMetaData”功能改变url:url = ['https://sheets.googleapis.com/v4/spreadsheets/“spreadsheetID”?字段= sheets.properties ');
2018年10月30日
适合我。谢谢安德鲁!一些为他人指出,可能是有用的:我不熟悉“google凭证”的事情。我去了”https://console.developers.google.com/”,必须创建一个项目名称。然后我终于到一个页面,我可以创建一个凭证然后我获得一个客户id和client_secret。我执行RunOnce (client_id, client_secret)和随后的指令显示在Matlab。一切都好。然后我执行”状态= mat2sheets (spreadsheetID sheetID, (3 - 2), d)”和有一个403错误。克里斯的评论后,我回到了”https://console.developers.google.com/表“搜索API和激活Google床单API。然后我再次执行”状态= mat2sheets (spreadsheetID sheetID, (3 - 2), d)”在Matlab和没有任何提示。Matlab是一个循环。在调试模式下运行代码,最后我注意到以下循环发生了什么似乎永远,而变量json_return增长越来越大:虽然~ isempty(左)json_return = [json_return l];l = br.readLine ();结束我怀疑我的谷歌表太大(已经加载的数据init)所以我测试了一个全新的空白谷歌传播表和它立即工作。希望这可以帮助别人。欢呼。
2018年9月11日
你好,
我不真正理解RunOnce函数的使用。在哪里以及如何运行这个功能?
谢谢。
2018年9月3日
谢谢你们所有人的输入和反馈,我非常高兴地看到,代码主要是工作,这是很有帮助的。我一直在忙于一个国际移动今年夏天,和没有时间来跟上请求。我将试着更敏感,现在我解决。
关于大型数据集的缓慢上传时间,我建在请求之间的延迟,因为我发现,谷歌将会出现反弹,如果他们来到太快/无数的请求。这可能是优化通过改变如何上传数据(而不是遍历多个请求,也许我们可以试着上传每个请求更多的数据。
一般来说,我没有大型数据集的时候我写了这段代码。我一度认为存储数据的表,但它太笨重的和有限的,所以我决定,这是更适合的元数据(这就是我如何使用它)。
皮埃尔,我将在未来几周你撇号的问题。
2018年8月25日
特别是如果有大量的条件格式在整个表。
2018年7月25日
感谢这个工具和明确的指示。
2018年3月6日
非常感谢这强大和结构化代码!是也一种读取数据,就像只要跳过输入“d”?似乎没有spreadsheets.values。get请求的定义。
2018年3月5
首先谢谢你很多这种强大的代码。
它让我很受用,除外我没有弄清楚的一件事。我有一个单元阵列包含数字、字符串、日期和超链接。当我运行的代码将整个数组复制到谷歌表:*数字和字符串,它将正常工作。*对日期(如{' 2018/01/01 '})和超链接(如{' =超链接(“something.com”,“链接名”)}),细胞复制到谷歌表,但总有一个撇号之前。例如:单元格的{‘2018/01/01}我要的2018/01/01表(见“代替2018/01/01符号)。这是一个问题尤其是超链接将不会显示正确(' =超链接())。
提前感谢您的帮助。
2018年1月12
你好。这属于约翰的问题(下图),我也遇到过。最有可能的是,Google床单API不支持这个项目。Google Drive API和谷歌床单API必须启用mat2sheets工作。也一定要RunOnce运行,才在“任意键”后你允许访问项目驱动通过谷歌和床单/com/device链接通过用户访问由RunOnce代码提供给您。后点击“允许”Google.com/device,然后返回到您的Matlab命令屏幕上,点击任意键。你应该好然后运行mat2sheets之后。未能在这个序列或使第三方执行RunOnce OAuth访问表将导致错误王约翰了。希望这有助于人可能遇到这个(或希望完全避免那些新的api)。和感谢安德鲁写这有用的代码。
2017年9月20日
匿名信使(谢谢!)也有类似的问题广Ha Vo下面,据我所知,与java和matlab如何构建一个对象在这一步。我已经添加了一个检查这个奇怪的行为,请让我知道如果它修复以下错误:
错误mat2sheets > getSheetMetaData(第369行)sIds (i) = jdat.sheets .properties.sheetId;错误mat2sheets(第73行)[nR,数控,sheetName] = getSheetMetaData (spreadsheetID, sheetID aSheets);%,以确保我们有足够的细胞”
2017年9月17日
你好安德鲁,感谢您的代码,但是我得到了以下错误:不当指数矩阵参考。
错误mat2sheets > getSheetMetaData(第369行)sIds (i) = jdat.sheets .properties.sheetId;
错误mat2sheets(第73行)[nR,数控,sheetName] =getSheetMetaData (spreadsheetID sheetID aSheets);%确保我们有足够的细胞你能给我一些建议吗?
2017年9月13日
如果寻求帮助,请直接给我使用的电子邮件地址代码中提供的头(上图)。如果你的问题可能会影响到其他用户,我将它添加到这里。
你好安德鲁,我有一些问题当我执行。你会给我一个帮助吗?谢谢。错误使用urlreadwrite(56行)无法发布URL。
错误urlread(36行)(年代,地位)= urlreadwrite (mfilename catchErrors, url,变长度输入宗量{:});
错误mat2sheets > refreshAccessToken(第400行)newAccessTokenString = urlread ('https://accounts.google.com/o/oauth2/token”、“职位”,……
错误mat2sheets(55行)aSheets = refreshAccessToken;%更新和获取访问令牌
2017年8月29日
谢谢你的评论如何将数据附加到现有的电子表格通过“getGoogleSPreadsheet”…
有人有经验成功地这样做从公司的Gmail帐户。我能得到功能工作从个人gmail但一直未能找出改变,使其为企业账户工作。
“s = GetGoogleSpreadsheet (spreadsheetid);%得到表格mat2sheets (spreadsheetid sheetid,大小(年代,1)+ 1,1],[1,2,3]);%示例1mat2sheets (spreadsheetid sheetid,大小(年代,1)+ 1,1],{‘一个’,‘2’,‘三’});%例2”
2017年8月8日
给每个人一个更新:我的问题是我没有启用Google床单API, Google Drive API。我认为他们是相同的。虽然我最终找到了我自己,安德鲁在他的反应非常迅速,渴望帮助。
2017年8月7日
让我知道如果我能送你一个捐赠得到解决。walkinglime@gmail.com
我得到这个错误,但是我设置我的所有凭证和一切
没有收集元数据。最后一个反应是:403 /禁止的粘贴数据失败。最后一个反应是:403 /禁止的
2017年6月23日
嗨,安德鲁,互联网工作。我需要去通过一个代理,我认为这可能会产生问题?
2017年6月22日
嗨乔凡尼——道歉如果这听起来像是愚蠢的建议,但你的网络工作正常吗?你遵循文档了吗?我只是测试,所有从这里工作。
如果这些不工作,可能是一些关于您的系统,需要更多的信息。
安德鲁
你好,我遇到的这个问题在执行:任何提示?谢谢
错误使用mat2sheets > getSheetMetaData(第267行)Java异常发生:java.net.UnknownHostException: sheets.googleapis.com
java.net.AbstractPlainSocketImpl.connect(未知源)
java.net.PlainSocketImpl.connect(未知源)
java.net.SocksSocketImpl.connect(未知源)
java.net.Socket.connect(未知源)
在sun.security.ssl.SSLSocketImpl。连接(未知来源)
在sun.security.ssl.BaseSSLSocketImpl。连接(未知来源)
sun.net.NetworkClient.doConnect(未知源)
在sun.net上。www.http.HttpClient.openServer(未知源)
在sun.net上。www.protocol.https.HttpsClient。< init >(未知源)
在sun.net上。www.protocol.https.HttpsClient.New(未知源)
在sun.net。www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(未知源)
在sun.net上。www.protocol.http.HttpURLConnection.plainConnect(未知源)
在sun.net上。www.protocol.https.AbstractDelegateHttpsURLConnection.connect(未知源)
在sun.net上。www.protocol.http.HttpURLConnection.getInputStream(未知源)
java.net.HttpURLConnection.getResponseCode(未知源)
在sun.net上。www.protocol.https.HttpsURLConnectionImpl.getResponseCode(未知源)
错误mat2sheets(53)行[nR,数控,sheetName] = getSheetMetaData (spreadsheetID, sheetID aSheets);%,以确保我们有足够的细胞
2017年5月30日
嗨塞德里克,事情有点忙但我会把这个任务清单。代码是为你工作,我很高兴。安德鲁
你好亨利,谢谢您的反馈!这是我如何实现你想做什么(需要GetGoogleSpreadsheet//www.tatmou.com/matlabcentral/fileexchange/39915-getgooglespreadsheet):spreadsheetid =“XXXX”;spreadsheetid =“XXXX”;sheetid = ' 0 ';s = GetGoogleSpreadsheet (spreadsheetid);%得到表格mat2sheets (spreadsheetid sheetid,大小(年代,1)+ 1,1],[1,2,3]);%示例1mat2sheets (spreadsheetid sheetid,大小(年代,1)+ 1,1],{‘一个’,‘2’,‘三’});%例2
2017年5月23日
安德鲁,你愿意编写一个实用程序,把值从一个特定的细胞?getgooglespreadsheet不正确解析表如果你使用换行字符在一个细胞。
2017年4月12日
2017年2月7日
非常有用!
2017年1月4
我运行RunOnce文件,但是我怎么得到的url表格?
2016年12月5日
谢谢:]
2016年12月1
很多谢谢!它的工作原理!2额外的问题希望你能帮助:1。如何将行数据附加到最后一行吗2。如何读取表?谢谢你!
启发:JSONLab:工具箱编码/解码JSON文件,GetGoogleSpreadsheet
找到宝藏在MATLAB中央,发现社区如何帮助你!
创建脚本代码、输出和格式化文本在一个单一的可执行文件。
学习生活编辑器
选择一个网站翻译内容,看到当地事件和提供。根据你的位置,我们建议您选择:。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。
联系你当地的办公室