无法使用getParents拉取父文件夹名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用getParents拉取父文件夹名称相关的知识,希望对你有一定的参考价值。
我试图获取由url确定的电子表格的父文件夹的名称,然后将名称放在指定的单元格中。调试下面的脚本告诉我“TypeError:无法在对象Spreadsheet中找到函数getParents”。我已经尝试了每一个我能想到的调整,并阅读了多篇可能回答我问题的类似文章,但我无法理解它们。 (原谅新手?)有人可以告诉我我做错了什么吗?
function getParent(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("VALUES");
var ll = s.getRange("B11");
var url = ll.getValue();
var driveFile = SpreadsheetApp.openByUrl(url);
var parentFolder = driveFile.getParents();
while (parentFolder.hasNext()) {
var folder = parentFolder.next();
var title = folder.getName();
}
s.getRange("B5").setValue(title);
}
答案
试试这个:
function getParent(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName("VALUES");
var url=sh.getRange("B11").getValue();
var file=DriveApp.getFileById(url.split('/')[5]);//gets the id out of the url
var parentFolder=file.getParents();
while (parentFolder.hasNext()) {
var folder = parentFolder.next();
var title = folder.getName();
}
sh.getRange("B5").setValue(title);
}
另一答案
看起来这个代码有两个小问题,我们将解决这个问题,让你开始运行。
- 如果可能,使用文档ID而不是URL通常是更好的做法。此外,由于我不知道的原因,DriveApp没有getFileByURL方法。所以我更改了“fileId”的“url”变量,并将单元格B11的内容更改为文件的Id,这是URL本身的一部分。
- 要返回驱动器文件,您应该在电子表格本身上调用getFileByID(),而不是在DriveApp服务上调用。
我已经测试了以下代码,我相信它符合您的期望:
function getParent(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("VALUES");
var ll = s.getRange("B11");
var fileId = ll.getValue();
var driveFile = DriveApp.getFileById(fileId);
var parentFolder = driveFile.getParents();
while (parentFolder.hasNext()) {
var folder = parentFolder.next();
var title = folder.getName();
}
s.getRange("B5").setValue(title);
}
以上是关于无法使用getParents拉取父文件夹名称的主要内容,如果未能解决你的问题,请参考以下文章