Warning: mkdir(): No space left on device in /var/www/group-telegram/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/law_coder/--): Failed to open stream: No such file or directory in /var/www/group-telegram/post.php on line 50
LawCoder | Telegram Webview: law_coder/181 -
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

❌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

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

The original Telegram channel has expanded into a web of accounts for different locations, including specific pages made for individual Russian cities. There's also an English-language website, which states it is owned by the people who run the Telegram channels. On December 23rd, 2020, Pavel Durov posted to his channel that the company would need to start generating revenue. In early 2021, he added that any advertising on the platform would not use user data for targeting, and that it would be focused on “large one-to-many channels.” He pledged that ads would be “non-intrusive” and that most users would simply not notice any change. Founder Pavel Durov says tech is meant to set you free Channels are not fully encrypted, end-to-end. All communications on a Telegram channel can be seen by anyone on the channel and are also visible to Telegram. Telegram may be asked by a government to hand over the communications from a channel. Telegram has a history of standing up to Russian government requests for data, but how comfortable you are relying on that history to predict future behavior is up to you. Because Telegram has this data, it may also be stolen by hackers or leaked by an internal employee. Two days after Russia invaded Ukraine, an account on the Telegram messaging platform posing as President Volodymyr Zelenskiy urged his armed forces to surrender.
from sg


Telegram LawCoder
FROM American