#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(); спасибо за вашу помощь