【问题标题】:Google Data API Query谷歌数据 API 查询
【发布时间】:2017-04-10 16:56:28
【问题描述】:

我使用查询 https://www.googleapis.com/drive/v3/files/FileID/export?mimeType=text/tab-separated-values 下载 Google 表格。我的工作表中有不同的选项卡。有没有办法可以下载工作表中的所有选项卡或具有名称的特定工作表?提前致谢。

【问题讨论】:

    标签: ssis google-api google-sheets-api google-data-api


    【解决方案1】:

    基于此link,您可以使用gID 下载特定工作表。每个工作表都有一个gID,您可以在电子表格的 URL 中找到特定工作表的gID。您可以使用此链接下载特定工作表https://docs.google.com/spreadsheets/d/<KEY>/export?format=xlsx&gid=<GID>

    例子:

    https://docs.google.com/spreadsheets/d/1D5vzPaOJOx402RAEF41235qQTOs28_M51ee5glzPzj0/export?format=xlsx&gid=1990092150

    KEY 是电子表格的唯一 ID。

    您也可以参考此thread,了解如何使用 Google Apps 脚本将电子表格中的工作表导出到 Google Apps 中的 csv。

    找不到任何内置方法,所以 I wrote a script 在 Google 表格中使用

    只需将其粘贴到脚本编辑器中并运行

    function onOpen() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var csvMenuEntries = [{name: "export as csv files", functionName: "saveAsCSV"}];
      ss.addMenu("csv", csvMenuEntries);
    };
     
    function saveAsCSV() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheets = ss.getSheets();
    
      // create a folder from the name of the spreadsheet
      var folder = DocsList.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') +'_csv_' + new Date().getTime());
      for (var i = 0 ; i < sheets.length ; i++) {
        var sheet = sheets[i];
        // append ".csv" extension to the sheet name
        fileName = sheet.getName() + ".csv";
        // convert all available sheet data to csv format
        var csvFile = convertRangeToCsvFile_(fileName, sheet);
        // create a file in the Docs List with the given name and the csv data
        folder.createFile(fileName, csvFile);
      }
      Browser.msgBox('Files are waitig in a folder named ' + folder.getName());
    }
     
    function convertRangeToCsvFile_(csvFileName, sheet) {
      // get available data range in the spreadsheet
      var activeRange = sheet.getDataRange();
      try {
        var data = activeRange.getValues();
        var csvFile = undefined;
     
        // loop through the data in the range and build a string with the csv data
        if (data.length > 1) {
          var csv = "";
          for (var row = 0; row < data.length; row++) {
            for (var col = 0; col < data[row].length; col++) {
              if (data[row][col].toString().indexOf(",") != -1) {
                data[row][col] = "\"" + data[row][col] + "\"";
              }
            }
     
            // join each row's columns
            // add a carriage return to end of each row, except for the last one
            if (row < data.length-1) {
              csv += data[row].join(",") + "\r\n";
            }
            else {
              csv += data[row];
            }
          }
          csvFile = csv;
        }
        return csvFile;
      }
      catch(err) {
        Logger.log(err);
        Browser.msgBox(err);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-25
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      相关资源
      最近更新 更多