有没有办法从Julia的google drive下载excel文件(包含多张工作表)?

有没有办法从Julia的google drive下载excel文件(包含多张工作表)?,julia,xlsx,Julia,Xlsx,我曾尝试使用“GoogleDrive”库中的google_下载(“URL”、“本地_路径”),但它似乎只得到csv格式的第一张表单 有什么线索吗?看起来Google Drive.jl只是在做一些url操作 谷歌表单API 如果你想做更多的事情,你需要实际使用Google Sheet的API 通过获取电子表格id(在电子表格的URL中找到),响应包含电子表格中所有工作表的id { "spreadsheetId": string, "properties&

我曾尝试使用“GoogleDrive”库中的google_下载(“URL”、“本地_路径”),但它似乎只得到csv格式的第一张表单


有什么线索吗?

看起来Google Drive.jl只是在做一些url操作

谷歌表单API 如果你想做更多的事情,你需要实际使用Google Sheet的API

通过获取电子表格id(在电子表格的URL中找到),响应包含电子表格中所有工作表的id

{
  "spreadsheetId": string,
  "properties": {
    object (SpreadsheetProperties)
  },
  "sheets": [
    {
      object (Sheet)
    }
  ],
  "namedRanges": [
    {
      object (NamedRange)
    }
  ],
  "spreadsheetUrl": string,
  "developerMetadata": [
    {
      object (DeveloperMetadata)
    }
  ]
}
然后,您可以取出这些工作表id并对其进行处理,例如使用csv格式对每个工作表进行导出请求

手动为每张图纸绘制
gid
如果您不想使用API,只需在单击每个ID时将这些ID从浏览器URL中复制出来,就可以将它们转换为下载链接

要让他们正确地通过导出链接,您需要将gid传递到导出url中,如下所示:

(这是对GoogleDrive.sheet_处理程序的稍加修改的版本,它接受了工作表gid)

因此,对于我的示例测试表,我有三张带有以下GID的测试表

  • 表1,gid=0
  • 表2,gid=972467363
  • 表3,gid=1251741166
所以为了抓住第三个,我做了如下:

DataDeps.fetch_http(sheet_handler(url; format=:csv, sheet_gid=1251741166), ".")
以下是运行示例:

julia> using GoogleDrive

julia> using GoogleDrive.DataDeps

julia> url = read("link.txt", String)
"https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/edit?usp=sharing"

julia> DataDeps.fetch_http(sheet_handler(url; format=:csv, sheet_gid=1251741166), ".")
┌ Info: Downloading
│   source = "https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/export?format=csv&gid=1251741166"
│   dest = "./export?format=csv&gid=1251741166"
│   progress = NaN
│   time_taken = "0.0 s"
│   time_remaining = "NaN s"
│   average_speed = "∞ B/s"
│   downloaded = "404 bytes"
│   remaining = "∞ B"
└   total = "∞ B"
┌ Info: Downloading
│   source = "https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/export?format=csv&gid=1251741166"
│   dest = "./download-test-julia-Sheet3.csv"
│   progress = NaN
│   time_taken = "0.0 s"
│   time_remaining = "NaN s"
│   average_speed = "7.324 KiB/s"
│   downloaded = "15 bytes"
│   remaining = "∞ B"
└   total = "∞ B"
"./download-test-julia-Sheet3.csv"

shell> cat download-test-julia-Sheet3.csv
Data on Sheet 3
以包含所有工作表的格式下载 如果以支持多张工作表的格式使用
sheet\u处理程序
调用和传递,则可以在本地解析和操作输出。例如使用
xlsx
。我刚才没有试过,但电话可能是这样的:

DataDeps.fetch_http(sheet_handler(url; format=:xlsx), ".")

然后找到你最喜欢的Julia Excel库,你就可以开始比赛了。

它看起来像是Google Drive的精髓。jl只是在做一些url操作

谷歌表单API 如果你想做更多的事情,你需要实际使用Google Sheet的API

通过获取电子表格id(在电子表格的URL中找到),响应包含电子表格中所有工作表的id

{
  "spreadsheetId": string,
  "properties": {
    object (SpreadsheetProperties)
  },
  "sheets": [
    {
      object (Sheet)
    }
  ],
  "namedRanges": [
    {
      object (NamedRange)
    }
  ],
  "spreadsheetUrl": string,
  "developerMetadata": [
    {
      object (DeveloperMetadata)
    }
  ]
}
然后,您可以取出这些工作表id并对其进行处理,例如使用csv格式对每个工作表进行导出请求

手动为每张图纸绘制
gid
如果您不想使用API,只需在单击每个ID时将这些ID从浏览器URL中复制出来,就可以将它们转换为下载链接

要让他们正确地通过导出链接,您需要将gid传递到导出url中,如下所示:

(这是对GoogleDrive.sheet_处理程序的稍加修改的版本,它接受了工作表gid)

因此,对于我的示例测试表,我有三张带有以下GID的测试表

  • 表1,gid=0
  • 表2,gid=972467363
  • 表3,gid=1251741166
所以为了抓住第三个,我做了如下:

DataDeps.fetch_http(sheet_handler(url; format=:csv, sheet_gid=1251741166), ".")
以下是运行示例:

julia> using GoogleDrive

julia> using GoogleDrive.DataDeps

julia> url = read("link.txt", String)
"https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/edit?usp=sharing"

julia> DataDeps.fetch_http(sheet_handler(url; format=:csv, sheet_gid=1251741166), ".")
┌ Info: Downloading
│   source = "https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/export?format=csv&gid=1251741166"
│   dest = "./export?format=csv&gid=1251741166"
│   progress = NaN
│   time_taken = "0.0 s"
│   time_remaining = "NaN s"
│   average_speed = "∞ B/s"
│   downloaded = "404 bytes"
│   remaining = "∞ B"
└   total = "∞ B"
┌ Info: Downloading
│   source = "https://docs.google.com/spreadsheets/d/13-LtgMi8evaxGxUTwlZZ_lqmr8Epcqt1ZSPUszqWhW4/export?format=csv&gid=1251741166"
│   dest = "./download-test-julia-Sheet3.csv"
│   progress = NaN
│   time_taken = "0.0 s"
│   time_remaining = "NaN s"
│   average_speed = "7.324 KiB/s"
│   downloaded = "15 bytes"
│   remaining = "∞ B"
└   total = "∞ B"
"./download-test-julia-Sheet3.csv"

shell> cat download-test-julia-Sheet3.csv
Data on Sheet 3
以包含所有工作表的格式下载 如果以支持多张工作表的格式使用
sheet\u处理程序
调用和传递,则可以在本地解析和操作输出。例如使用
xlsx
。我刚才没有试过,但电话可能是这样的:

DataDeps.fetch_http(sheet_handler(url; format=:xlsx), ".")

然后找到你最喜欢的Julia Excel库,你就可以开始比赛了。

你需要提供你试图使用的源代码。我写了一个很长的答案,但您可能只想将格式指定为xlsx,然后从本地xlsx文件分别导出每张图纸。您需要提供您尝试使用的源代码。我写了一个很长的答案,但您可能只想将格式指定为xlsx,然后从本地xlsx文件分别导出每张图纸。