Google drive api将共享文件夹添加到我的文件中

时间:2015-10-15 06:16:14

标签: php google-drive-api shared-file

我正在创建一个PHP脚本,该脚本将在Google云端硬盘帐户中创建文件夹。创建文件夹后,我将使用权限与我的google apps域的其他用户共享该文件夹。

我已成功创建此部分,现在我需要添加一个可以通过UI完成的功能,但我无法通过api找到一种方法: 我想将文件夹添加到用户的my files部分(可能在子文件夹中) 用户界面可以完成与我共享的"文件"部分,右键单击并选择"添加到我的文件"

我如何以编程方式执行此操作?有办法吗?

修改

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

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

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

3 个答案:

答案 0 :(得分:2)

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

要在用户B“我的文件”中添加用户A的共享文件夹,您需要使用用户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);

答案 1 :(得分:0)

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

$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;
}

答案 2 :(得分:0)

通过将addParents添加到文件/文件夹,使用API​​ V3 drive.files.update

来完成
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID?addParents=PARENT_ID&key={YOUR_API_KEY}