Я успешно использую следующий код из ctrlq.org для создания папок на Google Диске:
function go() {
var path = "//main//parent//child//grandchild”;
var folder = getDriveFolder(path);
Logger.log(folder.getUrl());
}
function getDriveFolder(path) {
var name, folder, search, fullpath;
// Remove extra slashes and trim the path
fullpath = path.replace(/^\/*|\/*$/g, '').replace(/^\s*|\s*$/g, '').split("/");
// Always start with the main Drive folder
folder = DriveApp.getRootFolder();
for (var subfolder in fullpath) {
name = fullpath[subfolder];
search = folder.getFoldersByName(name);
// If folder does not exit, create it in the current level
folder = search.hasNext() ? search.next() : folder.createFolder(name);
}
return folder;
}
Я столкнулся с ошибкой на одном из моих листов.после создания последней папки (внука) также создается еще одна дополнительная папка.
Имя папки: function (search) {if (search == "") {return false;} for (var i = 0; i
Да, это буквально имя папки, созданной в конце каждого пути, созданного функцией с этой одной электронной таблицей.Это сводило меня с ума.
Путем проб и ошибок я обнаружил, что наличие следующего кода в моем проекте приводит к созданию этой дополнительной папки.
Вот код, который вызываетпроблема:
Array.prototype.findIndex = function(search){
if(search == "") return false;
for (var i=0; i<this.length; i++)
if (this[i] == search) return i;
return -1;
}
Можно ли переписать getDriveFolder, чтобы этого не происходило?Может быть, даже просто отфильтровывая имя?Я пытался безрезультатно.Ваша помощь очень ценится.
Я сам решил эту проблему.Возможно, это не лучшее решение, но оно работает.Я добавил следующий код, чтобы отфильтровать неверное имя папки.
if(folderName.indexOf("function (search") > -1) {
var folderParent = DriveApp.getFolderById(folderID).getParents().next();
DriveApp.getFolderById(folderID).setTrashed(true);
folder = folderParent;