Я некоторое время пытался найти решение, но теперь пришло время обратиться за помощью:)
Цель : добавить гиперссылки на определенные документы PDF, хранящиеся в G Drive, на все отдельные ячейки в столбце на странице Google в зависимости от названия документа.
Я лучше объясню. Вот вам скриншот:
Схема листа
Я пытаюсь заменить содержимое ячеек в столбце А гиперссылкой (с сохранением метки ссылки в том виде, в каком она есть) . Гиперссылка должна указывать на документ на диске Google, где имя файла содержит имя, отображаемое в соответствующей ячейке этой таблицы.
Функция должна искать (для каждого значения столбца A) для файла в папке G Drive (где находятся все документы) с именем, содержащим значение ячейка (в ячейке указан только номер счета-фактуры, как на снимке экрана, в то время как в файле также есть «Счет-фактура» перед номером и заканчивается «.pdf») . Если есть совпадение, каждое значение ячейки должно быть заменено гиперссылкой, указывающей на относительный документ, сохраняя значение ячейки как метку ссылки.
Извините за длинное описание.
Мне удалось создать функцию, которая делает именно то, что мне нужно для одной строки. Проблема для меня состоит в том, чтобы понять, как сделать это для каждой строки и как выполнить «поиск и сопоставление» с соответствующим документом на диске Google.
function invoiceLinking() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// set active sheet to the second tab of the spreadsheet
var activeSheet = ss.getSheets()[1];
var data = activeSheet.getDataRange().getValues();
var invoiceNumber = activeSheet.getRange(2,1).getValue();
// get the drive folder containing the invoices by ID
var folder = DriveApp.getFolderById("----Folder ID ----");
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
var fullname = file.getName();
var url = file.getUrl();
}
// check if the number of the invoice in the cell is contained in the name of the PDF file in the folder
// applies an hyperlink to the realitve PDF to the cell with invoice number
if (fullname.indexOf(invoiceNumber) !== -1 ) {
activeSheet.getRange(2,1).setValue('=HYPERLINK("'+url+'","'+invoiceNumber+'")');
}
}