我有一个Apps脚本,可以创建多个文件并将它们移动到一个文件夹中。有没有办法将文件直接放在一个文件夹中,或者首先必须获取该文件,然后将其复制到相应的文件夹,然后将其从根文件夹中删除,如下所示:
folder=DocsList.createFolder("MyFolder");
var file=DocsList.createFile(blob);
file.addToFolder(folder);
file.removeFromFolder(DocsList.getRootFolder());
这样做的问题是,如果您打开驱动器,您会看到文件首先放在根文件夹中,然后移动到MyFolder。所以在执行removeFromFolder之前会有一点滞后。
答案 0 :(得分:10)
刚刚测试了以下代码
function Test() {
DocsList.createFolder('Folder1').createFolder('Subfolder1').createFile('File1', 'Empty');
}
按预期工作,即在新创建的文件夹File1
中创建新的My Drive\Folder1\Subfolder1
文档。
答案 1 :(得分:8)
DocsList不再有效,已被DriveAPI,Google App Services和高级Google服务取代。
这里我留下我的测试代码,这段代码创建文件夹 - 子文件夹 - 谷歌文件 - pdf - 并以各种方式将它们存储在文件夹和子文件夹中,我希望会有所帮助
function Drive_2015() { //busca un folder, si no lo hay lo crea y crea 2 sub carpetas un google document copiado en cada una de ellas
var name='folder de prueba';
var carpeta = DriveApp.getRootFolder().searchFolders("title contains '"+name+"'");
if (carpeta.hasNext()===true) {
while (carpeta.hasNext()) {
var folder = carpeta.next();
Logger.log(folder.getName()+' '+folder.getId());
}
}else{
var folder=DriveApp.getRootFolder().createFolder(name);
var parent=DriveApp.getFolderById(folder.getId()); // get parent folder
var folder2 =parent.createFolder('Subfolder'); // 1° way to create sub folder
var folder3=folder.createFolder(name+1);// 2° way to create sub folder (and more easy)
var doc = DocumentApp.create('Documento sta');
var sheet = SpreadsheetApp.create('Spreadsheet sta');
Utilities.sleep(300); // este retardo es para garantizar en el user-side la creacion del nuevo archivo
var files = DriveApp.getFilesByName('Documento sta');// or Id var file = DriveApp.getFileById(doc.getId());
while (files.hasNext()) {
var file = files.next();
Logger.log('ojo '+file.getName());
file.makeCopy(folder3);
file.makeCopy(folder2);
var file2=file.makeCopy(folder);
file2.setName('Acta individual del alumno')
var blob = file2.getAs('application/pdf');
var file2pdf = folder.createFile(blob);
var file2pdf = DriveApp.getFileById(file2pdf.getId());
var file2pdf=file2pdf.makeCopy(folder);
Logger.log('se creó: '+file.getName()+' en la carpeta: '+folder.getName()+' el PDF es: '+file2pdf.getId());
DriveApp.getFileById(file2pdf.getId()).setTrashed(true)
DriveApp.getFileById(docid).setTrashed(true)
}
}
}
答案 2 :(得分:6)
截至2015年,您应使用DriveApp服务管理Google云端硬盘中的文件。 DriveApp有一个Folder类,允许您直接在文件夹中创建文件。
function createFilesInFolder() {
//This creates the folder
var folder = DriveApp.createFolder('My Folder');
//This creates a file in the folder
var file = folder.createFile('My File.txt',
'Lorem ipsum',
MimeType.PLAIN_TEXT);
}
答案 3 :(得分:4)
我只想评论(但没有50个声望点)。
原始帖子没有的原因是上面的答案是.createFolder同时适用于DocsList.createFolder(在根目录中创建文件夹)和Folder.createFolder,后者在当前创建子文件夹文件夹中。
除了我以外,每个人都可能很明显 - 但我花了很长时间才意识到: - )
答案 4 :(得分:0)
GAS现在允许使用.moveTo更快的方法移动文件 假设您要构建一个可以编辑的文档。此代码使您可以创建文件夹,创建文档,移动文档,最后,点击DocumentApp来编辑文件。
例如:
const saveTo = DriveApp.createFolder("FolderName").next().getId();
const newDoc = DocumentApp.create("New Doc"),
newDocId = DriveApp.getFileById(newDoc.getId()).moveTo(saveTo);