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


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: |

Since its launch in 2013, Telegram has grown from a simple messaging app to a broadcast network. Its user base isn’t as vast as WhatsApp’s, and its broadcast platform is a fraction the size of Twitter, but it’s nonetheless showing its use. While Telegram has been embroiled in controversy for much of its life, it has become a vital source of communication during the invasion of Ukraine. But, if all of this is new to you, let us explain, dear friends, what on Earth a Telegram is meant to be, and why you should, or should not, need to care. A Russian Telegram channel with over 700,000 followers is spreading disinformation about Russia's invasion of Ukraine under the guise of providing "objective information" and fact-checking fake news. Its influence extends beyond the platform, with major Russian publications, government officials, and journalists citing the page's posts. Telegram has become more interventionist over time, and has steadily increased its efforts to shut down these accounts. But this has also meant that the company has also engaged with lawmakers more generally, although it maintains that it doesn’t do so willingly. For instance, in September 2021, Telegram reportedly blocked a chat bot in support of (Putin critic) Alexei Navalny during Russia’s most recent parliamentary elections. Pavel Durov was quoted at the time saying that the company was obliged to follow a “legitimate” law of the land. He added that as Apple and Google both follow the law, to violate it would give both platforms a reason to boot the messenger from its stores. READ MORE "We're seeing really dramatic moves, and it's all really tied to Ukraine right now, and in a secondary way, in terms of interest rates," Octavio Marenzi, CEO of Opimas, told Yahoo Finance Live on Thursday. "This war in Ukraine is going to give the Fed the ammunition, the cover that it needs, to not raise interest rates too quickly. And I think Jay Powell is a very tepid sort of inflation fighter and he's not going to do as much as he needs to do to get that under control. And this seems like an excuse to kick the can further down the road still and not do too much too soon."
from sg


Telegram LawCoder
FROM American