Metin ekleme, silme ve taşıma

Google Dokümanlar API'sı bir dokümana metin eklemenize veya mevcut metinleri silmenize olanak sağlar. Metin taşıma, öncesinde içeriğin get ifadesinden sonra her iki işlemi de kapsar.

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

Metin ekle

Bir belgeye 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 dokümanın gövdesindeki belirtilen dizin konumlarına bir dizi metin dizesinin nasıl ekleyebileceğiniz gösterilmektedir. Örnekte üç hedef ofset (25, 50 ve 75) kullanılmış ve her bir konuma on karakterlik 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, daha yüksek numaralı dizinlerin tümünü, eklenen metnin boyutuna göre artırır. Örnekte, sonraki eklemelerin yeni, düzeltilmiş ofsette gerçekleşmesi için bu dizin değişikliklerinin sonucunu önceden hesaplar. Bu nedenle, 25, 50 ve 75 orijinal hedef ofsetlerine eklenmek için gerçek ekleme dizinleri şunlardır:

  • İlk ekleme, 25 uzaklık noktasına 10 karakter ekler.
  • İkinci ekleme, 50+10=60 uzaklığında 10 karakter ekler.
  • Üçüncü ekleme, 75+10+10=95 ofsette 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 dizin 10 ile dizin 24 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 doğru yazarak konuları basitleştirin. Eklemelerde olduğu gibi, metin silindiğinde segmentin "altında" bulunan tüm metinlerin dizinleri değişir. Yine geriye doğru yazmak, dizinleri işlemenizi basitleştirebilir.

Metni taşı

Taşımak istediğiniz metni bir konumdan silip başka bir yere eklersiniz. İçeriği sildiğinizde, bunun size bir kopyasını sağlamaz (pano gibi bir kavram yoktur). Bu nedenle, metin ekleme isteğinizde kullanabilmeniz için önce aralığın içeriğini çıkarmanız gerekir.