我需要在给定的Google驱动器文件夹中打开Excel文件并读取其数据。为此,我使用了以下代码。
var folders = DriveApp.getFoldersByName("Test Folder");
var foldersnext = folders.next();
var files = foldersnext.getFiles(); // get all files from folder
while(files.hasNext()) {
var sheets = SpreadsheetApp.openByUrl(files.next().getUrl()); // Line A
}
但是这样会在“ A行”中给出错误;
缺少文档1LDVkBTnkcY32ni9WoGDn6xHonPOX87ZV(也许是 删除,或者您没有读取权限?)
但是当使用记录文件ID时,
var selectedFile = files.next();
Logger.log(selectedFile.getId());
它给了我预期的结果。因此,我认为错误在于将文件转换为excel文件。请给我一个解决方案,以在给定文件夹中打开多个excel文件并读取其数据...
该项目具有以下范围
答案 0 :(得分:1)
如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。
Drive.Files.copy()
从Excel文件转换为Google Spreadsheet。运行脚本时,请按以下说明在高级Google服务中启用Drive API。此修改后的脚本使用了高级Google服务的Drive API。
请按如下所示修改脚本。
从:while(files.hasNext()) {
var sheets = SpreadsheetApp.openByUrl(files.next().getUrl()); // Line A
}
至:
while(files.hasNext()) {
var file = files.next();
if (file.getMimeType() == MimeType.MICROSOFT_EXCEL || file.getMimeType() == MimeType.MICROSOFT_EXCEL_LEGACY) {
var resource = {
title: file.getName(),
parents: [{id: foldersnext.getId()}],
mimeType: MimeType.GOOGLE_SHEETS
};
var spreadsheet = Drive.Files.copy(resource, file.getId());
var sheets = SpreadsheetApp.openById(spreadsheet.id);
}
}
Drive.Files.remove(fileId)
。如果我误解了您的问题,而这不是您想要的结果,我深表歉意。
很遗憾,根据您的评论,我无法理解您的问题。我认为这是由于我的英语水平差。我为此表示歉意。但是从您的评论中发现我的理解是正确的。因此,作为测试用例,您可以测试以下流程吗?
运行以下示例脚本。在运行它之前,请设置文件夹ID。
function sample() {
var folderId = "###"; // Please set the folder ID.
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFiles();
while(files.hasNext()) {
var file = files.next();
if (file.getMimeType() == MimeType.MICROSOFT_EXCEL || file.getMimeType() == MimeType.MICROSOFT_EXCEL_LEGACY) {
var resource = {
title: file.getName(),
parents: [{id: folderId}],
mimeType: MimeType.GOOGLE_SHEETS
};
var spreadsheet = Drive.Files.copy(resource, file.getId());
var sheet = SpreadsheetApp.openById(spreadsheet.id).getSheets()[0];
var value = sheet.getDataRange().getValues();
Logger.log(value)
}
}
}
sample()
的功能。