Google apps script 防止创建重复的Google文件夹

Google apps script 防止创建重复的Google文件夹,google-apps-script,google-sheets,google-drive-api,google-docs,google-forms,Google Apps Script,Google Sheets,Google Drive Api,Google Docs,Google Forms,下面的两个脚本生成一个新文件夹,其中包含一个基于谷歌表单答案的新文档 需要帮助,如果有人知道如何防止创建重复文件夹 CreateChannelFolder(): 这是表单提交时的第一个触发器,并创建一个 在我的例子中,是以“通道名称”命名的,该名称位于 谷歌表单链接到表单 自动填充GoogleDocFromForm(e):' 这是表单提交的第二个触发器,并创建 模板文档,然后填写来自基于谷歌表单的答案 在链接到表单的Google工作表的行上 解决方案: 您可以检查具有该名称的文件夹是否存在,否

下面的两个脚本生成一个新文件夹,其中包含一个基于谷歌表单答案的新文档

需要帮助,如果有人知道如何防止创建重复文件夹


CreateChannelFolder():

这是表单提交时的第一个触发器,并创建一个 在我的例子中,是以“通道名称”命名的,该名称位于 谷歌表单链接到表单

自动填充GoogleDocFromForm(e):'

这是表单提交的第二个触发器,并创建 模板文档,然后填写来自基于谷歌表单的答案 在链接到表单的Google工作表的行上

解决方案: 您可以检查具有该名称的文件夹是否存在,否则不要创建它两次。修改
createChannelFolder()
如下:

function createChannelFolder() {
    var ss = SpreadsheetApp.getActive();
    var names = ss.getSheetByName("SHEETNAME");
    var ChannelName = names.getRange(names.getLastRow(), 2).getValue(); 

    var folders = DriveApp.getFoldersByName(ChannelName);
    while (folders.hasNext()) { 
    folder = folders.next();    
    if(folder.getName()==ChannelName){
     return folder;}
    }
    var parentFolder=DriveApp.getFolderById("FOLDERID");
    return parentFolder.createFolder(ChannelName);         
}

可复制示例: 下面的代码段创建并返回一个名为
test
的新文件夹。如果后者已经存在,它不会创建新的,而是返回现有的

function createChannelFolder() {

    var ChannelName = "test";
    var folders = DriveApp.getFoldersByName(ChannelName);
    while (folders.hasNext()) { 
    folder = folders.next();    
    if(folder.getName()==ChannelName){
     return folder;}
    }
    var parentFolder=DriveApp.getFolderById("folderID");
    return parentFolder.createFolder(ChannelName);         
}
限制:
  • 如果您有多个同名文件夹(
    ChannelName
    ),则 代码将返回找到的第一个文件夹。为了 要使代码正常工作,您需要删除所有重复的代码 文件夹,反正你不需要,因为这是你想避免的东西

再次感谢Marios,但这似乎不起作用,我正在设法避免这种情况,但看到一些其他类似的报告,我无法从中实施解决方案@EwanFarry我认为问题是您已经有了重复的文件夹。请在使用我的解决方案之前删除它们。还请检查我的更新答案(我添加了带有限制的部分)。另外,由于文档方面的原因,如果答案是有用的,请接受答案并考虑投票。嗨,马里奥斯,我想我误解了触发器的功能,每一个脚本都有一套。只用一个扳机就搞定了!非常感谢你的帮助!
function createChannelFolder() {
    var ss = SpreadsheetApp.getActive();
    var names = ss.getSheetByName("SHEETNAME");
    var ChannelName = names.getRange(names.getLastRow(), 2).getValue(); 

    var folders = DriveApp.getFoldersByName(ChannelName);
    while (folders.hasNext()) { 
    folder = folders.next();    
    if(folder.getName()==ChannelName){
     return folder;}
    }
    var parentFolder=DriveApp.getFolderById("FOLDERID");
    return parentFolder.createFolder(ChannelName);         
}
function createChannelFolder() {

    var ChannelName = "test";
    var folders = DriveApp.getFoldersByName(ChannelName);
    while (folders.hasNext()) { 
    folder = folders.next();    
    if(folder.getName()==ChannelName){
     return folder;}
    }
    var parentFolder=DriveApp.getFolderById("folderID");
    return parentFolder.createFolder(ChannelName);         
}