Metin ekleme, silme ve taşıma

Google Dokümanlar API'si, bir dokümana metin eklemenize veya dokümandaki metinleri silmenize olanak tanır. Metin taşıma, içeriğin get ile ayrıldığı her iki işlemi de içerir.

Bir dokümandaki sekme segmentlerinin herhangi birine (gövde, başlık, altbilgi veya dipnot) 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. Örnekte, bu dizin değişikliklerinin sonucu önceden hesaplanır. Böylece sonraki eklemeler yeni ve düzeltilmiş uzaklıkta gerçekleşir. Bu nedenle, 25, 50 ve 75 olan orijinal hedef ofsetlerine eklemek için gerçek ekleme dizinleri şunlardır:

  • İlk ekleme, 25. karakterden sonra 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. 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(<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()

Ekleme işleminde olduğu gibi, metin silme işlemi de segmentte sonraki tüm metinlerin dizinlerini değiştirir. Yine, geriye doğru yazmak dizinleri işlemenizi kolaylaştırabilir.

Metni taşıma

Metni taşımak için metni bir konumda silip başka bir yere eklersiniz. İçeriği silmek, içeriğin bir kopyasını almanızı sağlamaz (panoya eşdeğer bir kavram yoktur). Bu nedenle, ekleme metni isteğinizde kullanabilmek için önce aralığın içeriğini çıkarmanız gerekir.