2

我在Google雲端硬盤中創建了一個文件夾,例如測試,並把3個文件裏面Google電子表格中Google驅動器中的參考文件

a.jpg, b.jpg, c.jpg 

我想在同一賬戶下我的谷歌電子表格,訪問文件,例如生成圖像文件的鏈接,這可能嗎?

例如

ColA  ColB 
a.jpg [generate link to a.jpg in drive] 
a.jpg [generate link to b.jpg in drive] 
a.jpg [generate link to c.jpg in drive] 
+0

使用:imgur.com/dropbox? - 我有一個快速的看,並沒有看起來是一個你想要的選項。 – eddyparkinson

回答

2

是可能的。 Google針對「谷歌驅動器上的主機網站」獲取詳細說明。 基本上首先共享該文件夾作爲公衆,其網址複製文件夾ID,並作出新的URL googledrive.com/host/folderid/a.jpg

2

隨着GScripts您可以使用下面的函數來創建/修改文件:

這一個創建具有所有文件夾名稱和所有相應的URL的新電子表格(無標頭)

function mapAllFiles() { 
    var values = []; 
    var folders = DriveApp.getFoldersByName("FOLDER_NAME"); 
    while (folders.hasNext()) { 
    var folder = folders.next(); 
    var files = folder.getFiles(); 
    // Looping over all files in all folders with the given name 
    while (files.hasNext()) { 
     var file = files.next(); 
     Logger.log(file.getName()); 
     var fileInfo = [file.getName(), file.getDownloadUrl()]; 
     Logger.log(fileInfo); 
     values.push(fileInfo); 
     // values.push(file.getDownloadUrl()); 
    } 
    } 
    // To use an exiting spreadsheet 
    // var sFile = DriveApp.getFilesByName("YOUR_SPREADSHEET_NAME"); 
    // var as = SpreadsheetApp.openById(sFile.next().getId()); 
    // Create a new spreadsheet 
    var as = SpreadsheetApp.create("YOUR_SPREADSHEET_NAME"); 
    var sheet = as.getActiveSheet(); 
    // Fill in all values 
    var range = sheet.getRange(1, 1, values.length, 2).setValues(values); 
} 

這一個列表用於在電子表格中給定的文件名,其是存在於文件夾中的網址

function mapListedFiles() { 
    var values = []; 
    var folders = DriveApp.getFoldersByName("FOLDER_NAME"); 

    if (folders.hasNext()) { 
    var folder = folders.next(); 

    var sFile = DriveApp.getFilesByName("YOUR_SPREADSHEET_NAME"); 
    var as = SpreadsheetApp.openById(sFile.next().getId()); 
    // var as = SpreadsheetApp.create("YOUR_SPREADSHEET_NAME"); 
    var sheet = as.getActiveSheet(); 
    var range = sheet.getRange(2,1,sheet.getDataRange().getLastRow(), 1).getValues(); 
    for (var i = 0; i < range.length-1; i++) { 
     var files = folder.getFilesByName(range[i]); 
     Logger.log(files); 
     if (files.hasNext()) { 
     var file = files.next(); 
     Logger.log(file.getName()); 
     Logger.log(file.getDownloadUrl()); 
     values.push([file.getDownloadUrl()]); 
     } else { 
     values.push(["MISSING"]); 
     } 
    } 
    var range = sheet.getRange(2, 2, values.length, 1).setValues(values); 
    } 
} 
+0

我使用了MapAllFiles函數,它'工作'生成文件名和URL的電子表格,但下載URL無效 - 只給了一個沒有消息的空白瀏覽器窗口。 我做了一個簡單的改變,使用getId()來返回文件ID並在https://drive.google.com/uc?export=download&id=製作了一個可用的下載網址 – MymsMan

0

這是一個主要的方式來做到這一點(無需編程)。稍後,您可以以任何您希望的方式自動執行此過程。

  1. 使用谷歌雲端硬盤API:轉到谷歌雲端硬盤文件API例子(您可能需要在谷歌開發者門戶網站進行額外的註冊步驟):https://developers.google.com/drive/v2/reference/files/list#try-it
  2. 過濾的文件夾中的所有文件:在「q」 字段將字符串:

    '0B6eKcFRCDRT2NjRGbDYxODlTMFE' in parents and trashed = False

    其中0B6eKcFRCDRT2NjRGbDYxODlTMFE是你IMAG文件夾的文件ID (位於Google雲端硬盤網絡用戶界面中時,您可以在導航到該文件夾​​時在URL中查看此標識符)。

  3. 你需要提取的字段:在 「域」 字段將字符串:

    items(alternateLink,title)

  4. 認證:點擊「授權使用OAuth 2請求。0" 切換在右上角,並允許您的谷歌接盤
  5. 發出API請求:點擊‘執行’
  6. 獲取JSON格式的響應:向下滾動,並複製響應之後的片段"items":,方括號(包括它們)之間例如:

    [ { "alternateLink": "https://...", "title": "Links to files" }, { "alternateLink": "https://...", "title": "shanghai.jpg" }, { "alternateLink": "https://...", "title": "map.JPG" }, { "alternateLink": "https://...", "title": "London_2008.jpg" }, { "alternateLink": "https://...", "title": "graph.png" }, { "alternateLink": "https://...", "title": "chart_1.png" } ]

  7. 轉換JSON來CSV:粘貼此片段與以下Web PA GE:http://konklone.io/json/ - 它會生成一個表:

    enter image description here

  8. 使用CSV,因爲你需要:複製此表並粘貼到您的谷歌電子表格。