Maison > Questions et réponses > le corps du texte
J'ai créé un nouveau fichier de document sur Google Docs, inséré une image et (il n'y a pas d'option pour insérer une image liée, n'est-ce pas ?) j'ai dû lui attribuer une URL pour que l'on puisse cliquer sur l'image.
$docs_service = new Google_Service_Docs($client); $drive_service = new Google_Service_Drive($client); $document = new Google_Service_Docs_Document(array( 'title' => $file_name )); $document = $docs_service->documents->create($document); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'location' => array( 'index' => 1, ), 'text' => "n".$text ) )); $requests[] = new Google_Service_Docs_Request(array( 'insertInlineImage' => array( 'uri' => 'https://example.com/img.jpg', 'location' => array( 'index' => 1, ), 'objectSize' => array( 'height' => array( 'magnitude' => 675, 'unit' => 'PT', ), 'width' => array( 'magnitude' => 360, 'unit' => 'PT', ), ) ) )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $docs_service->documents->batchUpdate($document->getDocumentId(), $batchUpdateRequest); $doc = $docs_service->documents->get($document->getDocumentId(), ['fields' => 'body']);
Mais je ne trouve pas la bonne fonction API. Il existe une méthode setLinkUrl de la classe InlineImage, mais comment obtenir une instance d'InlineImage ?
Une autre façon consiste à parcourir le document
$doc = $docs_service->documents->get($document->getDocumentId(), ['fields' => 'body']); foreach ($doc->body->content as $content) { print_r($content); }
Mais le contenu imprimé ne contient aucune information utile.
P粉0837850142023-07-22 12:15:36
Dans le script que vous avez montré, un nouveau document est créé à l'aide de l'API Docs et l'image est placée dans le nouveau document créé. Dans ce cas, vous pouvez modifier le corps de la requête comme suit, à l'aide de UpdateTextStyleRequest.
$requests[] = new Google_Service_Docs_Request(array( 'insertInlineImage' => array( 'uri' => 'https://example.com/img.jpg', 'location' => array( 'index' => 1, ), 'objectSize' => array( 'height' => array( 'magnitude' => 675, 'unit' => 'PT', ), 'width' => array( 'magnitude' => 360, 'unit' => 'PT', ), ) ) ));
$requests = [ new Google_Service_Docs_Request(array( 'insertInlineImage' => array( 'uri' => 'https://example.com/img.jpg', 'location' => array( 'index' => 1, ), 'objectSize' => array( 'height' => array( 'magnitude' => 675, 'unit' => 'PT', ), 'width' => array( 'magnitude' => 360, 'unit' => 'PT', ), ) ), )), new Google_Service_Docs_Request(array( 'updateTextStyle' => array( 'range' => array( 'startIndex' => 1, 'endIndex' => 2, ), 'textStyle' => array( 'link' => array( 'url' => 'https://www.google.com', // Please set your URL. ), ), 'fields' => 'link', ), )), ];
Lors de l'utilisation de ce corps de requête modifié, le lien hypertexte https://www.google.com
sera défini vers l'image insérée dans Google Docs.
Par exemple, si vous souhaitez récupérer startIndex et endIndex à partir d'une image insérée dans le document, vous pouvez utiliser l'exemple de script suivant :
$doc = $docs_service->documents->get($document->getDocumentId(), ['fields' => 'body']); foreach ($doc->body->content as $content) { if (array_key_exists('paragraph', $content)) { foreach ($content->paragraph->elements as $element) { if (array_key_exists('inlineObjectElement', $element)) { $startIndex = $element->startIndex; $endIndex = $element->endIndex; print_r(array($startIndex, $endIndex)); } } } }