javascript - 尝试在 Google Apps 脚本中获取文件的文件夹路径

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

我正在尝试在 Google Apps 脚本中创建一个函数来查找文件夹的文件路径。 这是错误:TypeError:无法读取 null 的属性“appendParagraph”(第 20 行,文件“Code”)

function getRoot() {

  var doc = DocumentApp.getActiveDocument();
  var header = DocumentApp.getActiveDocument().getHeader();
  var name = doc.getName();
  var id = doc.getId();
  var txt = "Master Folder";
  var parents = [];
  var folders = DriveApp.getFileById(id).getParents();
  while (folders.hasNext()){
    var parent = folders.next();
    var n = parent.getName();
    parents.push(n);
  }
  var pLen = parents.length;
  for (i = 0; i < pLen; i++){
    txt = txt + "//" + parents[i];
  }

  var headerPar = header.appendParagraph(txt);


}

最佳答案

我相信您的目标如下。

  • 您想知道TypeError: Cannot read property 'appendParagraph' of null错误消息的原因。
  • 您想要删除错误。
  • 您想要检索事件 Google 文档的文件夹路径。

对于这个,这个答案怎么样?

修改点:

  • 在您的脚本中,我认为错误消息的原因是 Google 文档中不存在 header 。这样,getHeader() 检索到的 headernull,然后就会发生错误。因此,在这种情况下,请使用 addHeader() 添加 header 。
  • var doc = DocumentApp.getActiveDocument();
  • doc 可用于 getHeader()
  • 如果你想从根文件夹中检索文件夹路径,我认为你的脚本需要修改。在当前脚本中,当将 Google 文档放入嵌套文件夹中时,只会检索该文档的父级。

当你的脚本使用上述几点修改后,它会变成如下。

修改后的脚本:

function getRoot() {
  var doc = DocumentApp.getActiveDocument();

  var header = doc.getHeader() || doc.addHeader();  // Modified

  var name = doc.getName();
  var id = doc.getId();
  var txt = "Master Folder";
  var parents = [];
  var folders = DriveApp.getFileById(id).getParents();

  // --- I modified below script
  while (folders.hasNext()) {
    var folder = folders.next();
    parents.push(folder.getName());
    folders = folder.getParents();
  }
  parents = parents.reverse();
  // ---

  var pLen = parents.length;
  for (i = 0; i < pLen; i++){
    txt = txt + "//" + parents[i];
  }
  var headerPar = header.appendParagraph(txt);
}
  • 通过此修改,当 header 存在时,将使用 doc.getHeader()。当 header 不存在时,使用 doc.addHeader() 。并且,当事件文档被放入诸如 root ->folder1 ->folder2 之类的文件夹路径时,MasterFolder//MyDrive//folder1//folder2 被放入 header 。

引用文献:

关于javascript - 尝试在 Google Apps 脚本中获取文件的文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62377259/

相关文章:

javascript - 为什么gapi.client.init(Google Drive API)不起作用?

javascript - Chartjs 中的气泡图不起作用

javascript - scrolltofixed 插件切换到位置 : absolute 时出现问题

google-apps-script - 从 Google Web App 中的 doPost() 重定向,带有 App 脚本的 HTML 表单

javascript - 如何限制 Google Bigquery 中的作业数量

google-sheets - 如何通过 sheets API v4 更新 google 电子表格

javascript - 如何将数据放在总 "FooterRow"上?

javascript - 未捕获的类型错误无法读取未定义 Javascript 的属性 '0'

javascript - Google Apps 脚本事件 EventGuest 没有 .getEmail()

android - Google Android Drive api 登录在已安装版本上失败