首页 > 解决方案 > 创建父文件夹时创建子文件夹

问题描述

通过脚本创建新文件夹时是否可以添加子文件夹(具有预设名称)

function createFolder() {
  const parent = DriveApp.getFolderById("1Cyki5N4HBaKWo7fs1Ye3PVjl8KeEdOPs");
  const sheet = SpreadsheetApp.getActive().getSheetByName('Detailing');
  const range = sheet.getRange(2, 1, sheet.getLastRow() - 2);
  range.getValues().forEach(function (row, index) {
    // Consider checking if this r & c has a formula in the equal size array from getFormulas()
    if(row[0]) {
      var newLink = getLinkForFolderName_(parent, row[0]);
      // Use the current array index to write this formula in only the correct cell.
      range.offset(index, 0, 1).setFormula(
        "HYPERLINK(\"" + newLink + "\", \"" + row[0] + "\")"
      );
    }
  });
}

function getLinkForFolderName_(root, name) {
  var folder;
  const search = root.getFoldersByName(name);
  if (search.hasNext()) {
    folder = search.next();
    if (search.hasNext())
      console.warn("Multiple folders named '" + name + "' in root folder '" + root.getName() + "'");
  }
  else {
  folder = root.createFolder(name);
  ["Quote", "Detailing", "Delivery"].forEach(function(e) {
    folder.createFolder(e);
  });
}
}

我想要发生的是在创建新的父文件夹时,同时创建标有报价、详细信息、交付的子文件夹

谢谢您的帮助

标签: google-apps-scriptgoogle-sheets

解决方案


在您的情况下,如何修改您的脚本如下?

从:

}
else
  folder = root.createFolder(name);

至:

} else {
  folder = root.createFolder(name);
  ["Quote", "Detailing", "Delivery"].forEach(function(e) {
    folder.createFolder(e);
  });
}
  • 在此修改中,folder在您的脚本中使用文件夹名称为“Quote”、“Detailing”、“Delivery”的子文件夹创建在folder.

  • 从您的脚本中,我担心您可能会禁用 V8 运行时。所以我用forEach(function(e) {}). 如果您使用的是 V8 运行时,您还可以使用以下脚本。

      ["Quote", "Detailing", "Delivery"].forEach(e => folder.createFolder(e));
    

推荐阅读