добавить папку в папку с помощью Google Drive API - PullRequest
0 голосов
/ 04 октября 2018

Сценарий ниже создает папки в родительской папке, используя "Google Drive 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 голосов
/ 05 октября 2018

Причина отсутствия сообщения об ошибке в том, что в вашем коде нет обработки ошибок!Если GDrive не может что-то сделать, он возвращает код ошибки и сообщение, объясняющее почему.Ваш код должен перехватить эту ошибку и отобразить ее.

Я предполагаю, что вы достигли ограничения скорости.Чтобы увидеть, является ли это причиной или нет, добавьте 2-секундную задержку между каждым созданием папки.Если он не работает правильно, вы знаете, что ограничение скорости - ваша проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...