setAuthConfig('credentials.json'); $client->addScope([ Google_Service_Drive::DRIVE, 'https://www.googleapis.com/auth/documents' ]); $client->setRedirectUri('https://ms1crmdev.progiweb.net/t.php'); $client->setAccessType('offline'); $client->setPrompt('select_account consent'); // Authentification OAuth if (isset($_GET['code'])) { $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); if (isset($token['error'])) { echo "Erreur Google: " . htmlspecialchars($token['error_description'] ?? $token['error']); exit; } $_SESSION['access_token'] = $token; header('Location: ' . filter_var($client->getRedirectUri(), FILTER_SANITIZE_URL)); exit; } if (isset($_SESSION['access_token']) && is_array($_SESSION['access_token']) && isset($_SESSION['access_token']['access_token']) ) { $client->setAccessToken($_SESSION['access_token']); } else { $authUrl = $client->createAuthUrl(); header('Location: ' . filter_var($authUrl, FILTER_SANITIZE_URL)); exit; } if ($client->isAccessTokenExpired()) { unset($_SESSION['access_token']); $authUrl = $client->createAuthUrl(); header('Location: ' . filter_var($authUrl, FILTER_SANITIZE_URL)); exit; } return $client; } // ========== TEST ========== // 1. La première fois, laisse $docIdTest = ""; pour créer le doc et afficher son ID // 2. Ensuite, copie cet ID ici, dans $docIdTest, pour mettre à jour ce doc existant uniquement $docIdTest = "106klQ1hXpQkq5VJwmWFQ74kvx6bg1KX1XZtS9Dv3s34"; // <-- Colle ici l'ID après la première création pour la mise à jour if (isset($_POST['create_shortcut'])) { $client = getClient(); $driveService = new Google_Service_Drive($client); $folderId = '1BJPxQ2XPWqBRYxINgI-9TKJ_iPz7Dltb'; $titre = "Raccourci infos course"; $description= "zz2Consultez les résultats de l’événement. Pour toute question, contactez notre équipe."; $lienTexte = "Lien vers les résultats du 24h Tremblant"; $lienURL = "https://ms1timing.com/index.php?code=results&id=631"; $contactTel = "Téléphone : 1-855-999-5555"; $texteDoc = $titre . "\n\n" . $description . "\n\n" . $lienTexte . "\n\n" . $contactTel; $titreLen = strlen($titre); $descLen = strlen($description); $lienLen = strlen($lienTexte); $lienStart = $titreLen + 2 + $descLen + 2; $lienEnd = $lienStart + $lienLen; $docsService = new Google_Service_Docs($client); if (empty($docIdTest)) { // Création du doc la première fois $fileMetadata = new Google_Service_Drive_DriveFile([ 'name' => $titre, 'mimeType' => 'application/vnd.google-apps.document', 'parents' => [$folderId], ]); $file = $driveService->files->create($fileMetadata, [ 'supportsAllDrives' => true, ]); $docId = $file->id; // Affiche l'ID à stocker pour la prochaine fois echo "DOCUMENT CRÉÉ :
"; echo "Colle cet ID dans \$docIdTest pour les prochaines mises à jour :
"; echo "" . htmlspecialchars($docId) . "

"; // Continue la création et remplissage du doc } else { $docId = $docIdTest; } // Insère ou remplace le contenu try { // Tente d'effacer tout le contenu existant (si le doc existait déjà) $doc = $docsService->documents->get($docId); $contentLength = 0; if (isset($doc->body->content) && is_array($doc->body->content)) { foreach ($doc->body->content as $el) { if (isset($el->endIndex)) { $contentLength = max($contentLength, $el->endIndex); } } } $requests = []; // On efface le contenu SEULEMENT s'il y a quelque chose à effacer (>2) if ($contentLength > 2) { $requests[] = [ 'deleteContentRange' => [ 'range' => [ 'startIndex' => 1, 'endIndex' => $contentLength - 1 ] ] ]; } $requests[] = [ 'insertText' => [ 'location' => ['index' => 1], 'text' => $texteDoc ] ]; $requests[] = [ 'updateTextStyle' => [ 'range' => [ 'startIndex' => $lienStart, 'endIndex' => $lienEnd ], 'textStyle' => [ 'link' => ['url' => $lienURL] ], 'fields' => 'link' ] ]; $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest([ 'requests' => $requests ]); $docsService->documents->batchUpdate($docId, $batchUpdateRequest); // Affiche le lien du Google Doc modifié ou créé $docUrl = 'https://docs.google.com/document/d/' . $docId . '/edit'; echo "Raccourci Google Doc créé ou mis à jour !
"; echo "Ouvrir le raccourci dans Google Drive"; exit; } catch (Exception $e) { echo "Erreur lors de la mise à jour du document : " . htmlspecialchars($e->getMessage()); exit; } } ?>