C# 學習筆記(三): Google Drive API 串接(Google Drive API 串接篇)

Tom
appxtech
7 min readMay 22, 2024

--

嗨嗨,今天這篇要記錄的是 C# & Google Drive API 的串接,但只會實作幾個基本的功能,例如新增、搜尋、上傳、下載、移動、刪除等等的動作,會搭配官方文件一起說明,有興趣的其他功能各位就再自己研究了喔。

Google Drive API

第二篇有提到,取得使用者的 tokens 後需要把它轉成 UserCredential,
現在要正式操作 Google Drive 提供的 API 時,我們需要把這個代表使用者的 Credential 再轉成 DriveService 來提供操作的函式呼叫。

UserCredential 轉成 DriveService

接下來正式開始串接 Google Drive API

列出檔案清單

這是基本的 List Request 用法。

ListRequest 單純像上面這樣寫並不會一次列出全部的檔案,預設一次最多回傳 100 個資料,若是想要取得全部的檔案,就要用分頁的方式不斷的去取,下方是範例

檔案條件搜尋

Google Drive API 搜尋功能要用到特別的欄位 “Q”,詳細說明請看上方文件。

“Q” 欄位的邏輯為 "query_term" "operator" "values"

query_term 、 operator 清單文件連結 : 文件連結

https://developers.google.com/drive/api/guides/search-files?hl=zh-tw#examples

需注意不同的欄位能使用的 operator 都不同,使用上要好好查詢文件。

以 ListRequest 為例 ,這樣就能在列清單時一起帶入條件過濾了。

listRequest.Q = "name contains '123'";

取得檔案資訊

這個 function 透過 file id 來從雲端中取得特定檔案的資訊,注意這邊帶了一個參數 “fileid”,或許各位在使用上面列出檔案清單的 function 時有發現很多檔案的欄位都是 null,這是因為Google Drive 預設就不回回傳這些欄位的資訊,若有需求取得特定欄位的值,就需要帶這個 fields 參數,讓雲端查詢詞帶著相關的欄位回傳。

使用方法把欄位名稱用字串組起來帶進去即可。

Google drive file 有非常多的屬性,詳細的欄位介紹都在下面的這份官方文件裡面。

建立資料夾

實作建立雲端檔案前,需要先看一下下方的文件,裡面列出了 Google 雲端上特有檔案類別的 MIME 類型,在建立檔案時會需要將對應的 MIME Type 字串填入。

  • 建立資料夾
    parentIds 需要填入其他資料夾的 Id,若同時填很多個,則每個資料夾下面都會建立一個新的資料夾。

移動檔案

移動檔案就單純多了,先用找到原本的父資料夾 Id,在 UpdateRequest 中分別填入 “AddParentId” & “RemoveParents” 屬性,執行後就完成了檔案移動。

移動檔案

檔案移到垃圾桶

要將檔案移動到垃圾桶只需要把 “Trashed” 屬性修改為 true 即可。檔案被移到垃圾桶後30天才會被刪除,30天內都可以被復原。

清空垃圾桶

刪除檔案

刪除檔案被執行之後,檔案會直接完全被刪除,不會被移動到垃圾桶中。

上傳檔案 — 文件連結

  • UploadFileRequest.cs

完成後使用 Swagger 上傳檔案測試,folder Id 的取得可以使用 API 建立新的資料夾後回傳的 ID, 或使用 Search 的功能找到現有資料夾的 ID 填入即可。

過幾秒鐘就可以在雲端資料夾中看到剛剛上傳的檔案了。

Google Drive API 串接的內容就到這邊結束啦,因為內容很多沒辦法所有細節都帶到,也沒有畫面來配合需求開發規劃 api 要怎麼開,所以整個系列都採用介紹基本作法的邏輯來寫,希望讀者看到一半就能有感覺,快速地上手,剩下有其他的需求能在文件中找到答案,Google Drive 的文件寫的非常清楚,相信各位都能順利完成,謝謝大家。

--

--

Tom
appxtech
Writer for

Major in Computer Science, Web Backend Engineer