3

Google ドライブ アカウント内にフォルダを作成する PHP スクリプトを作成しています。フォルダが作成されたら、アクセス許可を使用して、Google Apps ドメインの他のユーザーと共有します。

この部分を正常に作成しました。UI を介して実行できる機能を追加する必要がありますが、API を介して実行する方法が見つかりません: ユーザーのマイ ファイル セクションにフォルダーを追加したいです。 (おそらくサブフォルダーにあります)UIを通じて、「共有されたファイル」セクションに移動し、右クリックして「ファイルに追加」を選択します

どうすればプログラムでそれを行うことができますか? 方法はありますか?

編集

ユーザーディレクトリでプログラムでこれを行いたい

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

現在、ユーザーディレクトリにファイルとフォルダーを作成できますが、他のユーザーから共有されているフォルダーを追加する方法がわかりません

4

3 に答える 3

2

私は自分の質問に対する答えを見つけました。私はここを離れたので、誰かがそれを必要とするなら;)

ユーザー A の共有フォルダーをユーザー B の「my files」に追加するには、ユーザー 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

あなたの質問を正しく理解できたかどうかわかりませんが、プログラムで Google ドライブのルートにフォルダを作成するには、次のコードを使用することをお勧めします。Google ドライブでは、フォルダは特別なファイル タイプ (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 に答える