获取我的 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());
}
}
注意:
没有真实或具体的路径,因为一个文件可以有多个父文件。在这个相关的.
中也有说明
希望这对您有所帮助。
在一篇不错的文章 (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());
}
}
注意:
没有真实或具体的路径,因为一个文件可以有多个父文件。在这个相关的
希望这对您有所帮助。