【问题标题】:How do I convert/import excel file as a new worksheet with the Google Drive/Spreadsheet API?如何使用 Google Drive/Spreadsheet API 将 excel 文件转换/导入为新工作表?
【发布时间】:2013-11-29 17:13:34
【问题描述】:

我在 Google 云端硬盘上有一个 Google 电子表格文件。 Google Drive Web 可以上传 Excel 文件并将其作为新工作表导入现有文件。

我想通过使用 Google Drive 或 Google Spreadsheet API 来做同样的事情,但我没有找到如何使用 API 文档来做到这一点。

我知道如何上传 Excel 文件并使用 google_drive gem 将其转换为 Google 电子表格,但是如何将两个电子表格合并为一个?

UPD:如果有人会寻找这个问题的答案 我按照@eddyparkinson 的建议创建了 Google-Apps-Script

// Script-as-app template.
function doGet(e) {
  if (typeof e.parameter.src === 'undefined' || !e.parameter.dst === 'undefined') {
    return result({ status: 404, message: 'src or dst parameter is not defined. Use next format: ?src=key&dst=key[&src_sheet=0 or sheet name]' });
  }

  Logger.log('src is "%s", dst is "%s"', e.parameter.src, e.parameter.dst);

  var source = SpreadsheetApp.openById(e.parameter.src);
  if (typeof source === 'undefined') {
    return result({ status: 404, message: 'The source spreadsheet (key: "'+ e.parameter.src +'") has not been found.' });
  }

  var destination = SpreadsheetApp.openById(e.parameter.dst);
  if (typeof destination === 'undefined') {
    return result({ status: 404, message: 'The destination spreadsheet (key: "'+ e.parameter.dst +'") has not been found.' });
  }

  var sourceSheet;
  if (typeof e.parameter.src_sheet !== 'undefined') {
    Logger.log('src_sheet is "%s"', e.parameter.src_sheet);

    var sheetIndex = parseInt(e.parameter.src_sheet);
    Logger.log('sheetIndex is %s', sheetIndex);

    if (isNaN(sheetIndex)) {
      Logger.log('getSheetByName');      
      sourceSheet = source.getSheetByName(e.parameter.src_sheet);
      if (typeof sourceSheet === 'undefined') {
         return result({ status: 404, message: 'The src_sheet name is not exist in the source spreadsheet.' });
      }
    }
    else {
      var sheets = source.getSheets()
      if (sheetIndex >= sheets.length) {
        return result({ status: 404, message: 'The src_sheet index is out of range of sheets.' });
      }
      sourceSheet = sheets[sheetIndex];
    }
  }
  else {
    sourceSheet = source.getSheets()[0];
  }  

  sourceSheet.copyTo(destination);  

  return result({ status: 200 });
}

var resultData;
function result(value) {
  resultData = value;  
  return HtmlService.createTemplateFromFile('status').evaluate();
}

我在哪里等待电子表格的 src 和 dst 键。

在 ruby​​ 中,我使用 google_drive gem 上传文件并调用 Google App Scripts

  def self.upload_to_google_drive()
    session = GoogleDrive.login('email', 'password')
    f1 = session.upload_from_file('parsed/xlsx/#CAR06022540.xlsx', "#CAR06022540")
    f2 = session.upload_from_file('parsed/xlsx/#CAR06031629.xlsx', "#CAR06031629")
    url = "https://script.google.com/macros/s/AKfycbzOeZJ4LuvBxFqyi1WDpzNiKbhkjp33D9yWTOTLlq3g56sCqJ_e/exec?src=#{f1.key}&dst=#{f2.key}"
    # call Google-apps-script 
    result = session.request(:get, url)
    puts result
  end

【问题讨论】:

  • “要求代码的问题必须证明对正在解决的问题有最低限度的了解。包括尝试过的解决方案、为什么它们不起作用以及预期的结果。另请参阅:Stack Overflow question checklist。”跨度>

标签: ruby excel google-drive-api google-spreadsheet-api


【解决方案1】:

复制到另一个电子表格选项:

1) Google-apps-script 将复制它: https://developers.google.com/apps-script/reference/spreadsheet/sheet#copyTo(Spreadsheet)

2) google-spreadsheet-api 的唯一选择似乎是手动复制。所以,加载 您要复制的工作表,并在电子表格中创建新工作表 保存复制的值。即文档https://developers.google.com/google-apps/spreadsheets/ 或示例中没有任何内容(ListDemo.java 或http://gdata-java-client.googlecode.com/svn-history/r51/trunk/java/sample/spreadsheet/cell/CellDemo.java) 这将为您完成副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2022-01-13
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多