使用Google Drive API将文件夹添加到文件夹

时间:2018-10-04 16:23:13

标签: google-drive-api

以下脚本使用以下命令在父文件夹中创建文件夹 “谷歌驱动器API”。它工作完美,但是过了一会儿(大约20个文件夹)后,它不再工作了。 没有错误消息,只是没有在父文件夹中创建更多文件夹。 它去了别的地方!

要启用该功能,必须创建一个“服务帐户”,并在“个人google帐户”和“服务帐户”之间共享父文件夹

有人可以提供帮助吗?

php function send_google_drive($id,$fileno,$filename1,$filename2){
        global $wpdb;
        require(ABSPATH.'/wp-content/themes/enemat/googledrives/vendor/autoload.php');
        $client = getClient();
        $service = new Google_Service_Drive($client);
        if(!empty($filename1)){ 
            $results = $service->files->listFiles();
            foreach ($results->getFiles() as $item) {
                if ($item['name'] == 'ENEMAT CRM FILES') {
                    $folderId = $item['id'];
                    break;
                }
            }
            $parentid = $folderId;
            $childid = "";
            foreach ($results->getFiles() as $item) {
                if ($item['name'] == $fileno) {
                    $childid = $item['id'];
                    break;
                }
            }
            if(empty($childid)){
                $fileMetadata = new Google_Service_Drive_DriveFile(array(
                                    'name' => $fileno,
                                    'parents'=>array($parentid),
                                    'mimeType' => 'application/vnd.google-apps.folder'));
                                    $file = $service->files->create($fileMetadata, array(
                                    'fields' => 'id'));
                 $folderId = $file->id;
             }else{
                $folderId = $childid;
             }
                $newPermission = new Google_Service_Drive_Permission();
                $newPermission->setType('anyone');
                $newPermission->setRole('reader');
                $service->permissions->create($folderId, $newPermission);

                $fileMetadata = new Google_Service_Drive_DriveFile(array(
                            'name' => array(basename($filename1)),
                            'parents' => array($folderId)
                        ));
                        $content = file_get_contents($filename1);
                        $files = $service->files->create($fileMetadata, array(
                                'data' => $content,
                                'uploadType' => 'resumable',
                                'fields' => 'id')); 
                $fileids = $files->id; 
                $docusignorgs = "https://drive.google.com/open?id=".$fileids."";
                $folderslink = "https://drive.google.com/drive/folders/".$folderId."";
                @unlink(ABSPATH."wp-content/themes/enemat/pdfs/".basename($filename1));
                $newPermission = new Google_Service_Drive_Permission();
                $newPermission->setType('anyone');
                $newPermission->setRole('reader');
                $service->permissions->create($fileids, $newPermission);

        }

        if(!empty($filename2)){ 
            $results = $service->files->listFiles();
            foreach ($results->getFiles() as $item) {
                if ($item['name'] == '46 - CONTRAT PARTENARIAT') {
                    $folderId = $item['id'];
                    break;
                }
            }

                $fileMetadata = new Google_Service_Drive_DriveFile(array(
                            'name' => array(basename($filename2)),
                            'parents' => array($folderId)
                        ));
                        $content = file_get_contents($filename2);
                        $files = $service->files->create($fileMetadata, array(
                                'data' => $content,
                                'uploadType' => 'resumable',
                                'fields' => 'id')); 
                $fileids1 = $files->id; 
                $contractdrivelink = "https://drive.google.com/open?id=".$fileids1."";
                $newPermission = new Google_Service_Drive_Permission();
                $newPermission->setType('anyone');
                $newPermission->setRole('reader');
                $service->permissions->create($fileids1, $newPermission);


        }

    }

1 个答案:

答案 0 :(得分:0)

没有错误消息的原因是因为您的代码没有错误处理!如果GDrive无法执行某些操作,则会返回错误代码和消息以说明原因。您的代码应该捕获该错误并显示出来。

我的猜测是您达到了速率限制。若要查看是否是原因,请在每次创建文件夹之间添加2秒的延迟。如果没有正常运行,则说明问题在于速率限制。