google-apps-script - Google App 脚本 - DriveApp - getParents() 未按预期工作

标签 google-apps-script google-drive-api google-docs-api

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

我做错了什么?

最佳答案

  • MyDriveClienttpl 是文件夹。
  • intake.doc 是一个文件。
  • 您想使用intake.doc 的父文件夹检索MyDrive 下的Clienttpl 文件夹>.
  • 您想知道当您的第二个脚本运行时,只检索到 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

  • 为了检索Clienttpl 的文件夹,需要检索tpl 的父文件夹。并检索tpl 的父文件夹下的文件夹。

这个脚本的流程如下。

  1. 检索 intake.doc 的父文件夹。
    • tpl 被检索。
  2. 检索tpl 的父文件夹。
    • MyDrive 已检索。
  3. 检索MyDrive 下的文件夹。
    • Clienttpl 被检索。

修改后的脚本:

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是根文件夹,如果你想从根文件夹中检索tplClient的文件夹,我想那Alberto Molina's answer对此很有用。

引用资料:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

关于google-apps-script - Google App 脚本 - DriveApp - getParents() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56596130/

相关文章:

python - 如何归档 'Invalid requests[0].updateTextStyle: At least one field must be listed in ' 字段'。 (使用 '*'表示所有字段。)">'

javascript - 将变量从谷歌脚本传递到 html 对话框

google-apps-script - 如何将一个谷歌工作表复制到另一个不同的谷歌工作表

json - 可以使用 "initialData"属性将 App 脚本参数写入 Stackdriver 消息吗?

http - Golang http 获取空response.Body

c# - 使用 .net sdk 检索 google 驱动器的文件列表

xml - 自动将 XML 数据收集到电子表格

google-apps-script - 如何在团队云端硬盘中创建文件夹?

google-docs-api - 从 Google API 可恢复更新获取 401 未经授权

google-apps-script - 自动化谷歌分析报告