通过Google Apps脚本在Google文件夹中访问Google表格的Google Apps脚本

时间:2016-06-08 12:38:34

标签: google-apps-script google-sheets

假设我有一个具有以下结构的驱动器:

我的驱动器下:

  • google_sheet_E

  • Main_Folder

    • Folder_A
    • Folder_B
      • google_sheet_C(采用Google表格格式)
      • MS_excel_D.xls(以excel格式,直接上传到驱动器)

注意:google_sheet_E位于驱动器的顶层,而C和D位于驱动器的顶层。

我想将google_sheet_C和MS_excel_D.xls中的一些数据引用到google_sheet_E。

在Google Apps脚本中,我目前的方法是通过ID获取,但我发现此方法不方便,因为我每次都必须获取ID,因此我打算使用文件名。是否有任何方法/功能来访问类似于Windows中的路径系统的工作表? (即遍历文件夹。)

另一个问题:是否有任何好的方法可以让用户在特定路径下自动从驱动器分享到电子表格?

1 个答案:

答案 0 :(得分:0)

  

是否有任何方法/功能可以访问类似于Windows中的路径系统的工作表?

Bruce MacPherson has published just such a function

/**
 * Returns a DriveApp folder object corresponding to the given path.
 *
 * From: http://ramblings.mcpher.com/Home/excelquirks/gooscript/driveapppathfolder
 */
function getDriveFolderFromPath (path) {
  return (path || "/").split("/").reduce ( function(prev,current) {
    if (prev && current) {
      var fldrs = prev.getFoldersByName(current);
      return fldrs.hasNext() ? fldrs.next() : null;
    }
    else { 
      return current ? null : prev; 
    }
  },DriveApp.getRootFolder()); 
}

您可以像这样使用它:

// Get handle for folder
var folder = getDriveFolderFromPath("Main_Folder/Folder_B");

// Find file by name within folder. (Assumes just one match.)
var fileId = folder.getFilesByName("google_sheet_C").next().getId();

// Open spreadsheet using fileId obtained above.
var spreadsheet = SpreadsheetApp.openById(fileId);
...