【发布时间】:2018-10-27 11:16:57
【问题描述】:
我一直在努力寻找解决方案,但现在是时候寻求帮助了 :)
目标:根据文档的名称,将 G Drive 中存储的特定 PDF 文档的超链接添加到 google sheet 列中的所有单个单元格。
我更好地解释自己。这里有截图:
图纸布局
我正在尝试将 A 列中的单元格内容替换为超链接(保持链接标签不变)。超链接应指向 google 驱动器中的文档,其中文件名包含此电子表格中相关单元格中显示的名称。
函数应该在(对于列 A 的每个值)查找 G Drive 文件夹中的文件(所有文档都在其中),其名称包含该值单元格的(单元格只有发票编号,如屏幕截图中的那个,而文件还有“Invoice-”在编号前并以“.pdf”结尾)。如果匹配,则应将每个单元格值替换为指向相关文档的超链接,同时将单元格值保持为链接标签。
抱歉,描述太长了。
我能够创建一个完全满足我需要的一行的函数。对我来说,问题是要了解如何为每一行执行此操作,以及如何与谷歌驱动器中的相关文档进行“搜索和匹配”。
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+'")');
}
}
【问题讨论】:
-
在while循环中创建一个包含
{fullname: "url"}的临时对象。然后你可以在临时对象中查找'Invoice'+fullname+'.pdf'的url。 -
感谢@TheMaster 的帮助!请原谅我的无知(我正在学习 JS 和 Google 脚本),但我不认为我在关注你。你能详细说明你的答案吗?谢谢大佬!
标签: google-apps-script google-sheets google-drive-api