为什么 Google_Service_Drive 个文件的属性只返回 null?
Why are the properties of Google_Service_Drive files only returning null?
我想列出与我的服务帐户共享的文件夹中的所有文件。我试图弄清楚哪些文件的 'parent' 属性设置为文件夹 ID 或文件夹名称。但是,我输出的所有对象几乎所有字段都显示 "NULL"。我搜索了 Google Drive API v3,但我什至找不到其中的 listFiles() 函数。此外,文档建议使用 Files.list 函数来输出文件列表,但是当我使用 Files.list 函数时,我得到一个错误,好像该方法不存在一样。所以我又开始使用 listFiles()...我的代码如下所示:
public function getTitlesAndIDs($folderID)
{
// $capabilities = new \Google_Service_Drive_DriveFileCapabilities();
// $capabilities->canListChildren = true;
$files = $this->driveService->files->listFiles();
var_dump($files);
}
尝试添加功能也只是 returns NULL。当我 运行 listFiles() 我得到这样的输出:
["files"]=>
array(100) {
[0]=>
object(Google_Service_Drive_DriveFile)#77 (65) {
["collection_key":protected]=>
string(6) "spaces"
["appProperties"]=>
NULL
["capabilitiesType":protected]=>
string(42) "Google_Service_Drive_DriveFileCapabilities"
["capabilitiesDataType":protected]=>
string(0) ""
["contentHintsType":protected]=>
string(42) "Google_Service_Drive_DriveFileContentHints"
["contentHintsDataType":protected]=>
string(0) ""
["createdTime"]=>
NULL
["description"]=>
NULL
["explicitlyTrashed"]=>
NULL
["fileExtension"]=>
NULL
["folderColorRgb"]=>
...
为什么所有值都返回为 NULL,我该如何解决这个问题以便我可以按父文件夹搜索?是否有 php 等同于 Files.list 函数?
提前致谢。
首先您需要确保有服务帐户可以访问的文件。一旦你这样做了,这应该能够列出文件。
$service = new Google_Service_Drive($client);
// Print the names and IDs for up to 10 files.
$optParams = array(
'pageSize' => 10,
'fields' => 'nextPageToken, files(id, name)'
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
print "No files found.\n";
} else {
print "Files:\n";
foreach ($results->getFiles() as $file) {
printf("%s (%s)\n", $file->getName(), $file->getId());
}
}
中窃取的代码
除了@DalmTo 所说的之外,还有一件重要的事情需要明确指出:您收到了几乎所有字段的 NULL
,因为您没有提供字段列表,'fields'
作为可选字段参数.
除了 Google Drive API V3 属性,例如 id, name, kind
和 description
,开发人员还可以通过 properties
自定义文件属性和 appProperties
.
https://developers.google.com/drive/api/v3/properties
Google 驱动器 properties
键/值对由您的应用程序控制和操作。
在整个 Google Drive V3 文档中,术语 "properties" 也指的是 元数据 。我发现这很混乱。 https://developers.google.com/drive/api/v3/reference/files
在 Google Drive V2 中,有大量关于如何使用 PHP 操作键/值 properties
的示例,但在 Google Drive V3 中 properties
API 发生了重大变化,PHP 代码示例非常稀少。
通过修改上面的示例代码,我能够检索我的自定义属性。
$service = new Google_Service_Drive($client);
// Print the names, IDs and properties for up to 10 files.
$optParams = array(
'pageSize' => 10,
'fields' => 'nextPageToken, files(id, name, properties)'
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
print "No files found.\n";
} else {
print "Files:\n";
foreach ($results->getFiles() as $file) {
printf("%s (%s)\n", "name: ".$file->getName(), "ID: ".$file->getId());
foreach ($file->getProperties() as $key => $value) {
printf("%s%s\n","-key: ".$key,", value: ".$value);
}
}
}
我想与那些登陆此页面寻找 PHP 在 [=44= 中操纵 properties
和 appProperties
示例的开发人员分享我对原始答案的扩展] 驱动 V3.
我想列出与我的服务帐户共享的文件夹中的所有文件。我试图弄清楚哪些文件的 'parent' 属性设置为文件夹 ID 或文件夹名称。但是,我输出的所有对象几乎所有字段都显示 "NULL"。我搜索了 Google Drive API v3,但我什至找不到其中的 listFiles() 函数。此外,文档建议使用 Files.list 函数来输出文件列表,但是当我使用 Files.list 函数时,我得到一个错误,好像该方法不存在一样。所以我又开始使用 listFiles()...我的代码如下所示:
public function getTitlesAndIDs($folderID)
{
// $capabilities = new \Google_Service_Drive_DriveFileCapabilities();
// $capabilities->canListChildren = true;
$files = $this->driveService->files->listFiles();
var_dump($files);
}
尝试添加功能也只是 returns NULL。当我 运行 listFiles() 我得到这样的输出:
["files"]=>
array(100) {
[0]=>
object(Google_Service_Drive_DriveFile)#77 (65) {
["collection_key":protected]=>
string(6) "spaces"
["appProperties"]=>
NULL
["capabilitiesType":protected]=>
string(42) "Google_Service_Drive_DriveFileCapabilities"
["capabilitiesDataType":protected]=>
string(0) ""
["contentHintsType":protected]=>
string(42) "Google_Service_Drive_DriveFileContentHints"
["contentHintsDataType":protected]=>
string(0) ""
["createdTime"]=>
NULL
["description"]=>
NULL
["explicitlyTrashed"]=>
NULL
["fileExtension"]=>
NULL
["folderColorRgb"]=>
...
为什么所有值都返回为 NULL,我该如何解决这个问题以便我可以按父文件夹搜索?是否有 php 等同于 Files.list 函数? 提前致谢。
首先您需要确保有服务帐户可以访问的文件。一旦你这样做了,这应该能够列出文件。
$service = new Google_Service_Drive($client);
// Print the names and IDs for up to 10 files.
$optParams = array(
'pageSize' => 10,
'fields' => 'nextPageToken, files(id, name)'
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
print "No files found.\n";
} else {
print "Files:\n";
foreach ($results->getFiles() as $file) {
printf("%s (%s)\n", $file->getName(), $file->getId());
}
}
中窃取的代码
除了@DalmTo 所说的之外,还有一件重要的事情需要明确指出:您收到了几乎所有字段的 NULL
,因为您没有提供字段列表,'fields'
作为可选字段参数.
除了 Google Drive API V3 属性,例如 id, name, kind
和 description
,开发人员还可以通过 properties
自定义文件属性和 appProperties
.
https://developers.google.com/drive/api/v3/properties
Google 驱动器 properties
键/值对由您的应用程序控制和操作。
在整个 Google Drive V3 文档中,术语 "properties" 也指的是 元数据 。我发现这很混乱。 https://developers.google.com/drive/api/v3/reference/files
在 Google Drive V2 中,有大量关于如何使用 PHP 操作键/值 properties
的示例,但在 Google Drive V3 中 properties
API 发生了重大变化,PHP 代码示例非常稀少。
通过修改上面的示例代码,我能够检索我的自定义属性。
$service = new Google_Service_Drive($client);
// Print the names, IDs and properties for up to 10 files.
$optParams = array(
'pageSize' => 10,
'fields' => 'nextPageToken, files(id, name, properties)'
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
print "No files found.\n";
} else {
print "Files:\n";
foreach ($results->getFiles() as $file) {
printf("%s (%s)\n", "name: ".$file->getName(), "ID: ".$file->getId());
foreach ($file->getProperties() as $key => $value) {
printf("%s%s\n","-key: ".$key,", value: ".$value);
}
}
}
我想与那些登陆此页面寻找 PHP 在 [=44= 中操纵 properties
和 appProperties
示例的开发人员分享我对原始答案的扩展] 驱动 V3.