Google Dokümanlar API, bir dokümana metin eklemenize veya metin silmenize olanak tanır. Metin taşıma işleminde, içeriğin get ile ayrıldığı her iki işlem de yer alır.
Bir dokümandaki sekme segmentlerinin (gövde, üstbilgi, altbilgi veya dipnot) herhangi birine metin ekleyebilir ya da metin silebilirsiniz. Daha fazla bilgi için Sekmelerle çalışma başlıklı makaleyi inceleyin.
Metin ekle
Bir dokümana metin eklemek için documents.batchUpdate yöntemini kullanın ve yük olarak metin ve konum içeren bir InsertTextRequest ekleyin.
Aşağıdaki kod örneğinde, bir belge gövdesindeki belirli dizin konumlarına bir dizi metin dizesinin nasıl eklenebileceği gösterilmektedir. Örnekte üç hedef ofset (25, 50 ve 75) kullanılıyor ve her konuma on karakterlik bir dize ekleniyor.
Java
List<Request> requests = new ArrayList<>(); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text1) .setLocation(new Location().setIndex(25).setTabId(<var>TAB_ID</var>)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text2) .setLocation(new Location().setIndex(50).setTabId(<var>TAB_ID</var>)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text3) .setLocation(new Location().setIndex(75).setTabId(<var>TAB_ID</var>)))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();
PHP
$requests = array(); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'text' => $text1, 'location' => array( 'index' => 25, 'tabId' => <var>TAB_ID</var>, ), ), )); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'text' => $text2, 'location' => array( 'index' => 50, 'tabId' => <var>TAB_ID</var>, ), ), )); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'text' => $text3, 'location' => array( 'index' => 75, 'tabId' => <var>TAB_ID</var>, ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($<var>DOCUMENT_ID</var>, $batchUpdateRequest);
Python
requests = [ { 'insertText': { 'location': { 'index': 25, 'tabId': <var>TAB_ID</var> }, 'text': text1 } }, { 'insertText': { 'location': { 'index': 50, 'tabId': <var>TAB_ID</var> }, 'text': text2 } }, { 'insertText': { 'location': { 'index': 75, 'tabId': <var>TAB_ID</var> }, 'text': text3 } }, ] result = service.documents().batchUpdate( documentId=<var>DOCUMENT_ID</var>, body={'requests': requests}).execute()
Her ekleme, daha yüksek numaralı tüm dizinleri eklenen metnin boyutu kadar artırır. Örnek, bu dizin değişikliklerinin sonucunu önceden hesaplar. Böylece sonraki eklemeler yeni ve düzeltilmiş ofsette gerçekleşir. Bu nedenle, 25, 50 ve 75 olan orijinal hedef ofsetlere eklemek için gerçek ekleme dizinleri şunlardır:
- İlk ekleme, 25. konumda 10 karakter ekler.
- İkinci ekleme, 50+10=60 konumuna 10 karakter ekler.
- Üçüncü ekleme, 75+10+10=95 konumuna 10 karakter ekler.
Metin silme
Bir belgeden metin silmek için önce silinecek metin aralığını tanımlayan bir Range oluşturun. Ardından documents.batchUpdate yöntemini kullanın ve DeleteContentRangeRequest ekleyin.
Aşağıdaki kod örneğinde, bir belgenin gövdesindeki 10. ve 24. dizinler arasındaki metnin nasıl silinebileceği gösterilmektedir.
Java
List<Request> requests = new ArrayList<>(); requests.add(new Request().setDeleteContentRange( new DeleteContentRangeRequest() .setRange(new Range() .setStartIndex(10) .setEndIndex(24) .setTabId(<var>TAB_ID</var>)) )); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();
PHP
$requests = array(); $requests[] = new Google_Service_Docs_Request(array( 'deleteContentRange' => array( 'range' => array( 'startIndex' => 10, 'endIndex' => 24, 'tabId' => <var>TAB_ID</var> ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate(<var>DOCUMENT_ID</var>, $batchUpdateRequest);
Python
requests = [ { 'deleteContentRange': { 'range': { 'startIndex': 10, 'endIndex': 24, 'tabId': <var>TAB_ID</var> } } }, ] result = service.documents().batchUpdate( documentId=<var>DOCUMENT_ID</var>, body={'requests': requests}).execute()
Metin silme işlemi de ekleme işleminde olduğu gibi, segmentte sonraki tüm metinlerin dizinlerini değiştirir. Yine, geriye doğru yazmak dizinleri kullanmanızı kolaylaştırabilir.
Metni taşıma
Metni taşımak için metni bir konumda silip başka bir yere eklersiniz. İçeriği sildiğinizde kopyasını almazsınız (pano gibi bir kavram yoktur). Bu nedenle, ekleme metni isteğinizde kullanabilmek için önce aralıktaki içeriği çıkarmanız gerekir.