function populateFoldersProjects()

in apps_script/customLoad.js [17:43]


function populateFoldersProjects(folderRangeName, writeRangeTitle) {
  let [fldr_header, fldr] = readNamedRange(folderRangeName)
  let folderProjectSet = new Set();
  let levels = fldr_header.indexOf("project")

  for (let i = 0; i < fldr.length; i++) {
    const row = fldr[i];
    for (let j = 0; j < levels; j++) {
      if ((i > 0 && !row[j]) &&
        ((j > 0 && row[j - 1] === fldr[i - 1][j - 1]) || j === 0)) {
        row[j] = fldr[i - 1][j];
      }
    }
    let project = row[levels]
    let rowFolders = row.slice(0, levels).filter(Boolean)
    let folderPaths = rowFolders.map((s, i) => '/' + rowFolders.slice(0, i + 1).join('/'))
    folderPaths.forEach(item => folderProjectSet.add(item))
    if (project) {
      folderProjectSet.add(project)
    }
  }
  folderProjectSet.add('/')
  let folderRows = Array.from(folderProjectSet).toSorted().map(item => [item]);
  console.log(folderRows)
  clearContentColumn(writeRangeTitle, 100)
  writeRange(folderRows, writeRangeTitle)
}