Google apps script 返回活动电子表格的完整文件夹路径

Google apps script 返回活动电子表格的完整文件夹路径,google-apps-script,google-sheets,shared-directory,Google Apps Script,Google Sheets,Shared Directory,我有一个共享文件夹结构中的电子表格。此共享文件夹结构在任何给定时间在3-9人之间共享。现在,文件夹结构本身在任何人的谷歌硬盘上都是不变的。但结构的“根”可能会根据个人偏好的不同而有所不同。(我希望这是有道理的。) 例如: Folder that is shared: RootFolder Folder structure of RootFolder: RootFolder>First_Level_Folder>Second_Level_Folder>Third_Level_Fo

我有一个共享文件夹结构中的电子表格。此共享文件夹结构在任何给定时间在3-9人之间共享。现在,文件夹结构本身在任何人的谷歌硬盘上都是不变的。但结构的“根”可能会根据个人偏好的不同而有所不同。(我希望这是有道理的。)

例如:

Folder that is shared: RootFolder
Folder structure of RootFolder: RootFolder>First_Level_Folder>Second_Level_Folder>Third_Level_Folder
Spreadsheet that this question pertains to: SS_
Where SS_ resides in: Second_Level_Folder
People that are collaborating: P1 P2 P3 P4 P5
P1: P1Root>P1First_Folder>RootFolder
P2: P2Root>RootFolder
P3: P3Root>P3First_Folder>P3Second_Folder>RootFolder
P4: P4Root>P4First_Folder>RootFolder
现在,RootFolder及其所有内容在人们之间共享。他们可以将RootFolder(共享)放在各自的Google驱动器中的任何位置

例如:

Folder that is shared: RootFolder
Folder structure of RootFolder: RootFolder>First_Level_Folder>Second_Level_Folder>Third_Level_Folder
Spreadsheet that this question pertains to: SS_
Where SS_ resides in: Second_Level_Folder
People that are collaborating: P1 P2 P3 P4 P5
P1: P1Root>P1First_Folder>RootFolder
P2: P2Root>RootFolder
P3: P3Root>P3First_Folder>P3Second_Folder>RootFolder
P4: P4Root>P4First_Folder>RootFolder
因此,如果一个脚本附加到SS_,并且假设它与SS_在同一文件夹中“查找另一个电子表格”,我需要知道SS_的完整文件夹路径。此文件夹路径对于不同的人是唯一的。(P1、P2、P3等)

所以我的问题是,我可以通过脚本找到SS_uuu的文件夹路径吗。。?这样,每次任何人运行脚本时,路径都是他们的“正确路径”,并且过程的其余部分不会受到阻碍


我试图查找
getFolderPath(电子表格)
类型函数,但没有成功。

如果只需要搜索当前电子表格的直接父文件夹,则不需要完整的文件夹路径

需要注意的是,Google Drive上的文件可能“位于”多个文件夹中。因此,即使对于单个用户,确定完整文件夹路径也不是绝对的。甚至文件夹也可以放在多个文件夹中,虽然我没有测试过,但我认为可以在子文件夹中放一个父文件夹。因此,如果您试图获得完整的路径,如果不小心检测到这种循环情况,您可能会陷入无休止的循环

以下是如何获取当前Spreadsheet的直接父文件夹:

函数logParents(){
var ss=SpreadsheetApp.getActive();//当前电子表格
var directParents=DriveApp.getFileById(ss.getId()).getParents();
while(directParents.hasNext())
Logger.log(directParents.next().getName());
}

在上面的代码中,我只是记录每个父级名称(如果有多个父级名称),但要在每个父级中搜索,您只需调用
searchFiles
,而不是
getName
。那么一个文件怎么可能有多个父文件夹呢。。?是否如您所说,文件可能位于驱动器中的多个位置。。?(这与复制不同,对吧?)好吧,这整个线程纠正了我对谷歌硬盘结构的一些先入为主的想法。现在整个
FileIterator
和必须
next()
的事情都有了意义。我总是喜欢使用Doclist而不是DriveApp来浏览Google Drive。但现在我觉得使用后者更舒服一些。谢谢你们!