MyDrive |_ Client |_ tpl |_ intake.doc
I'm trying to get a reference to the MyDrive folder.
var tpl_intakeDoc = DriveApp.getFileById(docIDs.tpl_intake);
var parent = tpl_intakeDoc.getParents()[0];
Logger.log(parent.getName());
这给了我以下错误:
TypeError: Cannot call method "getName" of undefined. (line 50, file "Code")
同样,出于某种原因,尝试遍历父文件夹(Client 和 tpl)仅显示 tpl。
var parents = tpl_intakeDoc.getParents();
while (parents.hasNext()) {
var parents = parents.next();
Logger.log(folder.getName());
}
所有记录的是:
[19-06-14 04:14:11:764 MDT] tpl
我希望看到的是:
[19-06-14 04:14:11:764 MDT] tpl
[19-06-14 04:14:11:764 MDT] Client
我做错了什么?
最佳答案
MyDrive
、Client
和tpl
是文件夹。intake.doc
是一个文件。- 您想使用
intake.doc
的父文件夹检索MyDrive
下的Client
和tpl
文件夹>. - 您想知道当您的第二个脚本运行时,只检索到
tpl
的原因。
如果我的理解是正确的,这个答案怎么样?在此答案中,您的第二个脚本已修改。
修改点:
在问题的第二个脚本中,我认为脚本运行时发生了错误。所以请修改如下。
var tpl_intakeDoc = DriveApp.getFileById(docIDs.tpl_intake); // Added var parents = tpl_intakeDoc.getParents(); while (parents.hasNext()) { var parent = parents.next(); // Modified Logger.log(parent.getName()); // Modified }
在上面的脚本中,检索了
intake.doc
的父文件夹。所以只返回tpl
。- 为了检索
Client
和tpl
的文件夹,需要检索tpl
的父文件夹。并检索tpl
的父文件夹下的文件夹。
这个脚本的流程如下。
- 检索
intake.doc
的父文件夹。tpl
被检索。
- 检索
tpl
的父文件夹。MyDrive
已检索。
- 检索
MyDrive
下的文件夹。Client
和tpl
被检索。
修改后的脚本:
var tpl_intakeDoc = DriveApp.getFileById(docIDs.tpl_intake);
var parent = tpl_intakeDoc.getParents(); // tpl
if (parent.hasNext()) {
var parentOnParent = parent.next().getParents(); // MyDrive
if (parentOnParent.hasNext()) {
var MyDrive = parentOnParent.next().getFolders();
while (MyDrive.hasNext()) {
var folder = MyDrive.next();
Logger.log(folder.getName()) // tpl, Client
}
}
}
备注:
- 如果
MyDrive
是根文件夹,如果你想从根文件夹中检索tpl
和Client
的文件夹,我想那Alberto Molina's answer对此很有用。
引用资料:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
关于google-apps-script - Google App 脚本 - DriveApp - getParents() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56596130/