javascript - 尝试在 Google Apps 脚本中获取文件的文件夹路径
问题描述
我正在尝试在 Google Apps 脚本中创建一个函数来查找文件夹的文件路径。这是错误:TypeError:无法读取 null 的属性“appendParagraph”(第 20 行,文件“代码”)
'''
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 文档中不存在。这样,由is
header
检索,然后发生错误。所以在这种情况下,请使用.getHeader()
null
addHeader()
doc
ofvar doc = DocumentApp.getActiveDocument();
可用于getHeader()
.- 如果要从根文件夹中检索文件夹路径,我认为需要修改您的脚本。在您当前的脚本中,当 Google Document 放入嵌套文件夹时,只会检索 Document 的父级。
当你的脚本使用以上几点修改时,它变成如下。
修改后的脚本:
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);
}
- 通过这种修改,当标头存在时,
doc.getHeader()
使用。当标头不存在时,doc.addHeader()
使用。并且,当活动文档被放入文件夹路径时,如root -> folder1 -> folder2
,Master Folder//MyDrive//folder1//folder2
被放入标题。
参考:
推荐阅读
- javascript - 无法在 forEach 循环中更新 JSON 值
- python - PyCharm 找到库但没有找到模块
- azure-application-insights - 如何覆盖 Application Insights 遥测的基于 URL 的组件名称?
- arrays - 在 Excel 中使用 sumif 中的数组公式
- intellij-idea - Default SQL Server Session for Intellij
- kubernetes - Kubernetes:如何配置 Service 和 Pod 之间的负载均衡
- python - 如何从使用 python 请求提供文件的 python-eve 端点下载?我不断收到 401 错误
- python - Python中的图形模拟
- swiftui-list - SwiftUI list 移动和选择行
- python - 如何从已构建的注释中向 django 注释日期字段添加天数