谷歌电子表格得到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。

有没有办法做到这一点?

+0

尝试使用脚本:[驱动器应用程序](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) –

+0

这个excel对应于一个表单。每行都有唯一项目的URL(图片)。列出所有文件是不够的,因为我无法将每一行映射到它的相应URL(从而丢失每行的有用信息)。 –

+0

请给予访问任何文件,以便我可以测试脚本。我的文件具有如下链接:'https://drive.google.com/file/d/ key ...',所以我不确定代码是否适用于链接:https://docs.google.com/ uc?id = ...' –

尝试脚本:

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).

因此,更好地利用它从脚本来获取数据,然后将结果写在纸张上。

+0

我运行脚本。当我尝试使用TESTgetFileName和getFileName时,出现以下错误:“您无权调用getFileById(第8行)。”对于getFolders,我得到以下内容:'TypeError:在对象0B4ptELk-D3USVi1NZ3ZGbkhqYXc中找不到函数getParents。 (第16行)。' –

+0

我测试了这个函数。请参阅答案 –

+0

中的**测试**事实上,它的工作原理来自脚本编辑器。无论如何有它在工作表上工作?我有近2000行的链接,这将很难一一运行。如果有一种方法可以在工作表上运行,则可以将结果显示在列A中网址旁边的柱B中。 –