我正在尝试获取由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);
}
答案 0 :(得分:2)
此代码似乎有两个小问题,我们将修复这些小问题以使您起步并运行它。
如果可能的话,通常最好使用文档 ID,而不是URL。另外,由于我不知道的原因,DriveApp 没有getFileByURL方法。因此,我将您的“ url”变量更改为“ fileId”,并将单元格B11的内容更改为文件ID,这是URL本身的一部分。
为了返回驱动器文件,您不应在电子表格本身上而是在DriveApp服务上调用getFileByID()。
我已经测试了以下代码,并且相信它可以满足您的期望:
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);
}
答案 1 :(得分:0)
尝试一下:
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);
}