- На электронной таблице есть имена папок и имена файлов.
- Эти папки и файлы находятся в указанной папке c.
- Каждое имя является уникальным именем во всех значениях.
- Вы выбираете диапазоны. Например, это «A1: D12» в электронной таблице вашего изображения.
- Вы хотите получить все имена файлов и выполнить поиск файлов по именам файлов.
- Вы хотите заменить полученные значения к формулам гиперссылок файлов.
Из вашего ответа и дополнительной информации, я мог понять, как выше. Если мое понимание верно, как насчет этого примера сценария? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Модифицированный скрипт:
После того, как вы установили идентификатор папки, пожалуйста, выберите диапазон (например, «A1: D12») и запустите функция myFunction()
. При этом имена файлов заменяются формулами гиперссылок.
function myFunction() {
var folderId = "###"; // Please set the folder ID.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var c = s.getActiveRange()
var fldr = DriveApp.getFolderById(folderId);
var values = c.getValues();
var getFiles = function getFiles(folder) {
var folders = folder.getFolders();
while(folders.hasNext()) {
var fol = folders.next();
// for (var i = 0; i < values.length; i++) {
// for (var j = 0; j < values[i].length; j++) {
// values[i][j] = values[i][j] == fol.getName() ? ('=hyperlink("' + fol.getUrl() + '","' + fol.getName() + '")') : values[i][j];
// }
// }
getFiles(fol);
}
var files = folder.getFiles();
while (files.hasNext()) {
var f = files.next();
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
values[i][j] = values[i][j] == f.getName() ? ('=hyperlink("' + f.getUrl() + '","' + f.getName() + '")') : values[i][j];
}
}
}
}(fldr);
if (values.length > 0) {
s.getRange(c.getRow(), c.getColumn(), values.length, values[0].length).setValues(values);
}
}
Примечание:
Когда используются следующие строки, которые прокомментированы выше, гиперссылки на папки также ставятся.
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
values[i][j] = values[i][j] == fol.getName() ? ('=hyperlink("' + fol.getUrl() + '","' + fol.getName() + '")') : values[i][j];
}
}
Если в значениях ячеек и во вложенных папках существуют одинаковые имена файлов и имена папок, то logi c для анализа папок и файлов из значений ячеек не требуется. В вашем дополнительном изображении я не могу понять о логи c. Это из-за моего плохого мастерства. Я прошу прощения за это.