создание вложенной папки при создании родительской папки

#google-apps-script #google-sheets

Вопрос:

можно ли добавить вложенные папки (с заданными именами) при создании новой папки с помощью скрипта

 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 amp; 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);  }); } }  

то, что я хотел бы, чтобы произошло, когда будет создана новая родительская папка, подпапки с надписью «Цитата», Детализация, Доставка, которая должна быть создана одновременно

спасибо вам за вашу помощь

Ответ №1:

В вашей ситуации, как насчет того, чтобы изменить свой сценарий следующим образом?

От:

 } else  folder = root.createFolder(name);  

Для:

 } else {  folder = root.createFolder(name);  ["Quote", "Detailing", "Delivery"].forEach(function(e) {  folder.createFolder(e);  }); }  
  • В этой модификации, используя folder в своем сценарии, создаются подпапки с именами папок «Цитата», «Детализация», «Доставка» folder .
  • Из вашего сценария я беспокоюсь, что вы можете отключить среду выполнения V8. Так что я использовал forEach(function(e) {}) . Если вы используете среду выполнения V8, вы также можете использовать следующий сценарий.
     ["Quote", "Detailing", "Delivery"].forEach(e =gt; folder.createFolder(e));  

Комментарии:

1. спасибо @Tanaike, решение сработало, но теперь гиперссылка, вставленная в ячейку, отображается как неопределенная

2. @banksie Спасибо, что ответили. Я приношу извинения за причиненные неудобства. О now the hyperlink that's inserted into the cell comes up as undefined , к сожалению, я не могу повторить вашу ситуацию. Когда я тестировал измененный скрипт, гиперссылка создавалась с URL-адресом созданной родительской папки. Это связано с моим плохим мастерством. Я глубоко извиняюсь за это. Например, при удалении return folder.getUrl(); возникает такая проблема. Можете ли вы подтвердить это еще раз? И можете ли вы предоставить весь свой текущий сценарий для репликации вашей проблемы? Этим я хотел бы подтвердить это.

3. я обновил сообщение с полным скриптом папки спасибо за вашу помощь

4. Мне удалось устранить проблему, вставив в скрипт return folder.getURL(); спасибо за вашу помощь