Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图在Google Apps脚本中获取文件的文件夹路径_Javascript_Google Apps Script_Google Drive Api_Google Docs - Fatal编程技术网

Javascript 试图在Google Apps脚本中获取文件的文件夹路径

Javascript 试图在Google Apps脚本中获取文件的文件夹路径,javascript,google-apps-script,google-drive-api,google-docs,Javascript,Google Apps Script,Google Drive Api,Google Docs,我正在尝试在Google Apps脚本中创建一个函数,用于查找文件夹的文件路径。 错误如下:TypeError:无法读取null的属性“append段落”(第20行,文件“Code”) “” 函数getRoot(){ var doc=DocumentApp.getActiveDocument(); var header=DocumentApp.getActiveDocument().getHeader(); var name=doc.getName(); var id=doc.getId();

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

“”
函数getRoot(){
var doc=DocumentApp.getActiveDocument();
var header=DocumentApp.getActiveDocument().getHeader();
var name=doc.getName();
var id=doc.getId();
var txt=“主文件夹”;
var父项=[];
var folders=DriveApp.getFileById(id).getParents();
while(folders.hasNext()){
var parent=folders.next();
var n=parent.getName();
父母。推(n);
}
var pLen=父项长度;
对于(i=0;i
我相信你的目标如下

  • 您想知道
    TypeError的错误消息的原因:无法读取null的属性“append段落”
  • 您想删除错误
  • 您希望检索活动Google文档的文件夹路径
对于这个问题,这个答案如何

修改点:
  • 在您的脚本中,我认为出现错误消息的原因是Google文档中不存在标题。由此,由
    getHeader()
    检索的
    header
    null
    ,然后发生错误。因此,在本例中,请使用
    addHeader()
    添加标题
  • var doc=DocumentApp.getActiveDocument()的
    doc
    可用于
    getHeader()
  • 如果要从根文件夹检索文件夹路径,我认为需要修改脚本。在当前脚本中,当Google文档放入嵌套文件夹时,只检索文档的父级
当使用上述要点修改脚本时,它将变成如下所示

修改脚本: 函数getRoot(){ var doc=DocumentApp.getActiveDocument(); var header=doc.getHeader()| | doc.addHeader();//已修改 var name=doc.getName(); var id=doc.getId(); var txt=“主文件夹”; var父项=[]; var folders=DriveApp.getFileById(id).getParents(); //---我修改了下面的脚本 while(folders.hasNext()){ var folder=folders.next(); parents.push(folder.getName()); folders=folder.getParents(); } parents=parents.reverse(); // --- var pLen=父项长度; 对于(i=0;i
  • 通过此修改,当标头存在时,将使用
    doc.getHeader()
    。当标头不存在时,将使用
    doc.addHeader()
    。并且,当活动文档被放入文件夹路径(如
    root->folder1->folder2
    )时,
    Master folder//MyDrive//folder1//folder2
    )被放入标题
参考资料:

是的,谢谢!你回答得很好。我应该更具体地回答我的问题。再次感谢你@欢迎特伦斯·赫希。谢谢你让我知道。我很高兴你的问题解决了。如果您的问题已解决,请按“接受”按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为你的问题和解决方案对他们会有帮助。如果你找不到按钮,尽管告诉我。
'''
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);


}
'''
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);
}