我有一个Google电子表格文件,其中包含将近2000行的URL,例如:
https://docs.google.com/uc?id=0B4ptELk-D3USblk1aWd1OWowRWs
每个URL包含一个图像,存储在Google云端硬盘中。我的问题是:如何将此链接(https://docs.google.com/uc?id=0B4ptELk-D3USblk1aWd1OWowRWs
)转换为文件名?例如,我想知道它是否可以是/something/folder/Photofile1.jpg
。
反正有这样做吗?
尝试脚本:
function TESTgetFileName() {
Logger.log(getFileName('0B4ptELk-D3USVi1NZ3ZGbkhqYXc'));
// ^^^^^^^^^^ file ID ^^^^^^^^^
}
function getFileName(id) {
var file = DriveApp.getFileById(id);
var fileName = file.getName();
var strFolders = getFolders(file);
return strFolders + '/' + fileName;
}
function getFolders(object) {
var folders = object.getParents();
if (!folders.hasNext()) { return 'My Drive'; }
var folder = folders.next();
var folderNames = [];
while (folder.getParents().hasNext()) {
var folderName = folder.getName();
folderNames.unshift(folderName);
folder = folder.getParents().next();
}
return folderNames.join('/');
}
脚本函数将返回结果:
0B4ptELk-D3USVi1NZ3ZGbkhqYXc → My Drive/something/folder/Photofile1.jpg
测试
我打开了脚本编辑器,选择了函数TESTgetFileName
并获得结果
My Drive/Detalhes_Farmacia.Fotografia_Fachada_1.JPEG
。
此功能可以从脚本运行,而不是直接从电子表格运行。当您尝试将其用作工作表中的自定义公式时,会引发错误:
您无权调用getFileById(第8行)。
因此最好从脚本中使用它来获取数据,然后将结果写入工作表。