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

问题描述 投票:1回答:1

我在Google驱动器中保存了一个Excel文件(.xlsx)。我想将数据从那里复制到我已经创建的Google工作表文件的标签中。我有下面的代码运行。但是我不知道如何确切地指定要粘贴Excel数据的Google表格(和标签)?

``

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());
  }

}
excel google-apps-script
1个回答
0
投票
  • 您要将“ .xlsx”文件的值复制到现有的Google Spreadsheet。
  • 您的Google云端硬盘中有“ .xlsx”文件。
  • 您想使用Google Apps脚本来实现。

如果我的理解是正确的,那么这个答案怎么样?请认为这只是几个可能的答案之一。

修改点:

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

修改的脚本:

修改脚本后,请进行以下修改。在运行脚本之前,请设置变量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
});
至:
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);

注意:

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

参考:

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

© www.soinside.com 2019 - 2024. All rights reserved.