2017-03-01 118 views
2

文件名我有近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 = ...' –

回答

0

嘗試腳本:

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中。 –