如何找到当前文件夹的路径?我只是希望能够获取文件夹的路径,以便我可以操作文件夹中的文件而无需在脚本中键入路径。
答案 0 :(得分:6)
对于电子表格,我发现这可行:
thisFileId = SpreadsheetApp.getActive().getId();
var thisFile = DriveApp.getFileById(thisFileId);
var parentFolder = thisFile.getParents()[0].getName();
答案 1 :(得分:4)
在脚本中添加这样的函数
function getThisScriptInDrive() {
return DriveApp.find("some unique string that wont be anywhere else")[0];
}
这将搜索Drive并找到此脚本本身,因为它包含该字符串 - 就在函数调用中! - 无需在其他任何地方声明。只要你使用一个不起眼的字符串 - 我建议在你的键盘上混合几百个字符 - 它在驱动器上是唯一的,因此只是工作。
获得此脚本的文件后,您可以调用getParents()等。
答案 2 :(得分:4)
感谢Corey的答案以及Thomas'的答案,这里有一个“全功能”版本,它显示了记录器中的文件夹树以及每个父母ID ...有趣; - )
function getScriptFolderTree() {
var thisScript = getThisScriptInDrive();
var names = []
var Ids = []
var folder = thisScript.getParents()[0];
while (folder.getName() != "Root"){
names.unshift(folder.getName());
Ids.unshift(folder.getId());
var parents = folder.getParents();
var folder = parents[0];
}
Logger.log('Root/'+names.join().replace(/,/g,'/'))
Ids.unshift(DriveApp.getRootFolder().getId())
Logger.log(Ids)
}
function getThisScriptInDrive() {
return DriveApp.getFileById("poiuytrezazertyujhgfdsdcvcxyydryfhchfh");
}
(ID被故意截断)
注意这个脚本工作得很好但是如果“随机字符串”被修改就奇怪地停止工作...我想驱动器中的搜索引擎不喜欢这个改变但是我有没有严肃的解释(评论欢迎),但几分钟后它再次起作用; - )
答案 3 :(得分:0)
你可以这样做:
function myFunction() {
var thisScript = getThisScriptInDrive();
var folder = thisScript.getParents()[0];
while (folder.getName() != "Root"){
var parents = folder.getParents();
for (var i in parents){
var folder = parents[i];
Logger.log(folder.getName());
}
}
}
function getThisScriptInDrive() {
return DocsList.find("`<jj!?=(<DW+.W/m7SBF:sgu/@B(&Cs3:{ajA~ys@KmN4&]ujhpZ~z[Tv?+dk}MpK,8pY=w&dny8N'74:.9H:~uCgY=7pRt4[Tn5")[0];
}
这仅适用于文件夹只有1个父项的情况,因为它只需要1个路径。
编辑:感谢Corey G
答案 4 :(得分:0)
我能够获得包含正在运行的脚本的文件夹:
//
// PrintScriptFolder -- print the name of the folder in which the running script resides.
//
function PrintScriptFolder()
{
var scriptId = ScriptApp.getScriptId();
console.info('scriptId = ' + scriptId);
var file = DriveApp.getFileById(scriptId);
var folders = file.getParents();
if (folders.hasNext())
{
var folder = folders.next();
var name = folder.getName();
console.info('script folder name = ' + name);
}
}
诀窍是使用ScriptApp来获取正在运行的脚本的ID。从那里开始非常简单:使用DriveApp获取文件ID,使用getParents()获取(一个)父文件夹的列表,使用next()获取,并使用getName()获取其名称。