如何仅按Google表格中相应文件的名称打开电子表格?

时间:2019-02-12 10:39:03

标签: google-apps-script

我只需要具有相应文件的名称和文件所在的文件夹,就可以打开电子表格。我正在尝试创建一个活动电子表格的临时副本,并从该副本文件而不是活动文件中读取信息。但是不幸的是,此副本文件没有恒定的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);

我期望的结果是在代码的第三行(在复制基本文件时)和代码的第五行(在引用临时文件中的特定范围时)之间建立链接仅使用文件或相应文件夹的名称。从理论上讲,这似乎很容易,我应该在某处丢失某物...

非常感谢!

1 个答案:

答案 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())