Google Drive php API V3:无法使用西里尔字母

时间:2017-09-18 08:41:49

标签: php google-api google-drive-api google-api-python-client

9个月前,我写了一个小项目,其中一个功能是搜索google drive的root或inner文件夹中的特定文件夹并返回其id。文件夹名称可以是拉丁文或西里尔文。直到2017年7月或8月,一切都运行正常,但是当我试图搜索具有西里尔字母的文件夹并最近创建(较年轻的2个月)时,它开始返回空阵列两个月。如果我创建具有拉丁文名称的文件夹 - 一切正常。

这是我在驱动程序根目录中搜索的旧代码:

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

这不起作用。如果我创建名为“新文件夹”的文件夹,一切正常,无需更改。

但如果我将'name ='更改为'name contains'

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

一切都很完美。但是这段代码很危险 - 我希望,代码只会返回一个文件夹,但是如果在这个文件夹附近会创建名称为'Новаяпапка1','Новаяпапка2','Новаяпапка10'等的文件夹。

Google API V3文档说使用'name ='来搜索确切的名称,所以我很难过。

1 个答案:

答案 0 :(得分: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
}