1

10個月前一個我寫了一個小的項目和它的一個特點是,以搜索在谷歌驅動器的根或內部文件夾中的特定文件夾,並返回其ID。文件夾名稱可以是拉丁文或西里爾文。直到七月或2017年8月,一切運行良好,但兩個月以來它開始返回時,我試圖尋找用西裏爾字母名稱的文件夾和最近創建(年齡2個月)空數組。如果我用拉丁文名稱創建文件夾 - 一切正常。谷歌驅動的PHP API V3:不能使用西里爾名稱搜索文件夾

這是我在驅動器的根目錄搜索舊代碼:

$driveService->files->listFiles([ 
       'q' => "mimeType='application/vnd.google-apps.folder' and 'root' in parents and name = 'Новая Папка' and trashed = false" 
      ]); 

這是行不通的。如果我創建一個名爲「新建文件夾」的文件夾,一切都可以正常工作,無需更改

但是,如果我改變 '名稱=' 到 '名稱中包含'

$driveService->files->listFiles([ 
       'q' => "mimeType='application/vnd.google-apps.folder' and 'root' in parents and name contains 'Новая Папка' and trashed = false" 
      ]); 

一切完美的作品。但是這個代碼是危險的 - 我想,該代碼將返回只有一個文件夾,但如果此文件夾附近將創建與名稱的文件夾「Новаяпапка1」,「Новаяпапка2」,「Новаяпапка10」等。

谷歌API V3文檔說,使用「NAME =」搜索確切名稱,所以我難倒。

+0

使用Android版雲端硬盤SDK時遇到同樣的問題今天。目前,我們正在討論使用包含過濾器,並進一步事後結果進行過濾。恕我直言,這應該由谷歌修復。 –

回答

0

事實證明這是一個已知bug in the Google Drive APIs documented here

對於現在的解決方法是使用含有過濾器和手動查找正確的結果之後是這樣的:

getFileByName(name) { 
    files = GoogleDriveAPI.searchFiles('title contains "%name"') 
    for(file in files) { 
    if(file.getName() === name) 
     return file 
    } 
    return null 
} 
相關問題