2013年10月17日

Google Drive 取得檔案外連網址及下載網址的簡易方法__原理分析及案例整理

A+

(Pic from: softicons.com)
在「取代 Google Code 外連 js 檔的選擇__Google Drive」這篇文章的「四、Google Drive 取得檔案外連的簡易方法及範例」,已經介紹過取得檔案外連路徑的簡易方法。不過 +Mark X  曾告知 "我發現我使用的版本沒有主機位置這項"、"試傳一張圖片, 還是沒有. 是因為我用英文版本嗎?"。

當時以為可能是版本不同造成的問題,不過後來 PTT Google 版也有網友反應類似狀況,所以看來不是版本的問題。經過測試後找到了真正原因,以下說明原理、及取得檔案外連路徑的可行步驟,且一併整理不能顯示檔案外連路徑的各種狀況。


2014.11.21 公告:如果你的 Google Drive 已經升級為最新版的介面,請使用這篇「Google Drive 外連產生器__一秒鐘輕鬆複製連結」。


一、Google Drive 外連檔案路徑的原理


1. 失效狀況

按照「前文」的方法來取得外連路徑,經過測試之後發現:

  • 只要是將檔案上傳到根目錄,無論是否設定為公開,都無法顯示外連路徑

但是依照前文「三、Google Drive 的操作」的步驟,所有上傳到資料夾的 js 檔,明明都能顯示外連路徑,怎麼會這樣呢?


2. 外連檔案路徑的原理

以我的這個檔案「translate.js」為例,其外連網址為:

https://googledrive.com/host/0BykclfTTti-0SlU3SDg5RUVtNlk/translate.js

經分析以上網址後可發現其結構,https://googledrive.com/host/0BykclfTTti-0SlU3SDg5RUVtNlk/ 這個字串為資料夾路徑,translate.js 這個字串為檔名,這是一個「結構式外連路徑」。想要測試的話,可將 https://googledrive.com/host/0BykclfTTti-0SlU3SDg5RUVtNlk/ 貼到網址,就會顯示該資料夾的所有檔案。

那麼真相就呼之欲出了,如果我將 translate.js 上傳到根目錄,這個檔案的外連路徑不可能變成 https://googledrive.com/host/translate.js,因為此網址無法判斷出是那個使用者的檔案,難怪在根目錄的檔案 Google Drive 不顯示外連網址。

因此,想得到簡易的「結構式外連路徑」,答案就是必須將檔案上傳到資料夾



二、取得外連路徑的正確方法


根據「一、Google Drive 外連檔案路徑的原理」得到的結論,以下為簡單操作步驟說明:

1. 建立資料夾,將資料夾的共用權限設定為「公開在網路上
2. 將檔案上傳(或拖曳)到此資料夾
3. 對著檔案按右鍵,點選「詳細資料」,即可找到外連路徑。

如需要圖文對照說明,請參考「前文」→「三、Google Drive 的操作」→「四、Google Drive 取得檔案外連的簡易方法及範例」即可。



三、各種不能顯示外連路徑的狀況


根據個人的使用經驗,仍然有一些檔案與某些狀況是看不到「結構式外連路徑」的,整理如下:

1. Google Drive 建立的檔案

例如試算表、表單這些由 Google Drive 所建立的檔案,因為另外放在別的伺服器,所以其外連路徑要用別的操作方式取得。如下圖紅框,試算表右上角的「共用」按鈕可取得檔案共用連結。



另外,若想取得試算表中的資料數據,可參考這篇「利用 Google 問卷(試算表)當小型資料庫__(一)製作資料庫


2. 上傳相同檔名的檔案

經測試後,如果上傳相同檔名的檔案(例如 wfu.js),較舊的檔案不會被覆蓋,所有 wfu.js 會並存於 Google Drive,相信這是為了協同作業而設計,保留檔案的更新歷程。如此「結構式外連路徑」將無法對應多個檔案,而導致失效。



在這種情況下,如上圖,按右鍵選擇 "詳細資料"時,所有 wfu.js 都看不到「結構式外連路徑」。

另外要注意的是,就算把所有 wfu.js 全部刪除,額外再上傳一個 wfu.js,仍然無法看到「結構式外連路徑」!所以必須避免上傳相同檔名的檔案



四、提供下載的外連網址


2014.2.4 補充:以上談的都是「檔案外連網址」,適合外連的 js、CSS 這類檔案,或直接將 PDF、DOC 等展示在網頁上的檔案。

不過當我們要提供訪客下載的檔案時,就不能用外連網址了,必須另外使用專門下載的網址。關於這個部份,可參考這篇「Google Drive 共用檔案連結,轉換成直接下載連結」製作一個快速轉換書籤。


Google Drive 相關心得:

8 則留言:

  1. '2. 上傳相同檔名的檔案'
    是否唯有將整個資料夾delete,再另開一個新的資料夾,才會出現結構式外連路徑?

    回覆刪除
  2. <411978119995139935>(以上內容請勿刪除,從括號之後開始留言)我的意思是 "同一個資料夾" 內不要上傳相同檔名的檔案。不同資料夾當然就沒關係啦~

    回覆刪除
  3. 我的原因則是一開始建立的資料夾就必須"即刻"設定為公開(空資料夾), 然後才能開始放資料進去, 而那些資料才會顯示主機位置. 如上傳完資料後才設定為公開就不會有主機路徑.

    回覆刪除
  4. <4244324205987143393>(以上內容請勿刪除,從括號之後開始留言)感謝補充 ^^

    回覆刪除
  5. <2748883796408325837>(以上內容請勿刪除,從括號之後開始留言)要多謝您破解這樁迷案!

    回覆刪除
  6. <1484470266119498613>(以上內容請勿刪除,從括號之後開始留言)no biggie~~
    mark, 我遇到麻煩了, 新裝了 FB 留言框, 但覺得收不到留言通知。

    1. 麻煩幫我在本篇的 FB 留言框幫我測試一下, 單獨留言 & 回覆我的留言各一,tks~~

    2. 在你的 FB 留言框留言失敗, 我到你家用 G+ 另外留言了~

    回覆刪除
  7. <8411265580543784974>(以上內容請勿刪除,從括號之後開始留言)等臉書修復好再測試.
    原來的Blogger留言板使用內嵌式不是比較方便嗎?怎麼會想到使用popup?

    回覆刪除
  8. <5784341386658434422>(以上內容請勿刪除,從括號之後開始留言)謝謝,再麻煩了~
    另外,回覆跟引言功能,只有 popup 才做的到啊。

    回覆刪除

張貼留言注意事項:

◎ 勾選「通知我」可收到後續回覆的mail!
提問請附網址、詳細描述狀況,如提供的資訊不足,則無法回覆。
◎ 請在相關文章留言,與文章無關的主題請至「Blogger 中文論壇」。
◎ 若詢問 CSS 、非官方範本問題、或貴站為商業網站 ,請參考「本站諮詢頁面」→「1. 諮詢服務」
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 若發現留言不見了,通常是因為 "複製貼上" 的內容常被系統判定為垃圾留言,請不用擔心,我會定期將留言恢復。
◎ 本站「已關閉自刪留言功能」。