update
This commit is contained in:
161
t.php
Normal file
161
t.php
Normal file
@ -0,0 +1,161 @@
|
||||
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
session_start();
|
||||
|
||||
function getClient()
|
||||
{
|
||||
$client = new Google_Client();
|
||||
$client->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ÉÉ :<br>";
|
||||
echo "Colle cet ID dans \$docIdTest pour les prochaines mises à jour :<br>";
|
||||
echo "<b>" . htmlspecialchars($docId) . "</b><br><br>";
|
||||
|
||||
// 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 !<br>";
|
||||
echo "<a href='$docUrl' target='_blank'>Ouvrir le raccourci dans Google Drive</a>";
|
||||
exit;
|
||||
} catch (Exception $e) {
|
||||
echo "Erreur lors de la mise à jour du document : " . htmlspecialchars($e->getMessage());
|
||||
exit;
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!-- HTML du bouton -->
|
||||
<form method="POST">
|
||||
<button type="submit" name="create_shortcut">Créer le raccourci Google Drive</button>
|
||||
</form>
|
||||
Reference in New Issue
Block a user