我只需要具有相应文件的名称和文件所在的文件夹,就可以打开电子表格。我正在尝试创建一个活动电子表格的临时副本,并从该副本文件而不是活动文件中读取信息。但是不幸的是,此副本文件没有恒定的ID和URL,因为每次脚本完成后都会被擦除,并在下次运行脚本时重新创建。
我已经尝试过使用临时文件的URL来打开电子表格本身,如下所示。
但这对我没有用,因为我没有此文件的恒定URL(因为它将在脚本末尾删除,并在下一个脚本中包含新的URL)。但是我有一个恒定的文件名,这将是相应文件夹中的唯一文件。
我也尝试过寻找仅使用文件名(在“ temp_folder”中为“ temp_copy”)打开文件的方法。但是我没有找到可行的解决方案。
var report = SpreadsheetApp.getActiveSpreadsheet();
var temp_folder =
DriveApp.getFolderById("1EAsvVcFjIw5iGTeF_SxxQJLVlaLHl_pR");
DriveApp.getFileById(report.getId()).makeCopy("temp_copy", temp_folder);
var temp_copy = SpreadsheetApp.openByUrl(' ');
var hiddenSheet = temp_copy.getSheetByName('DATE');
var lastRow = hiddenSheet.getSheetValues(1,1,1,1);
var sheet = temp_copy.getSheetByName('forCSV');
var lastColumn = sheet.getLastColumn();
var activeRange = sheet.getRange(1,2,lastRow,lastColumn);
我期望的结果是在代码的第三行(在复制基本文件时)和代码的第五行(在引用临时文件中的特定范围时)之间建立链接仅使用文件或相应文件夹的名称。从理论上讲,这似乎很容易,我应该在某处丢失某物...
非常感谢!
答案 0 :(得分:1)
您可以使用DriveApp获取包含工作表的FileIterator。
var file, files = DriveApp.getFilesByName("temp_copy");
if (files.hasNext ()){
file = files.next(); // Get first result for name
} else {
return "";
}
var sheet = SpreadsheetApp.openById(file.getId())