補記:本文為 2023.04 的舊文,2024年已無法存取音檔。
好友江明勳老師問到有什麼快速的方法抓出 Google 雲端硬碟資料夾中的所有圖片檔案的網址清單 ?如果想直接利用網頁中的 Javascript ,應該瀏覽器的安全管制,是無法辦到,但是用 Python、PHP、Perl ...... 甚至 Google Apps Script ,就沒有什麼辦不到的了。
由於我們會有抓出圖片網址的需求,主要是想應用在 HTML5 FUN 題庫的製作,而 HTML5 烘焙機的「圖形化題庫編輯器」如果貼上試算表複製的資料,會自動解析並加上欄位符號,所以我利用 Google 試算表,並以 Google Apps Script 設計了自訂公式:
- getImages : 將解析出的圖片網址,以橫向的方式填入試算表儲存格。
- getImagesV : 將解析出的圖片網址,以縱向的方式填入試算表儲存格。
- getImage : 轉換單一圖片的網址。
getAudio : 將解析出的音檔網址,以橫向的方式填入試算表儲存格。(已無法存取音檔,2024年補記)- getImagesV : 將解析出的音檔網址,以縱向的方式填入試算表儲存格。
- getAll : 解析出圖片的網址、
mp3音檔的網址、mp4影片檔的網址,並將主檔名一樣者放在同一列中,同一列會依序在各欄中填入檔案的主檔名、圖檔網址、音檔網址、影片檔網址,如果沒有該檔的則保持空白;不同檔名的會放到下一列中。(2023.09.26新增)
[圖1] 試算表中加了自訂公式 getImages |
使用時,只要給 Google 雲端硬碟資料夾的公開分享網址,該資料夾中的所有公開分享的圖片網址或是音檔網址,就會被解析出來,並填入試算表的儲存格中。
[圖2] 使用 getImages 的公式 |
[圖3] 以 getImages 公式解析出圖片的網址 |
工具網址
本文中這個帶有 getImages 自訂公式的 Google 試算表網址如下:
開啟以後,記得要先由上方主選單「檔案」的「建立副本」,先建立好自己的副本才能使用;以後如果要更新為最新版,也是同樣的程式。
(註: 已無法存取音檔,2024年補記)
示範影片
底下這部影片示範如何利用帶有 getImages 自訂公式的 Google 試算表,解析出已公開分享的雲端硬碟資料夾網址中的所有圖片網址;並製作成 HTML5 FUN 的造句靈感產生器。
遇到 REF! 錯誤的解決方法
底下的影片說明如果出現 REF! 時的解決方法。
Q & A
- Q:填入公式以後,只出現了「=REF!」及「陣列結果並未展開,否則會覆蓋 D3 內的資料。」的錯誤訊息,要如何排除?
A:使用 getImages、getImagesV、getAudio 及 getAudioV 時,會將多個結果往右或是往下填入儲存格,如果目標區原來就有資料,就會無法填入而出現錯誤訊息。所以只要將那些「障礙物」先刪除,就可以順利使用本文中的自訂函數了。(請參考前面的影片) - Q:圖片的解析度最大只能到 640x480,如何提高解析度?
A:圖片網址中的「sz=w640-h480」,將數字改為自己想要的大小即可。
相關連結
更新記錄
- 2023.09.26 新增 getAll 。
- 2023.04.23 改從 JSON 資料中擷取檔案資訊,可以正確地在網址中記錄原始檔名。圖片的網址由「uc?id=」改用「thumbnail?sz=w640-h480&id=」,這樣可以利用「sz」的參數來設定圖片的最大寬度和最大的高度,自動將解析度太高的圖片降低大小,節省資源及載入的時間。
- 2023.04.18 getImage 及 getAudio 加入檢查 mime type 的程序,檔案類型不對會出現錯誤訊息提醒。
- 2023.04.17 加強錯誤訊息的處理;增加 getImage 可轉換單一圖檔的網址;增加 getAudio、getAudioV 可擷取資料夾中的音檔網址,也可轉換單一音檔的網址。
- 2023.04.16 初稿。
沒有留言:
張貼留言