3

我正在创建一个 PHP 脚本,它将在 Google Drive 帐户中创建文件夹。创建文件夹后,我将使用权限与我的谷歌应用程序域的其他用户共享它。

我已经成功创建了这部分,现在我需要添加一个可以通过 UI 完成的功能,但我找不到通过 api 执行的方法:我想将文件夹添加到用户的我的文件部分(可能在子文件夹中)通过 UI 可以转到“与我共享的文件”部分,右键单击并选择“添加到我的文件”

我怎样才能以编程方式做到这一点?有办法吗?

编辑

我想在用户目录中以编程方式执行此操作

http://i.stack.imgur.com/II3Q6.png

目前,我可以在用户目录中创建文件和文件夹,只是我不知道如何添加从其他用户共享的文件夹

4

3 回答 3

2

我找到了我的问题的答案。我离开了这里,所以如果有人需要它;)

要添加用户 A 的共享文件夹,在用户 B“我的文件”中,您需要使用用户 B 访问驱动器 api,获取共享文件夹(它具有与用户 A 实例中相同的 id),并添加作为该文件夹的父级,根目录或用户 B 驱动器内的文件夹。

$about = $userBServiceInstance->about->get();
$userBRootFolderId = $about->getRootFolderId();

$newParent = new Google_Service_Drive_ParentReference();
$newParent->setId($userBRootFolderId);

$userBServiceInstance->parents->insert($folderId, $newParent);
于 2015-10-19T11:44:51.750 回答
0

它通过addParents使用 API V3 添加到文件/文件夹来完成drive.files.update

PATCH https://www.googleapis.com/drive/v3/files/FILE_ID?addParents=PARENT_ID&key={YOUR_API_KEY}
于 2018-01-30T06:21:27.513 回答
0

我不知道我是否正确理解了您的问题,但为了以编程方式在 Google Drive 的根目录中创建一个文件夹,您可能需要使用以下代码。在 Google Drive 中,文件夹是一种特殊的文件类型(application/vnd.google-apps.folder即),有关详细信息,请参阅其 API 文档

$client = new Google_Client();
// set various parameters, including name, key and secret

$service = new Google_Service_Drive($client);
$about = $service->about->get();
$rootID = $about->getRootFolderId();

createFolderIfNotExists($service, $rootID, "stackfolder");

// creates a folder in the given rootID or returns the ID if it already exists
function createFolderIfNotExists($service, $rootID, $foldername) {
    $search = "title='{$foldername}' AND '{$rootID}' in parents AND mimeType = 'application/vnd.google-apps.folder' AND trashed != true";
    $parameters = array("q" => $search);

    $files = $service->files->listFiles($parameters);
    if (!empty($files["items"])) {
        $folderID = $files["items"][0]->getId(); // the first element
    } else {
        // create a folder under root
        $file = new Google_Service_Drive_DriveFile();
        $file->setTitle($foldername);
        // To create new folder, we need to set the mime type
        $file->setMimeType('application/vnd.google-apps.folder');
        // set parent folder
        $parent = new Google_Service_Drive_ParentReference();
        $parent->setId($rootID);
        $file->setParents(array($parent));
        $folder = $service->files->insert($file);
        $folderID = $folder->getId();
    }
    return $folderID;
}
于 2015-10-15T06:55:17.730 回答