获取我的Google脚本所在的Google云端硬盘文件夹

时间:2017-10-15 01:17:44

标签: google-drive-api drive

在好文章(https://www.labnol.org/internet/google-drive-tree/21198/)的帮助下,我只是在Google云端硬盘中设置了我的第一个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文件..

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

1)树从根文件夹开始

var parentFolder = DriveApp.getRootFolder(); 

2)从特定文件夹开始(但我无法弄清楚,并且需要从.gs文件所在的位置动态确定“Folder_Name”)

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

1 个答案:

答案 0 :(得分:1)

我已使用getScriptId()这将:

  

获取脚本项目的唯一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());
 }  
}

注意:

由于文件可以包含多个父项,因此没有真正的或具体的路径。此处也在此相关SO post中说明。

希望这有帮助。