在创建命名文件夹之前检查其是否存在
Checking the existence of a named folder prior to creating it
我正在尝试将 Google 驱动器中的特定文件插入文件夹。我还想检查是否有一个名为 'testFolder'
的文件夹:如果是,则将文件插入到该现有文件夹中,否则创建一个名为 'testFolder'
的文件夹。
这是我到目前为止的想法,但它总是会创建一个名为 'testFolder'
的新文件夹(因此用户现在有 10 个名为 'testFolder'
的文件夹 - 它不会重复使用第一个文件夹)。
var copyId = /* the id of the file to copy */;
function InsertFileToFolder() {
var file = DriveApp.getFileById(copyId);
var folder;
if (folderExists() == true){
folder = DriveApp.getFolder("testFolder"); //<-- No such thing in GAS i think?
} else {
folder = DriveApp.createFolder("testFolder");
}
folder.addFile(file);
}
//Check whether folder exists or not
function folderExists() {
var folders = DriveApp.getFolders();
var flag = false;
for(var i = 0; i < folders.length; i++){
if(folders[i].getName() == 'testFolder'){
flag = true;
break;
}
}
return flag;
}
没有 length
属性 个 folders
。您需要使用 hasNext()
.
Google Documentation - Folder Class
// Log the name of every folder in the user's Drive.
var folder,folders;
folders = DriveApp.getFolders();
while (folders.hasNext()) {
folder = folders.next();
Logger.log(folder.getName());
}
此代码 returns 如果找到要查找的文件夹,则文件夹 ID:
function InsertFileToFolder() {
var file,folder,
folderIdOrFalse;
file = DriveApp.getFileById(copyId);
folderIdOrFalse = folderExists();
if (folderIdOrFalse !== false) {
folder = DriveApp.getFolderById(folderIdOrFalse);
} else {
folder = DriveApp.createFolder("testFolder");
}
folder.addFile(file);
};
function folderExists() { //Check whether folder exists or not
var folders = DriveApp.getFolders();
var theReturn = false,
i=0,
folderName = "",
folder;
while (folders.hasNext()) {
folder = folders.next();
folderName = folder.getName();
if (folderName === 'testFolder') {
theReturn = folder.getId();
break;
};
};
return theReturn;
};
Google 已更改其脚本。我知道这是一个旧的 post 但这是我目前能想到的最佳答案:
function getFolder(parent_folder,folder_name){
var folders = parent_folder.getFolders();
while (folders.hasNext()) {
var folder = folders.next();
if(folder_name == folder.getName()) {
return folder;
}
}
return false;
}
var parent_folder = DriveApp.getFolderById(//id\);
var folderName = getFolders(parent_folder,name);
if (folderName === false){
folderName = outputfolderId.createFolder(name);
}
在这个答案中找到:How to create a folder if it doesn't exist?
我正在尝试将 Google 驱动器中的特定文件插入文件夹。我还想检查是否有一个名为 'testFolder'
的文件夹:如果是,则将文件插入到该现有文件夹中,否则创建一个名为 'testFolder'
的文件夹。
这是我到目前为止的想法,但它总是会创建一个名为 'testFolder'
的新文件夹(因此用户现在有 10 个名为 'testFolder'
的文件夹 - 它不会重复使用第一个文件夹)。
var copyId = /* the id of the file to copy */;
function InsertFileToFolder() {
var file = DriveApp.getFileById(copyId);
var folder;
if (folderExists() == true){
folder = DriveApp.getFolder("testFolder"); //<-- No such thing in GAS i think?
} else {
folder = DriveApp.createFolder("testFolder");
}
folder.addFile(file);
}
//Check whether folder exists or not
function folderExists() {
var folders = DriveApp.getFolders();
var flag = false;
for(var i = 0; i < folders.length; i++){
if(folders[i].getName() == 'testFolder'){
flag = true;
break;
}
}
return flag;
}
没有 length
属性 个 folders
。您需要使用 hasNext()
.
Google Documentation - Folder Class
// Log the name of every folder in the user's Drive.
var folder,folders;
folders = DriveApp.getFolders();
while (folders.hasNext()) {
folder = folders.next();
Logger.log(folder.getName());
}
此代码 returns 如果找到要查找的文件夹,则文件夹 ID:
function InsertFileToFolder() {
var file,folder,
folderIdOrFalse;
file = DriveApp.getFileById(copyId);
folderIdOrFalse = folderExists();
if (folderIdOrFalse !== false) {
folder = DriveApp.getFolderById(folderIdOrFalse);
} else {
folder = DriveApp.createFolder("testFolder");
}
folder.addFile(file);
};
function folderExists() { //Check whether folder exists or not
var folders = DriveApp.getFolders();
var theReturn = false,
i=0,
folderName = "",
folder;
while (folders.hasNext()) {
folder = folders.next();
folderName = folder.getName();
if (folderName === 'testFolder') {
theReturn = folder.getId();
break;
};
};
return theReturn;
};
Google 已更改其脚本。我知道这是一个旧的 post 但这是我目前能想到的最佳答案:
function getFolder(parent_folder,folder_name){
var folders = parent_folder.getFolders();
while (folders.hasNext()) {
var folder = folders.next();
if(folder_name == folder.getName()) {
return folder;
}
}
return false;
}
var parent_folder = DriveApp.getFolderById(//id\);
var folderName = getFolders(parent_folder,name);
if (folderName === false){
folderName = outputfolderId.createFolder(name);
}
在这个答案中找到:How to create a folder if it doesn't exist?