如何将数据从我的谷歌驱动器中的 xlsx 文件复制到谷歌表?

use*_*336 1 excel google-apps-script

我的谷歌驱动器上保存了一个 excel 文件 (.xlsx)。我想将数据从那里复制到我已经创建的谷歌表格文件中的一个选项卡中。我有以下运行的代码。但我不知道如何指定 Google 表格(和标签)来粘贴 excel 数据?

``

function run() {
  try {

    fileName = fileName || "G:\Shared drives\ExchangeData\DailyVolumes.xlsx";

    var excelFile = DriveApp.getFilesByName(fileName).next();
    var fileId = excelFile.getId();
    var folderId = Drive.Files.get(fileId).parents[0].id;  
    var blob = excelFile.getBlob();
    var resource = {
      title: excelFile.getName().replace(/.xlsx?/, ""),
      key: fileId
    };
    Drive.Files.insert(resource, blob, {
      convert: true
    });

  } catch (f) {
    Logger.log(f.toString());
  }

}
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 5

  • 您想将“.xlsx”文件的值复制到现有的 Google 电子表格中。
  • 您的 Google 云端硬盘中有“.xlsx”文件。
  • 您想使用 Google Apps 脚本来实现这一点。

如果我的理解是正确的,这个答案怎么样?请将此视为几种可能的答案之一。

改装要点:

  • 为了从从“.xlsx”文件转换而来的 Google 电子表格中检索值,它使用从 .xlsx 文件返回的文件 ID Drive.Files.insert()
  • 在您的脚本中,需要声明从“.xlsx”文件复制值并使用它的目标 Google 电子表格。

修改后的脚本:

当您的脚本被修改时,请进行如下修改。在你运行该脚本,请设定的变量destSpreadsheetIddestSheetName

从:
fileName = fileName || "G:\Shared drives\ExchangeData\DailyVolumes.xlsx";

var excelFile = DriveApp.getFilesByName(fileName).next();
var fileId = excelFile.getId();
var folderId = Drive.Files.get(fileId).parents[0].id;  
var blob = excelFile.getBlob();
var resource = {
  title: excelFile.getName().replace(/.xlsx?/, ""),
  key: fileId
};
Drive.Files.insert(resource, blob, {
  convert: true
});
Run Code Online (Sandbox Code Playgroud) 到:
var destSpreadsheetId = "###";  // Added
var destSheetName = "###";  // Added

fileName = fileName || "G:\Shared drives\ExchangeData\DailyVolumes.xlsx";
var excelFile = DriveApp.getFilesByName(fileName).next();
var fileId = excelFile.getId();
// var folderId = Drive.Files.get(fileId).parents[0].id; // This is not used in your script.
var blob = excelFile.getBlob();
var resource = {title: excelFile.getName().replace(/.xlsx?/, "")};  // Modified
var sourceSpreadsheet = Drive.Files.insert(resource, blob, {convert: true});  // Modified

// Also I added below script.
var sourceSheet = SpreadsheetApp.openById(sourceSpreadsheet.id).getSheets()[0];
var destSheet = SpreadsheetApp.openById(destSpreadsheetId).getSheetByName(destSheetName);
var values = sourceSheet.getDataRange().getValues();
destSheet.getRange(destSheet.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 在您的问题中,我不确定“.xlsx”文件是否有多个工作表以及您想要放置值的范围。因此,在此修改中,作为示例,已转换电子表格中第一个选项卡的值将复制到目标电子表格中的最后一行。
  • 在这个修改后的脚本中,假设您已经在高级 Google 服务中启用了 Drive API。

参考:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。