Сегодня, когда я перечисляю имена и файлы папки Google Drive в Google Sheets, я использую этот сценарий:
function listFolderContents() {
//Squads
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('Import!A3:B').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
var foldername = 'My Files';
var folderlisting = 'listing of folder ' + foldername;
var folders = DriveApp.getFoldersByName(foldername)
var folder = folders.next();
var contents = folder.getFiles();
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var file;
var name;
var link;
var row;
while(contents.hasNext()) {
file = contents.next();
name = file.getName();
link = file.getUrl();
sheet.appendRow( [name, link] );
}
spreadsheet.getRange('Files!Q3:R').activate();
spreadsheet.getRange('Import!A3:B').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('Import!A3:B').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
Что происходит, когда при использовании этого метода каждое имя и ссылка отображаются в одной строкеза один раз, чтобы завершить сценарий, потребуется много времени. Представьте, что вы, например, заполняете по одной строке 300 файлов в папке.
Я хотел бы знать, что я должен изменить и как должен выглядеть этот скрипт, чтобы этот процесс стал быстрее, собирать сразу изаполняйте ячейки сразу, как это делается, например, при импорте файлов CSV. Это заполняет все клетки сразу.