Telegram Group & Telegram Channel
Сегодня в 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());
}
}
🔥10👍5



group-telegram.com/law_coder/181
Create:
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


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

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

These entities are reportedly operating nine Telegram channels with more than five million subscribers to whom they were making recommendations on selected listed scrips. Such recommendations induced the investors to deal in the said scrips, thereby creating artificial volume and price rise. And indeed, volatility has been a hallmark of the market environment so far in 2022, with the S&P 500 still down more than 10% for the year-to-date after first sliding into a correction last month. The CBOE Volatility Index, or VIX, has held at a lofty level of more than 30. The Russian invasion of Ukraine has been a driving force in markets for the past few weeks. Telegram users are able to send files of any type up to 2GB each and access them from any device, with no limit on cloud storage, which has made downloading files more popular on the platform. Following this, Sebi, in an order passed in January 2022, established that the administrators of a Telegram channel having a large subscriber base enticed the subscribers to act upon recommendations that were circulated by those administrators on the channel, leading to significant price and volume impact in various scrips.
from it


Telegram LawCoder
FROM American