在好文章(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();
答案 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中说明。
希望这有帮助。