Google apps script 使用应用程序脚本移动文件夹
所以我是JS的新员工,试图在我工作的公司建立一个内部运作计划。下面是我的第一段代码。我已经创建了一个谷歌表单,并设置了一个触发器,这样当点击提交按钮时,下面的代码就会启动。触发器工作,前两个函数工作,但我似乎无法让Karrie文件夹从根目录移动到子文件夹id(我确实有正确的id,但在本文中省略了它)。也许我在做这一切都倒退,所以任何帮助将不胜感激Google apps script 使用应用程序脚本移动文件夹,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,所以我是JS的新员工,试图在我工作的公司建立一个内部运作计划。下面是我的第一段代码。我已经创建了一个谷歌表单,并设置了一个触发器,这样当点击提交按钮时,下面的代码就会启动。触发器工作,前两个函数工作,但我似乎无法让Karrie文件夹从根目录移动到子文件夹id(我确实有正确的id,但在本文中省略了它)。也许我在做这一切都倒退,所以任何帮助将不胜感激 // Create Karrie Folder In Root function start() { var sourceFolder = &quo
// 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);}
我知道脚本中的
MoveFiles()
不起作用。如果我的理解是正确的,这次修改怎么样
修改点:
- 要移动文件夹,需要移动文件夹的父文件夹
- 但是当将
用于该文件夹时,该文件夹有两个父文件夹。addFolder()
- 因此,必须删除原始父级
- 没有
。请使用getFolderByName()
getFoldersByName()
- 在这个脚本中,
的文件夹和父文件夹分别假定Google驱动器中只有一个文件夹和父文件夹“Karrie”
Logger.log(r)
的ID是否显示“Karrie”的文件夹ID
编辑2:
请确认并考虑以下要点:
sample()
并确认文件夹ID为“Karrie”从2020年起,我发现移动文件的更简单方法是使用以下功能:
function moveToFolder(file, sourceFolder, destFolder) {
var file = DriveApp.getFileById(file.getId());
destFolder.addFile(file);
sourceFolder.removeFile(file);
}
由于第一行,您可以将电子表格
、谷歌表单
、文档
或其他谷歌对象转换为文件
然后我们只使用文件夹
类的方法:
注:
- 如果您使用
创建文件,则sourceFolder将是.create()
DriveApp.getRootFolder()
- 如果要移动多个文件,只需对它们进行迭代即可
Logger.log(r)
的ID是否显示“Karrie”的folderId?否,我使用调试器运行脚本,但未返回任何内容
function sample() {
var r = DriveApp.getFoldersByName("Karrie").next().getId();
Logger.log(r)
}
function moveToFolder(file, sourceFolder, destFolder) {
var file = DriveApp.getFileById(file.getId());
destFolder.addFile(file);
sourceFolder.removeFile(file);
}