Metin ekleme, silme ve taşıma

Google Dokümanlar API'sı bir dokümana metin eklemenize veya dokümandan metin silmenize olanak tanır. Metin taşıma işlemi, içeriğin get öncesinde her iki işlemi de içerir.

Bir dokümanın segmentlerinden (gövde, üstbilgi, altbilgi veya dipnot) herhangi birine metin ekleyebilir veya mevcut metinleri silebilirsiniz.

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 belgenin gövdesindeki belirtilen dizin konumlarına nasıl bir metin dizesi ekleyebileceğiniz gösterilmektedir. Örnekte üç hedef ofset (25, 50 ve 75) kullanılmış ve her konuma on karakterli bir dize eklenmiştir.

Java

        List<Request> requests = new ArrayList<>();
        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text1)
                .setLocation(new Location().setIndex(25))));

        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text2)
                .setLocation(new Location().setIndex(50))));

        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text3)
                .setLocation(new Location().setIndex(75))));

        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,
        ),
    ),
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
        ),
    ),
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
        ),
    ),
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));

$response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);

Python

    requests = [
         {
            'insertText': {
                'location': {
                    'index': 25,
                },
                'text': text1
            }
        },
                 {
            'insertText': {
                'location': {
                    'index': 50,
                },
                'text': text2
            }
        },
                 {
            'insertText': {
                'location': {
                    'index': 75,
                },
                'text': text3
            }
        },
    ]

    result = service.documents().batchUpdate(
        documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Her ekleme işlemi, yüksek numaralı dizinlerin tümünü eklenen metnin boyutuna göre artırır. Örnek, bu dizin değişikliklerinin sonucunu önceden hesaplar. Böylece sonraki eklemeler, düzeltilmiş yeni ofsette gerçekleşir. Bu nedenle, 25, 50 ve 75 olan orijinal hedef ofsetlerine eklemek için gerçek ekleme dizinleri şöyle olur:

  • İlk ekleme, ofset 25'te 10 karakter ekler.
  • İkinci ekleme, ofset 50+10=60 olarak 10 karakter ekler.
  • Üçüncü ekleme, 75+10+10=95 ofsetinde 10 karakter ekler.

Metin silme

Bir dokümandan metin silmek için önce silinecek metin aralığını tanımlayan bir Range oluşturun. Daha sonra documents.batchUpdate yöntemini kullanın ve bir DeleteContentRangeRequest ekleyin.

Aşağıdaki kod örneğinde, bir belgenin gövdesinde 10. dizin ile 24. dizin arasındaki metni nasıl silebileceğiniz gösterilmektedir.

Java

        List<Request> requests = new ArrayList<>();
        requests.add(new Request().setDeleteContentRange(
                new DeleteContentRangeRequest()
                        .setRange(new Range()
                                .setStartIndex(10)
                                .setEndIndex(24))
            ));

        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
        ),
    ),
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));

$response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);

Python

    requests = [
        {
            'deleteContentRange': {
                'range': {
                    'startIndex': 10,
                    'endIndex': 24,
                }

            }

        },
    ]
    result = service.documents().batchUpdate(
        documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Geriye yazarak konuları basitleştirin. Eklemelerde olduğu gibi, metnin silinmesi segmentte "aşağıda" yer alan tüm metnin dizinlerini değiştirir. Geriye doğru yazmak da dizinleri işlemenizi kolaylaştırabilir.

Metni taşı

Taşımak için metni bir konumdan silip başka bir yere eklersiniz. İçeriğin silinmesi size bir kopyasını sağlamaz (panoya eşdeğer bir kavram yoktur), bu nedenle metin ekleme isteğinizde kullanabilmeniz için önce aralığın içeriğini çıkarmanız gerekir.