所以我是JS的新手,并试图在我工作的公司建立一个内部运营计划。下面是我的代码的第一部分。我创建了一个谷歌表单,并设置了一个触发器,以便在单击提交按钮时,以下代码将启动。触发器工作,前两个功能工作,但我似乎无法让Karrie文件夹从根文件夹移动到子文件夹ID(我确实有正确的ID,但在这篇文章中省略了它)。也许我这样做都倒退了所以任何帮助都会受到赞赏。
// Create Karrie Folder In Root
function start() {
var sourceFolder = "Property Template";
var targetFolder = "Karrie";
var source = DriveApp.getFoldersByName(sourceFolder);
var target = DriveApp.createFolder(targetFolder);
if (source.hasNext()) {
copyFolder(source.next(), target);}}
// Adds Property data to Karrie Folder
function copyFolder(source, target) {
var folders = source.getFolders();
var files = source.getFiles();
while(files.hasNext()) {
var file = files.next();
file.makeCopy(file.getName(), target);}
// Adds Photo Folders to Karrie Folder
while(folders.hasNext()) {
var subFolder = folders.next();
var folderName = subFolder.getName();
var targetFolder = target.createFolder(folderName);
copyFolder(subFolder, targetFolder);}}
// Moves Karrie folder to propertie folder
function MoveFiles(){
var files = DriveApp.getFolderByName("Karrie");
var destination = DriveApp.getFolderById("ID NA");
destination.addFolder(files);}
答案 0 :(得分:0)
我知道你脚本中的MoveFiles()
不起作用。如果我的理解是正确的,那么这个修改怎么样?
addFolder()
用于文件夹时,该文件夹有2个父项。
getFolderByName()
。请使用getFoldersByName()
。function MoveFiles(){
var folder = DriveApp.getFoldersByName("Karrie").next();
var destination = DriveApp.getFolderById("ID NA");
destination.addFolder(folder);
folder.getParents().next().removeFolder(folder);
}
"Karrie"
的文件夹和父级分别仅在Google云端硬盘中设置一个。如果我误解了你的问题,请告诉我。我想修改它。
当您运行此功能时,Logger.log(r)
的ID是否显示" Karrie"的文件夹ID?
function sample() {
var r = DriveApp.getFoldersByName("Karrie").next().getId();
Logger.log(r)
}
请确认并考虑以下几点。
sample()
并确认" Karrie"。DriveApp.getFoldersByName("Karrie").next().getId()
检索文件夹ID,我建议直接使用" Karrie"的文件夹ID。答案 1 :(得分:0)
从2020年开始,我发现移动文件的更简单方法是使用此功能:
function moveToFolder(file, sourceFolder, destFolder) {
var file = DriveApp.getFileById(file.getId());
destFolder.addFile(file);
sourceFolder.removeFile(file);
}
由于第一行,您可以将Spreadsheet
,Google Form
,Document
或其他Google对象转换为File
。
然后,我们只使用Folder
类的方法:https://developers.google.com/apps-script/reference/drive/folder
注意:
如果您使用.create()
创建了文件,则sourceFolder将为DriveApp.getRootFolder()
。
如果要移动多个文件,只需遍历它们即可。