group-telegram.com/law_coder/181
Last Update:
Сегодня в 10.01. Ирина Панкова автор канала "Матерый инхаус" публикует пост с инструкцией как с помощью excel таблицы и такой-то матери скрипта VBA сделать реестр файлов папке. Довольно частая рутинная задача для юриста.
Вы знаете, что мимо таких штук я мимо не прохожу. Сразу делаю аналог на GAS и вам показываю. И обычно это занимало у меня немало времени. Полдня мог легко убить на написание работающего скрипта. А потом же еще инструкцию как этим пользоваться для вас писать.
Вайбкодинг изменил это в корне. Прочитал пост. Взял инструкцию из него. Кинул чатугпт с просьбой сделать тоже самое, но на GAS. В 10.25 (24 минуты с момента публикации поста) у меня есть работающее решение из таблицы. По сути этот пост я дольше пишу, чем потратил времени на разработку.
Вот работающий код:
/**
* onOpen — создаёт в меню Таблицы пункт для запуска нашего скрипта
*/
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Файлы')
.addItem('Список файлов на Диске…', 'showFolderPrompt')
.addToUi();
}
/**
* Вызывается из меню, запрашивает у пользователя ID папки и запускает основной обход
*/
function showFolderPrompt() {
var ui = SpreadsheetApp.getUi();
var response = ui.prompt(
'Список файлов',
'Введите ID папки на Google Диске:',
ui.ButtonSet.OK_CANCEL
);
if (response.getSelectedButton() != ui.Button.OK) {
ui.alert('Отмена');
return;
}
var folderId = response.getResponseText().trim();
if (!folderId) {
ui.alert('Пустой ID — отмена.');
return;
}
listFiles(folderId);
ui.alert('Готово!');
}
/**
* Основная функция: создаёт новый лист и запускает рекурсию
* @param {string} folderId — ID папки на Google Диске
*/
function listFiles(folderId) {
var folder;
try {
folder = DriveApp.getFolderById(folderId);
} catch (e) {
SpreadsheetApp.getUi().alert('Не удалось открыть папку: ' + e.message);
return;
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = 'Список ' + folder.getName();
// Если лист с таким именем уже есть, удаляем его
var existing = ss.getSheetByName(sheetName);
if (existing) ss.deleteSheet(existing);
// Создаём новый лист и пишем заголовки
var sheet = ss.insertSheet(sheetName);
var headers = ['Имя файла', 'Путь', 'Размер (байт)', 'Дата создания', 'Дата изменения'];
sheet.appendRow(headers);
// Запускаем рекурсивный обход
listFilesInFolder_(folder, sheet, folder.getName());
sheet.autoResizeColumns(1, headers.length);
}
/**
* Рекурсивно обходит папку и записывает информацию о файлах.
* @param {Folder} folder Текущая папка DriveApp
* @param {Sheet} sheet Лист для вывода
* @param {string} pathSoFar Путь от корня (для первого вызова — имя корневой папки)
*/
function listFilesInFolder_(folder, sheet, pathSoFar) {
// Перебор файлов
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
sheet.appendRow([
file.getName(),
pathSoFar,
file.getSize(),
file.getDateCreated(),
file.getLastUpdated()
]);
}
// Перебор вложенных папок
var subfolders = folder.getFolders();
while (subfolders.hasNext()) {
var sub = subfolders.next();
listFilesInFolder_(sub, sheet, pathSoFar + '/' + sub.getName());
}
}
BY LawCoder
❌Photos not found?❌Click here to update cache.
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/law_coder/181