获取我的 google 脚本所在的 Google Drive 文件夹

Acquiring the Google Drive folder my google script is located

在一篇不错的文章 (https://www.labnol.org/internet/google-drive-tree/21198/) 的帮助下,我刚刚在 Google Drive 中设置了我的第一个 google 脚本。

快速提问: 我如何获得 运行 脚本 /myFolder1/music/myFirstScript.gs,以确定它是 /myFolder1/music 中的 运行?

这没有用。我得到 Url 但日志文件中没有任何内容显示正确答案。

  var files = DriveApp.searchFiles('title contains "GoogleTreeAgenda5"');
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
    Logger.log(file.getUrl()); 
    Logger.log(file.getDownloadUrl());
    Logger.log(file.getDescription());
    Logger.log(file.getOwner());
    Logger.log(file.getParents());
    Logger.log(file.getParents()[0].getName());
    Logger.log("------------------------------");
  }

更长的幕后原因:

文件将被修改一点,这样每个月我都会在根目录下创建一个新的树结构,其中包含议程主题,脚本将从基于主题的目录树中创建一个 html 文件.基本上它将是一个基于脚本文件当前位置的大纲创建器。所以假设这个月它在:/myFolder1/music(换句话说它是 /myFolder1/music/myFirstScript.gs。脚本需要确定文件夹是 /myFolder1/music 以便我可以让它打印树结构从它所在的文件夹开始到 html 文件..

在我上面提到的站点提供的示例应用程序中,有 2 个选项可以从 google 脚本打印树:

1) 从根文件夹开始的树

var parentFolder = DriveApp.getRootFolder(); 

2) 从一个特定的文件夹开始(但我想不通,需要 "Folder_Name" 从 .gs 文件所在的位置动态确定)

var parent = DriveApp.getFoldersByName("FOLDER_NAME").next(); 

我用过 getScriptId() 这将:

Gets the script project's unique id.

此 ID 也是 Google 驱动器中的唯一 ID。然后从那里创建一个循环 getParents() 直到到达根文件夹。

完整代码如下:

function myFunction() {
var scriptID = ScriptApp.getScriptId();

//  Logger.log(scriptID)

// Log the name of every parent folder
 var driveFile = DriveApp.getFileById(scriptID); 
 var parentFolder = driveFile.getParents();
 while (parentFolder.hasNext()) {
   var folder = parentFolder.next();
   Logger.log(folder.getName());
 }  
}

注意:

没有真实或具体的路径,因为一个文件可以有多个父文件。在这个相关的.

中也有说明

希望这对您有所帮助。