一段时间以来,我一直在寻找解决方案,但是现在该寻求帮助了:)
目标:根据文档名称,将指向G驱动器中存储的特定PDF文档的超链接添加到google工作表列中的所有单个单元格中。
我会更好地解释自己。这里有屏幕截图:
页面布局
我正在尝试用超链接(保持链接标签不变)代替A列中单元格的内容。超链接应指向Google驱动器中的文档,其中文件名包含此电子表格中相对单元格中显示的名称。
该函数应查找(对于A列的每个值)在G Drive文件夹(所有文档所在的位置)中,文件名应包含该值 。(该单元格只有发票编号,如屏幕截图中的一个一样,而文件在编号之前也带有“ Invoice-”,并以“ .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+'")');
}
}
答案 0 :(得分:0)
var range = activeSheet.getRange(2, 1, activeSheet.getLastRow() - 1, 1); //A2:A8
var invoiceNumbers = range.getValues();
var nameUrl = {}; //Object to hold name and Url
/*Fill the nameUrl*/
while (files.hasNext()) {
var file = files.next();
var fullname = file.getName();
var url = file.getUrl();
nameUrl[fullname] = url;
}
var links = invoiceNumbers.map(function(e) {
return [
'=HYPERLINK("' + nameUrl['Invoice-' + e[0] + '.pdf'] + '","' + e[0] + '")'
];
});
range.setValues(links);