Google Dokümanlar API, bir dokümana metin eklemenize veya silmenize olanak tanır. Metin taşıma işlemi, içeriğin get
ile başlamasından sonra her iki işlemi de içerir.
Doküman sekmesinin herhangi bir bölümüne (gövde, üstbilgi, altbilgi veya dipnot) metin ekleyebilir veya metin silebilirsiniz.
Metin ekle
Bir dokümana metin eklemek için documents.batchUpdate
yöntemini kullanın ve metin ile konumu yükü olarak içeren bir InsertTextRequest
ekleyin.
Aşağıdaki kod örneğinde, bir belgenin gövdesinde belirtilen dizin konumlarına nasıl bir dizi metin dizesi ekleyeceğiniz gösterilmektedir. Örnekte üç hedef ofseti (25, 50 ve 75) kullanılmakta ve her konuma on karakterlik bir dize eklenmektedir.
Java
List<Request> requests = new ArrayList<>(); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text1) .setLocation(new Location().setIndex(25).setTabId(TAB_ID)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text2) .setLocation(new Location().setIndex(50).setTabId(TAB_ID)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text3) .setLocation(new Location().setIndex(75).setTabId(TAB_ID)))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(DOCUMENT_ID, body).execute();
PHP
$requests = array(); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'text' => $text1, 'location' => array( 'index' => 25, 'tabId' => TAB_ID, ), ), 'insertText' => array( 'text' => $text2, 'location' => array( 'index' => 50, 'tabId' => TAB_ID, ), ), 'insertText' => array( 'text' => $text3, 'location' => array( 'index' => 75, 'tabId' => TAB_ID, ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);
Python
requests = [ { 'insertText': { 'location': { 'index': 25, 'tabId': TAB_ID }, 'text': text1 } }, { 'insertText': { 'location': { 'index': 50, 'tabId': TAB_ID }, 'text': text2 } }, { 'insertText': { 'location': { 'index': 75, 'tabId': TAB_ID }, 'text': text3 } }, ] result = service.documents().batchUpdate( documentId=DOCUMENT_ID, body={'requests': requests}).execute()
Her ekleme, daha yüksek numaralı tüm dizinleri eklenen metnin boyutuna göre artırır. Örnekte, sonraki eklemelerin yeni ve düzeltilmiş ofsette gerçekleşmesi için bu dizin değişikliklerinin sonucu önceden hesaplanır. Bu nedenle, 25, 50 ve 75 olan orijinal hedef ofsetlerinde ekleme yapmak için gerçek ekleme dizinleri şunlardır:
- İlk ekleme, 25 ofsetinde 10 karakter ekler.
- İkinci ekleme, 50+10=60 ofsetinde 10 karakter ekler.
- Üçüncü ekleme, 75+10+10=95 ofsetinde 10 karakter ekler.
Metin silme
Bir belgedeki metni silmek için önce silinecek metin aralığını tanımlayan bir Range
oluşturun. Ardından documents.batchUpdate
yöntemini kullanın ve bir DeleteContentRangeRequest
ekleyin.
Aşağıdaki kod örneğinde, bir dokümanın gövdesinde 10. dizin ile 24. dizin 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(TAB_ID)) )); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(DOCUMENT_ID, body).execute();
PHP
$requests = array(); $requests[] = new Google_Service_Docs_Request(array( 'deleteContentRange' => array( 'range' => array( 'startIndex' => 10, 'endIndex' => 24, 'tabId' => TAB_ID ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);
Python
requests = [ { 'deleteContentRange': { 'range': { 'startIndex': 10, 'endIndex': 24, 'tabId': TAB_ID } } }, ] result = service.documents().batchUpdate( documentId=DOCUMENT_ID, body={'requests': requests}).execute()
Konuları tersten yazarak basitleştirin. Metin eklemelerde olduğu gibi, metin silme işlemi de segmentteki "altındaki" tüm metinlerin dizelerini değiştirir. Yine de geriye doğru yazma, dizinleri işlemenizi basitleştirebilir.
Metni taşıma
Metni taşımak için bir konumda silip başka bir yere eklemeniz gerekir. İçerik silindiğinde kopyası size verilmez (ayrıntı panosuna eşdeğer bir kavram yoktur). Bu nedenle, metin ekleme isteğinizde kullanabilmek için önce aralığın içeriğini ayıklamanız gerekir.