Задать вопрос
@mUchenik

Как настроить подтягивание данных?

Привет всем!
Подскажите пожалуйста, возможно ли реализовать такую штуку:
Есть папка "Главная"
Есть папка "С подпапками"
В папке "Главная" есть файл "Все подпапки"
В файле список подпапок (желательно с датами создания + ссылки на подпапку)
Идея в следующем:
Если я в папке "С подпапками" создаю подпапку, то в файл "Все подпапки" автоматически прописывается название подпапки + дата создания + ссылка на подпапку.

Ну и от обратного:
Если я в файле "Все подпапки" в свободной ячейке по порядку, прописываю какое либо название, то в папке "С подпапками" появляется подпапка с соответствующим именем.

Понимаю, что звучит как бред, но вдруг реально каким то образом...
Спасибо
Реально ли такое реализовать?
  • Вопрос задан
  • 252 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
shebanits
@shebanits
1. Создайте простую таблицы
600ff0b05eb84698106396.png
2. Скопируйте в переменную ID переменную вашей главной папки.
3. С помощью функции downloadData() загрузите в таблицу данные о вложенных папках.
4. Чтобы создать папку напишите название папки в столбике folder name и запустите функцию createFolder().
600ff1aaea441717717040.png
let ID = "<id вашей папки>";

function createFolder() {
  let mainFolder = DriveApp.getFolderById(ID);
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let foldersNames = sheet.getRange(2, 1, sheet.getLastRow(), 3).getValues();
  let folders = mainFolder.getFolders();
  let arr = [];

  while (folders.hasNext()) {
    let folder = folders.next();
    arr.push({
      "name": folder.getName(),
      "folderID": folder.getId(),
      "lastUpdated": folder.getLastUpdated()
    })
  }

  let res = arr.map(item => item.name);

  foldersNames.forEach((el, index) => {
    if (typeof el[0] === "string" && res.indexOf(el[0]) === -1 && el[0] != "") {
      let nFolder = mainFolder.createFolder(el[0]);
      sheet.getRange(index + 2, 2, 1, 2).setValues([[nFolder.getId(), nFolder.getLastUpdated()]]);
console.log(`New folder created! 
name: ${el[0]}
creation date: ${nFolder.getLastUpdated()}
`)
    }

  })

}

function downloadData() {
  let mainFolder = DriveApp.getFolderById(ID);
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let foldersNames = sheet.getRange(2, 1, sheet.getLastRow(), 3).getValues().map(item => item[0]);
  let folders = mainFolder.getFolders();
  let arr = [];

  while (folders.hasNext()) {
    let folder = folders.next();
    arr.push({
      "name": folder.getName(),
      "folderID": folder.getId(),
      "lastUpdated": folder.getLastUpdated()
    })
  }

  arr.forEach(el => {
    if (foldersNames.indexOf(el.name) === -1 && foldersNames.indexOf(el.folderID) === -1) {
      sheet.getRange(sheet.getLastRow() + 1, 1, 1, 3).setValues([[el.name, el.folderID, el.lastUpdated]]);
    }
  })
  console.log(arr)
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы