I am trying to create a folder and then pass the ID
of that folder to new file I'm creating as parent
.
I am having two problem there.
1 - It creates two files. One inside root folder and another in newly created folder.
2 - It does not return the webViewLink
even if the file/folder is publicly share and available to everyone.
Here's the code i'm using:
function createPublicFolder($service, $folderName) {
$file = new Google_DriveFile();
$file->setTitle($folderName);
$file->setMimeType('application/vnd.google-apps.folder');
$createdFile = $service->files->insert($file, array(
'mimeType' => 'application/vnd.google-apps.folder',
));
$permission = new Google_Permission();
$permission->setValue('');
$permission->setType('anyone');
$permission->setRole('reader');
$service->permissions->insert(
$createdFile['id'], $permission);
return $createdFile;
}
function insertFileIntoFolder($service, $folderId, $fileId) {
$newParent = new Google_ParentReference();
$newParent->setId($folderId);
try {
return $service->parents->insert($fileId, $newParent);
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
return NULL;
}
$mainFolder = createPublicFolder($service,'New Folder');
echo isset($mainFolder['webViewLink']) ? $mainFolder['webViewLink'] : 'Not found.';
$file = new Google_DriveFile();
$file->setTitle('My document');
$file->setDescription('A test document');
$file->setMimeType('text/plain');
$data = file_get_contents('file.txt');
$createdFile = $service->files->insert($file, array(
'data' => $data,
'mimeType' => 'text/plain',
));
insertFileIntoFolder($service,$mainfolder['main_folder'],$createdFile['id']);
echo isset($createdFile['webViewLink']) ? $createdFile['webViewLink'] : 'Not found.';