Quiero insertar más textos en Google Docs con múltiples contenidos de párrafo y también quiero diseñarlos. También seguí este enlace https://developers.google.com/docs/api/reference/rest/v1/documents/request pero no puedo lograrlo.
$requests [] = new Google_Service_Docs_Request( [ 'insertText' => [ 'text' => 'Sample1\n', 'location' => [ 'index' => 1 ] ] ], [ 'insertText' => [ 'text' => 'sample2\n', 'location' => [ 'index' => 9 ] ] ], [ 'updateParagraphStyle' => [ 'range' => [ 'startIndex' => 1, 'endIndex' => 8 ], 'paragraphStyle' => [ 'namedStyleType' => 'HEADING_1' ], 'fields' => 'namedStyleType' ] ], [ 'updateParagraphStyle' => [ 'range' => [ 'startIndex' => 9, 'endIndex' => 17 ], 'paragraphStyle' => [ 'namedStyleType' => 'NORMAL_TEXT' ], 'fields' => 'namedStyleType' ] ], [ 'updateTextStyle' => [ 'range' => [ 'startIndex' => 9, 'endIndex' => 16 ], 'textStyle' => [ 'link' => [ 'url' => 'https://www.google.com' ] ], 'fields' => 'link' ] ] ); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);Lo estoy haciendo de esta manera y obtengo este error.
PHP Fatal error: Uncaught Google\Service\Exception: { "error": { "code": 400, "message": "Invalid requests[0]: No request set.", "errors": [ { "message": "Invalid requests[0]: No request set.", "domain": "global", "reason": "badRequest" } ], "status": "INVALID_ARGUMENT" } }Puede alguien ayudarme con esto. Sería de gran ayuda y lo necesito en código PHP.
Sample1\n de 'text' => 'Sample1\n', se convierte en Sample1\\n . Pensé que esta podría ser la razón de su problema. En este caso, ¿qué tal la siguiente modificación usando PHP_EOL ?
PHP_EOL: el símbolo correcto de 'Fin de línea' para esta plataforma.
$requests = [ new Google_Service_Docs_Request([ 'insertText' => [ 'text' => 'Sample1' . PHP_EOL, // Modified 'location' => [ 'index' => 1 ] ] ]), new Google_Service_Docs_Request([ 'insertText' => [ 'text' => 'Sample2' . PHP_EOL, // Modified 'location' => [ 'index' => 9 // Modified ] ] ]) ];o bien, encierre el texto entre comillas dobles de la siguiente manera.
$requests = [ new Google_Service_Docs_Request([ 'insertText' => [ 'text' => "Sample1\n", // Modified 'location' => [ 'index' => 1 ] ] ]), new Google_Service_Docs_Request([ 'insertText' => [ 'text' => "Sample2\n", // Modified 'location' => [ 'index' => 9 // Modified ] ] ]) ];'Sample1' . PHP_EOL y "Sample1\n" se utilizan como Sample\n . Por esto, pensé que su objetivo se puede lograr.index de la segunda solicitud es 9 que ha utilizado en el primer script.Para especificar una comilla simple literal, escápela con una barra invertida (). Para especificar una barra invertida literal, duplíquela (\). Todas las demás instancias de barra invertida se tratarán como una barra invertida literal: esto significa que las otras secuencias de escape a las que podría estar acostumbrado, como \r o \n, se mostrarán literalmente como se especifica en lugar de tener un significado especial.
Si la cadena está entre comillas dobles ("), PHP interpretará las siguientes secuencias de escape para caracteres especiales:
Creo que el error se debe a la construcción de la solicitud por lotes. La matriz de solicitud debe contener una cantidad de instancias de Google_Service_Docs_Request .
Prueba a cambiar esto:
$requests [] = new Google_Service_Docs_Request( [ 'insertText' => [ 'text' => 'Sample1\n', 'location' => [ 'index' => 1 ] ] ], [ 'insertText' => [ 'text' => 'sample2\n', 'location' => [ 'index' => 9 ] ] ],A esto:
$requests = [ new Google_Service_Docs_Request([ 'insertText' => [ 'text' => 'Sample1\n', 'location' => [ 'index' => 1 ] ] ]), new Google_Service_Docs_Request([ 'insertText' => [ 'text' => 'sample2\n', 'location' => [ 'index' => 9 ] ]) ];Y después proceder de la siguiente manera:
$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(['requests' => $requests]); $result = $service->documents->batchUpdate($documentId, $batchUpdateRequest);