【发布时间】:2017-10-14 02:04:06
【问题描述】:
我一直在用以下可爱的难题撞到一堵砖墙上:
重点是无需上传文件,而是通过 URL 将数据从 Excel 获取到 Google 表格。下面简单地解释了所有这些业务是如何发生的:
https://www.youtube.com/watch?v=mX2_XNYPGiI http://ramblings.mcpher.com/Home/excelquirks/exceldocsintegration/excelsheetsv4
我已尝试针对 VBA 方面调整以下代码,这两个示例都通用:
Option Explicit
Sub GetDataFromGoogle()
'link to tutorial: https://www.youtube.com/watch?v=mX2_XNYPGiI
Dim link As String
link = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSes7Jb06JRy8KSFyNlpUSzNQxSB_HZay4S8AB2IqzpZP0QdwGO5PFSS-6uzd8v_GsjlkXM31pby2jE/pubhtml"
Sheet4.QueryTables(1).Connection = "URL;" & link
Sheet4.QueryTables(1).Refresh False
Sheet4.Columns(1).ColumnWidth = 10
End Sub
Sub PushDataToGoogle()
Dim link As String
link = "https://docs.google.com/forms/d/e/1FAIpQLSeDHEKJmRDynwOAS4g53T9AVMtpXQkWsRGbAzLpLI7rdsbiFA/formResponse?entry.1155739640=4&fvv=1&draftResponse=%5B%5B%5Bnull%2C1155739640%2C%5B%224%22%5D%0D%0A%2C0%5D%0D%0A%5D%0D%0A%2Cnull%2C%2276341394568976993%22%5D%0D"
'go to that link, refresh it and ensure that the first column isn't too narrow
sheets("Sheet4").QueryTables(1).Connection = "URL;" & link
sheets("Sheet4").QueryTables(1).Refresh True
sheets("Sheet4").Columns(1).ColumnWidth = 10
End Sub
在 Google 表格方面,我使用表单创建了一个电子表格,它既是 Excel 导入的数据源,也是数据导出的目标。在表单页面的 HTML 中替换 POST 和 GET 是获取目标 URL 的方式。随后,可以对该 URL 进行硬编码或使用变量进行编辑,以获取 URL 的“entry.######”部分的各种输入,然后将它们传递到下一个可用行中的工作表,这将适合我的目的。
我在操作的 oAuth2 部分遇到了障碍。在 Desktop Liberation 站点(上面的第二个链接)上的示例中,凭据是从 Google 创建的,然后插入到验证连接的代码中,然后再传输数据。因此:
Private Function sheetsOnceOff()
getGoogled "sheets", , _
"1023445954023-hq8gkdcmo9sue822d23gy9ak5hmun27.apps.googleusercontent.com", _
"dX7ABCDEGFBETFWtvX5ShmDfrgrQ"
End Function
如果不这样做,前面的代码行将只返回主 Google 登录页面。我已经制作了凭据,确定了电子表格的目标键,但我在 getGoogled 例程中收到错误消息:
运行时错误:'-2147024809 (80070057)':参数不正确。"
参数值如下: - 范围 = 'sheets',应该是 - 替换包 = "" - clientID 没问题 - clientSecret 没问题 - 抱怨 = 真 - cloneFromScope = "" - apikey=""
如果抱怨是真的,我认为替换包不应该是空的,但我觉得我在这里超出了我的深度。至少需要发生的事情的逻辑对我来说是有意义的,而且我已经设法让 Google 表格的转移工作正常,但我只是不确定如何处理 oAuth2 身份验证问题。
提前谢谢你。
【问题讨论】:
标签: excel google-sheets oauth-2.0 google-oauth vba