自动从外部 Google 云端硬盘中的电子表格下载

Vas*_*ewe 1 c# google-sheets

我有一个 Google 电子表格,放置在外部 Google 云端硬盘中并通过链接分享给我。我可以在仅查看模式下使用它。该电子表格包含许多列表(就像通常的 Excel 一样)。

我想将此电子表格中的每个列表下载为单独的 csv 文件,我可以通过在每个列表中单击“文件”->“下载”->“逗号分隔值”来手动使用它。

现在我想自动化这个过程,但仍然不知道如何去做。

我考虑过 Selenium,但 Google 不支持它。Google API 也没有帮助,因为它不是我的云端硬盘。

你对此有什么想法吗?

谢谢你!

Gan*_*ula 5

您可以使用Google App 脚本工作表保存到 G-Drive 中的 CSV 中。您可以循环浏览特定电子表格中的所有工作表并将它们全部保存为 CSV。

脚步:

  1. 在您的 Google 帐户中创建一个新的电子表格(无论是新的还是现有的)。

  2. 在功能区中,转到“扩展”并单击“应用程序脚本”

  3. 将打开一个新的应用程序脚本窗口,其中包含一个空白code.gs文件和一个空白myFunction函数

  4. 将函数替换为以下代码

  5. ssID将代码更新folder_id为您各自的电子表格和文件夹 ID

  6. 在应用程序脚本编辑器的左侧边栏上,单击+旁边的按钮Services。然后选择Drive API并单击Add

  7. 在应用程序脚本编辑器顶部的功能区中 -sheetToCsv在旁边的下拉列表中选择功能Debug,然后单击Run

  8. 所有工作表都将以 CSV 文件形式保存在 G 驱动器的文件夹中。

    在App脚本编辑器中运行函数

代码

下面是代码(使用仅供查看的工作表进行尝试和测试):

function sheetToCsv()
{
    var ssID = "SpreadsheetID" // SpreadsheetApp.getActiveSpreadsheet().getId();
    var requestData = {"method": "GET", "headers":{"Authorization":"Bearer "+ScriptApp.getOAuthToken()}};
    var sprdSheet = SpreadsheetApp.openById(ssID)
    var allSheets = sprdSheet.getSheets();

    for(var s in allSheets){
    
      var sheet = allSheets[s];
      var sheet_Name = sheet.getName()
      var sheetNameId = sheet.getSheetId().toString();

      params= ssID+"/export?gid="+sheetNameId +"&format=csv"
      var url = "https://docs.google.com/spreadsheets/d/"+ params
      var result = UrlFetchApp.fetch(url, requestData);  
    
      var folder_id ='ID'; // replace this with your respective folder ID
        
      var resource = {
      title: sheet_Name+".csv",
      mimeType: "application/vnd.csv",
      parents: [{ id: folder_id }]
        }

      var fileJson = Drive.Files.insert(resource,result)
    }
  
} 
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 您需要将ssID和更新folder_id为各自的电子表格和文件夹 ID
  2. 您需要启用 Drive API高级服务

尖端:

  1. 使用 Google App Script,您还可以使用触发器。这允许您设置自动运行此代码的频率(如果需要)。因此您甚至不必手动下载 CSV。
  2. 此外,您还可以使用应用程序脚本(使用一些 HTML )创建侧边栏 UI,以便您可以使用相同的代码通过单击按钮来下载任何电子表格,而不是每次都使用应用程序脚本编辑器 -官方文档
  3. 或者,除了侧边栏 UI,您还可以使用该onOpen功能在功能区菜单中创建自定义按钮,以从功能区中运行任何应用程序脚本功能 -就像另一个答案中提到的 mike 一样。此外,您可以使用提示对话框允许代码下载任何工作表。