谷歌电子表格得到URL
文件名我有近2000行URL的谷歌电子表格文件,如这一个: https://docs.google.com/uc?id=0B4ptELk-D3USblk1aWd1OWowRWs谷歌电子表格得到URL
每个URL包含一个图像,存储在谷歌驱动器。我的问题是:如何将此链接(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
。
此功能可以从脚本运行,而不是直接从电子表格运行。当您尝试使用它作为表自定义公式,它抛出错误:
You do not have permission to call getFileById (line 8).
因此,更好地利用它从脚本来获取数据,然后将结果写在纸张上。
我运行脚本。当我尝试使用TESTgetFileName和getFileName时,出现以下错误:“您无权调用getFileById(第8行)。”对于getFolders,我得到以下内容:'TypeError:在对象0B4ptELk-D3USVi1NZ3ZGbkhqYXc中找不到函数getParents。 (第16行)。' –
我测试了这个函数。请参阅答案 –
中的**测试**事实上,它的工作原理来自脚本编辑器。无论如何有它在工作表上工作?我有近2000行的链接,这将很难一一运行。如果有一种方法可以在工作表上运行,则可以将结果显示在列A中网址旁边的柱B中。 –
尝试使用脚本:[驱动器应用程序](https://developers.google.com/apps-script/reference/drive/drive-app),[相关的Q上](http://stackoverflow.com/问题/ 25684098/how-to-make-a-list-on-google-spreadsheet-of-all-files-in-a-google-drive-folder) –
这个excel对应于一个表单。每行都有唯一项目的URL(图片)。列出所有文件是不够的,因为我无法将每一行映射到它的相应URL(从而丢失每行的有用信息)。 –
请给予访问任何文件,以便我可以测试脚本。我的文件具有如下链接:'https://drive.google.com/file/d/ key ...',所以我不确定代码是否适用于链接:https://docs.google.com/ uc?id = ...' –