我正在尝试在 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()
检索到的header
为null
,然后就会发生错误。因此,在这种情况下,请使用addHeader()
添加 header 。 doc
可用于getHeader()
。- 如果你想从根文件夹中检索文件夹路径,我认为你的脚本需要修改。在当前脚本中,当将 Google 文档放入嵌套文件夹中时,只会检索该文档的父级。
var doc = DocumentApp.getActiveDocument();
的 当你的脚本使用上述几点修改后,它会变成如下。
修改后的脚本:
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/